# Linux Keyboard shortcuts open terminal: Ctrl+Alt+T * Ctrl+C – halts the current command * Ctrl+Z – stops the current command, resume with * fg in the foreground or bg in the background * Ctrl+D – log out of current session, similar to exit * Ctrl+W – erases one word in the current line * Ctrl+U – erases the whole line * Ctrl+R – type to bring up a recent command * !! - repeats the last command * exit – log out of current session # SSH [miranda-zhang/ssh.md](https://gist.github.com/miranda-zhang/74a2e1c5888b69f170792a107cd67011) # Searching: ## Find find . -type f -name "*.conf" ## Grep `grep` pattern dir - Search for pattern in dir. `-l` (or `--files-with-matches`) option is used to only print filenames of matching files, and not the matching lines (this could also improve the speed, given that grep stop reading a file at first match with this option). `-r` recursive `-i` ignore-case `--include` search only files that match the file pattern grep -ril --include \*.py --include \*.html ".id" * grep pattern files – search for pattern in files * command | grep pattern – search for pattern in the output of command * locate file – find all instances of file # System Info: * cal – show this month's calendar * uptime – show current uptime * w – display who is online * whoami – who you are logged in as * finger user – display information about user * uname -a – show kernel information * du – show directory space usage ## OS Version Ubuntu lsb_release -a CentOS hostnamectl http://whatsmyos.com ## Cpu information cat /proc/cpuinfo Show number of cores only grep -c ^processor /proc/cpuinfo https://stackoverflow.com/questions/6481005/how-to-obtain-the-number-of-cpus-cores-in-linux-from-the-command-line ## Memory information cat /proc/meminfo Show memory and swap usage, show output in gigabytes. free -g ## date time Show the current date and time date https://www.cyberciti.biz/faq/linux-display-date-and-time/ ## Disk df show disk usage ## IP ip a One line command to just grep the ip: ip a | grep "scope global" | grep -Po '(?<=inet )[\d.]+' For older version of centOS: ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' # Environment variables [Ubuntu doc](https://help.ubuntu.com/community/EnvironmentVariables) ## Prints the names and values of all currently defined environment variables printenv ## Examine the value of a particular variable printenv DBPASS or echo $TERM ## Dollar sign The dollar sign `$` can actually be used to combine the values of environment variables in many shell commands. For example, the following command can be used to list the contents of the "Desktop" directory within the current user's home directory. ls $HOME/Desktop ## System wide environment variables Add var into this file: sudo -H nano /etc/environment It's important to do exact the way above, and not as the root user, as it may cause problems like [unable to login](https://askubuntu.com/questions/994127/cant-login-ubuntu-but-can-ssh-to-it). If you use normal sudo to start graphical applications (including editors e.g. gedit), sometimes it results in the configuration files being owned by root, [read more about it here](https://askubuntu.com/questions/270006/why-should-users-never-use-normal-sudo-to-start-graphical-applications). The only time the file is read is on login, when the PAM stack is activated – specifically pam_env.so, which reads the file. Logging out and back in would apply the changes – and in fact you must do this if you want all your processes to receive the new environment. [All other solutions](https://superuser.com/questions/339617/how-to-reload-etc-environment-without-rebooting) will only apply the environment to the single shell process, but not to anything you launch through the GUI including new terminal windows. # App info which app show which app will be run by default man command show the manual for command * whereis app – show possible locations of app # Bash Shell Script `miranda-zhang/bash.md` https://gist.github.com/miranda-zhang/9871f934edbb87a23c11185b85e191be # File Commands: * cd dir - change directory to dir * cd – change to home * pwd – show current directory * mkdir dir – create a directory dir * rm file – delete file * rm -r dir – delete directory dir * rm -f file – force remove file * rm -rf dir – force remove directory dir * * cp file1 file2 – copy file1 to file2 * cp -r dir1 dir2 – copy dir1 to dir2; create dir2 if it doesn't exist * mv file1 file2 – rename or move file1 to file2 if file2 is an existing directory, moves file1 into directory file2 * ln -s file link – create symbolic link link to file * touch file – create or update file * cat > file – places standard input into file * more file – output the contents of file * head file – output the first 10 lines of file * tail file – output the last 10 lines of file * tail -f file – output the contents of file as it grows, starting with the last 10 lines ## GUI file manager xdg-open . https://askubuntu.com/a/31196/202823 ## Directory listing: show hidden files with`-a`, show details with `-l` ls -al Determine file type, i.e. check if somthing is a symbolic link. file Counting Files in the Current Directory ls -1 | wc -l This uses wc to do a count of the number of lines (-l) in the output of ls -1. http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x700.html ## File Permissions * chmod octal file – change the permissions of file to octal, which can be found separately for user, group, and world by adding: * 4 – read (r) * 2 – write (w) * 1 – execute (x) Examples: * chmod 777 – read, write, execute for all * chmod 755 – rwx for owner, rx for group and world ## Compression * tar cf file.tar files – create a tar named file.tar containing files * tar xf file.tar – extract the files from file.tar * tar czf file.tar.gz files – create a tar with Gzip compression * tar xzf file.tar.gz – extract a tar using Gzip * tar cjf file.tar.bz2 – create a tar with Bzip2 compression * tar xjf file.tar.bz2 – extract a tar using Bzip2 * gzip file – compresses file and renames it to file.gz * gzip -d file.gz – decompresses file.gz back to file # Process Management: * ps – display your currently active processes * top – display all running processes * kill pid – kill process id pid * killall proc – kill all processes named proc * * bg – lists stopped or background jobs; resume a stopped job in the background * fg – brings the most recent job to foreground * fg n – brings job n to the foreground # Network: * ping host – ping host and output results * whois domain – get whois information for domain * dig domain – get DNS information for domain * dig -x host – reverse lookup host * wget file – download file * wget -c file – continue a stopped download # Installation: Debian dpkg -i pkg.deb RPM rpm -Uvh pkg.rpm CentOS yum install pkg Ubuntu apt install pkg Node.js, Javascript package manager npm install ## Install from source: * ./configure * make * make install