Linux Commands and Resources

Commands

chmod

Change the permissions of files or directories. For example, changing permissions on a ssh key file for the current user.

chmod 400 ~/.ssh/id_rsa

If you’re not logged in as root, use sudo when permissions denied. more info. Use this to help determine the octal value.

+x is used to make a file executable.

chmod +x myshellscript.sh

chown

Change owner and group.

# change owner to gilfoyle
chown gilfoyle myshellscript.sh

# change owner and group to gilfoyle
chown gilfoyle:gilfoyle myshellscript.sh

find

# -iname for case-insensitive
find / -iname "*string*"

# . for current dir and sub dirs
find . -iname "*string*"

# output to "less" filter
find / -iname "*string*" | less

# use -type l for symlinks
find . -type l -ls

This example will use a wildcard search for all files that contain “krita” and move them to a temp directory for archival or deletion.

# find and exec mv command
find / -iname '*krita*' -exec mv {} /home/gilfoyle/temp/ \;

Enter man find for the manual.

ln

Use the ln -s command to create a soft link (symbolic link). The syntax is the same for both file and directory symlinks.

ln -s /path/to/file /path/to/symlink

ln -s /path/to/dir /path/to/symlink

Create a soft link named myfile.sh in the current directory to a file named myfile.sh in the /home/gilfoyle/source directory. e.g.,

ln -s /home/gilfoyle/source/myfile.sh myfile.sh

Verify the link with ls -l myfile.sh. The output should contain:

myfile.sh -> /home/gilfoyle/source/myfile.sh

The same syntax applies when creating directory of folder symlinks. Simply replace the file path with a folder path.

mkdir

Besides making single directories, create directory structures using the -p flag.

For example, create example.com with nested public_html directory.

mkdir -p /var/www/example.com/public_html

In this example, create a src folder with multiple nested folders using curly braces. e.g., js and css nested directories.

mkdir -p src/{js,css}

scp

Copy files and folders over ssh. For example, download home directory for user gilfoyle from machine into the current directory.

scp -r gilfoyle@0.0.0.0:/home/gilfoyle .

Upload folder and its files recursively. For example, with the root account, upload extracted Drupal devel module to /var/www/modules using port 8022.

scp -P 8022 -r devel root@0.0.0.0:/var/www/modules/devel

Download folder and its files recursively. For example, with the root account, download the devel module into the devel folder within the current directory using port 8022.

scp -P 8022 -r root@0.0.0.0:/var/www/modules/devel devel

ssh server

Install openssh server

apt-get install openssh-server

Unlocking the root account

usermod root -p password

# enter new password to unlock root
sudo passwd root

Check status

service ssh status

Configure openssh server

Using Nano

nano /etc/ssh/sshd_config

Allow root password login

# change
PermitRootLogin prohibit-password

# to
PermitRootLogin yes

Disallow root password login

# change
PermitRootLogin yes

# to
PermitRootLogin prohibit-password

Restart the service for any config changes to take affect

service ssh restart

stat

➜  stat config
  File: config
  Size: 292             Blocks: 0          IO Block: 4096   regular file
Device: 2h/2d   Inode: 7881299347901219  Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-07-27 09:03:56.943000400 -0400
Modify: 2018-07-27 09:03:56.943000400 -0400
Change: 2018-07-27 09:25:51.771887000 -0400
 Birth: -

sudo

Allows a user to run a command as another user, usually root. For a user to do this, they need to be added to the sudo group.

usermod -aG sudo gilfoyle

Logout Ctrl + D and test new user sudo access. Substitute 0.0.0.0 with the server IP address.

ssh gilfoyle@0.0.0.0

# list files in the /root directory
sudo ls -la /root

After sudo is enabled for the new user account, root password login can be turned off in the sshd_config file.

To prevent unable to resolve host message when using sudo, update the hosts file to contain the hostname for 127.0.0.1. For example, what is after @ in the command line prompt. e.g., gilfoyle@vpshostname.

sudo nano /etc/hosts

127.0.0.1 localhost vpshostname

tail

Monitor log files in real time. The -n300 argument show the last 300 lines. The default is only 10 lines.

tail -n300 -f error.log

Use the tail command with the -f argument to follow the content of a file. Use the -F argument to follow the creation of a new log.

update

Download package lists from repositories and update them to get information on the newest versions of packages and their dependencies.

apt-get update

The Advanced Package Tool (apt) is primarily for Debian and Ubuntu Linux systems.

upgrade

Fetch new versions of packages existing on the machine if APT knows about these new versions by way of apt-get update.

apt-get upgrade

Does the same job as apt-get upgrade, plus it will also intelligently handle the dependencies, so it might remove obsolete packages or add new ones.

apt-get dist-upgrade

user

These examples use gilfoyle for the username.

Add a new user.

adduser gilfoyle

watch

Will execute the command that follows every 2 seconds. e.g.,

watch date

To change the interval, use the -n argument. For example, this will run the date comand every 15 seconds.

watch -n 15 date

[man page]](http://man7.org/linux/man-pages/man1/watch.1.html)

Resources

Gnome

Shortcut Keys Window Alt + F7 + arrows to move the window Win + arrows to snap move/resize the window Win + Shift + arrows to snap move the window between displays GTK+ Resources GTK+ Development Blog The GTK+ Inspector

Bash

bash history Remove and prevent duplicates in bash history Step 1 - remove existing duplicates in .bash_history and create a new temporary file named unduped_history. # change to the home directory cd ~/ # remove duplicates and create unduped_history nl ~/.bash_history | sort -k 2 -k 1,1nr| uniq -f 1 | sort -n | cut -f 2 > unduped_history Step 2 - copy the unduped_history and overwrite .