[taken from](https://github.com/ericdrowell/CheatSheetWorld/blob/master/src/programming/unix-linux.json)
## File System
```ls```
list items in current directory
```ls -l```
list items in current directory and show in long format to see perimissions, size, and modification date
```ls -a```
list all items in current directory, including hidden files
```ls -F```
list all items in current directory and show directories with a slash and executables with a star
```ls dir```
list all items in directory dir
```cd dir```
change directory to dir
```cd ..```
go up one directory
```cd /```
go to the root directory
```cd ~```
go to to your home directory
```cd -```
go to the last directory you were just in
```pwd```
show present working directory
```mkdir dir```
make directory dir
```rm file```
remove file
```rm -r dir```
remove directory dir recursively
```cp file1 file2```
copy file1 to file2
```cp -r dir1 dir2```
copy directory dir1 to dir2 recursively
```mv file1 file2```
move (rename) file1 to file2
```ln -s file link```
create symbolic link to file
```touch file```
create or update file
```cat file```
output the contents of file
```less file```
view file with page navigation
```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
```vim file```
edit file
```alias name 'command'```
create an alias for a command
## System
```shutdown```
shut down machine
```reboot```
restart machine
```date```
show the current date and time
```whoami```
who you are logged in as
```finger user```
display information about user
```man command```
show the manual for command
```df```
show disk usage
```du```
show directory space usage
```free```
show memory and swap usage
```whereis app```
show possible locations of app
```which app```
show which app will be run by default
## Process Management
```ps```
display your currently active processes
```top```
display all running processes
```kill pid```
kill process id pid
```kill -9 pid```
force kill process id pid
## Permissions
```ls -l```
list items in current directory and show permissions
```chmod ugo file```
change permissions of file to ugo - u is the user's permissions, g is the group's permissions, and o is everyone else's permissions. The values of u, g, and o can be any number between 0 and 7.
- 7 full permissions
- 6 read and write only
- 5 read and execute only
- 4 read only
- 3 write and execute only
- 2 write only
- 1 execute only
- 0 no permissions
```chmod 600 file```
you can read and write - good for files
```chmod 700 file```
you can read, write, and execute - good for scripts
```chmod 644 file```
you can read and write, and everyone else can only read - good for web pages
```chmod 755 file```
you can read, write, and execute, and everyone else can read and execute - good for programs that you want to share
## Networking,
```wget file```
download a file
```curl file```
download a file
```scp user@host:file dir```
secure copy a file from remote server to the dir directory on your machine
```scp file user@host:dir```
secure copy a file from your machine to the dir directory on a remote server
```scp -r user@host:dir dir```
secure copy the directory dir from remote server to the directory dir on your machine
```ssh user@host```
connect to host as user
```ssh -p port user@host```
connect to host on port as user
```ssh-copy-id user@host```
add your key to host for user to enable a keyed or passwordless login
```ping host```
ping host and output results
```whois domain```
get information for domain
```dig domain```
get DNS information for domain
```dig -x host```
reverse lookup host
```lsof -i tcp:1337```
list all processes running on port 1337
## Searching,
```grep pattern files```
search for pattern in files
```grep -r pattern dir```
search recursively for pattern in dir
```grep -rn pattern dir```
search recursively for pattern in dir and show the line number found
```grep -r pattern dir --include='*.ext```
search recursively for pattern in dir and only search in files with .ext extension
```command | grep pattern```
search for pattern in the output of command
```find file```
find all instances of file in real system
```locate file```
find all instances of file using indexed database built from the updatedb command. Much faster than find
```sed -i 's/day/night/g' file```
find all occurrences of day in a file and replace them with night - s means substitude and g means global - sed also supports regular expressions
## 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
```gzip file```
compresses file and renames it to file.gz
```gzip -d file.gz```
decompresses file.gz back to file
## Shortcuts
```ctrl+a```
move cursor to beginning of line
```ctrl+f```
move cursor to end of line
```alt+f```
move cursor forward 1 word
```alt+b```
move cursor backward 1 word
## Reading contents of a file
`cat`
prints out all the contents of a file
```
cat /etc/services
```
`head`
prints out the first few lines of a file
```
head /etc/services
```
`tail`
prints out the last few lines of a file
```
tail /etc/services
```
`more`
prints out the contents of a file, but only fills one screen's worth at a time
```
more /etc/services
```
`less`
allows you to navigate backward and forward in a file using the up and down arrow keys
```
less /etc/services
```