#!/usr/bin/env python cheatsheets = { # @todo: # - adb # - at # - dd # - df # - du # - fdisk # - fstab # - mount # - mongodump # - mongoimport # - nc # - rsync # - useradd / adduser # - xargs ########## apt-cache ########################################################## 'apt-cache' : ''' To search for apt packages: apt-cache search "whatever" ''', ########## bash ############################################################### 'bash' : ''' To implement a for loop: for file in `ls .`; do echo 'file'; echo 'found'; done @todo: if (esp. file/directory) ''', ########## convert ########################################################### 'convert' : ''' To resize an image to a fixed width and proportional height: convert original-image.jpg -resize 100x converted-image.jpg To resize an image to a fixed height and proportional width: convert original-image.jpg -resize x100 converted-image.jpg To resize an image to a fixed width and height: convert original-image.jpg -resize 100x100 converted-image.jpg To resize an image and simultaneously change its file type: convert original-image.jpg -resize 100x converted-image.png To resize all of the images within a directory: To implement a for loop: for file in `ls original/image/path/`; do new_path=${file%.*}; new_file=`basename $new_path`; convert $file -resize 150 conerted/image/path/$new_file.png; done ''', ########## dd ################################################################ 'dd' : ''' @todo ''', ########## dhclient ########################################################## 'dhclient' : ''' To release the current IP address: sudo dhclient -r To obtain a new IP address: sudo dhclient Running the above in sequence is a common way of refreshing an IP. ''', ########## find ############################################################## 'find' : ''' To find files by extension (ex: .jpg): find . -iname "*.jpg" To find directories: find . -type d To find files: find . -type f To find files by octal permission: find . -type f -perm 777 To find files with setuid bit set: find . -xdev \( -perm -4000 \) -type f -print0 | xargs -0 ls -l ''', ########## git ############################################################### 'git' : ''' To set your identify: git config --global user.name "John Doe" git config --global user.email johndoe@example.com To enable color: git config --global color.ui true ''', ########## ln ################################################################ 'ln' : ''' To create a symlink: ln -s path/to/the/target/directory name-of-symlink ''', ########## mysqldump ######################################################### 'mysqldump' : ''' To dump a database to a file: mysqldump -uusername -ppassword the-database > db.sql To dump a database to a .tgz file: mysqldump -uusername -ppassword the-database | gzip -9 > db.sql To dump all databases to a file: mysqldump -uusername -ppassword --all-databases > all-databases.sql ''', ########## netstat ########################################################### 'netstat' : ''' To view which users/processes are listening to which ports: sudo netstat -lnptu ''', ########## notify-send ####################################################### 'notify-send' : ''' To send a desktop notification via dbus: notify-send -i 'icon-file/name' -a 'application_name' 'summary' 'body of message' The -i and -a flags can be omitted if unneeded. ''', ########## sed ################################################################ 'sed' : ''' To replace all occurrences of "day" with "night" and write to stdout: sed s/day/night file.txt To replace all occurrences of "day" with "night" within file.txt: sed s/day/night file.txt > file.txt To replace all occurrences of "day" with "night" on stdin: echo 'It is daytime' | sed s/day/night/ ''', ########## shred ############################################################## 'shred' : ''' To shred a file (5 passes) and verbose output: shred -n 5 -v file.txt To shred a file (5 passes) and a final overwrite of zeroes: shred -n 5 -vz file.txt To do the above, and then truncate and rm the file: shred -n 5 -vzu file.txt To shred a partition: shred -n 5 -vz /dev/sda Remember that shred may not behave as expected on journaled file systems if file data is being journaled. ''', ########## split ############################################################# 'split' : ''' To split a large text file into smaller files of 1000 lines each: split file.txt -l 1000 To split a large binary file into smaller files of 10M each: split file.txt -b 10M To consolidate split files into a single file: cat x* > file.txt ''', ########## sockstat ########################################################## 'sockstat' : ''' To view which users/processes are listening to which ports: sudo sockstat -l ''', ########## ssh ############################################################### 'ssh' : ''' To execute a command on a remote server: ssh -t user@example.com 'the-remote-command' To tunnel an x session over SSH: ssh -X user@example.com To launch a specific x application over SSH: ssh -X -t user@example.com 'chromium-browser' For more information, see: http://unix.stackexchange.com/q/12755/44856 ''', ########## ssh-copy-id ######################################################## 'ssh-copy-id' : ''' To copy a key to a remote host: ssh-copy-id username@host To copy a key to a remote host on a non-standard port: ssh-copy-id username@host -p 2222 ''', ########## ssh-keygen ######################################################## 'ssh-keygen' : ''' To generate an SSH key: ssh-keygen -t rsa To generate a 4096-bit SSH key: ssh-keygen -t rsa -b 4096 To copy a key to a remote host: ssh-copy-id username@host To copy a key to a remote host on a non-standard port: ssh-copy-id username@host -p 2222 ''', ########## stdout ############################################################# 'stdout' : ''' To redirect stderr to stdout: some-command 2>&1 To redirect stderr to a file some-command 2> errors.txt ''', ########## tar ############################################################### 'tar' : ''' To extract an uncompressed archive: tar -xvf /path/to/foo.tar To extract a .gz archive: tar -xzvf /path/to/foo.tgz To create a .gz archive: tar -czvf /path/to/foo.tgz /path/to/foo/ To extract a .bz2 archive: tar -xjvf /path/to/foo.tgz To create a .bz2 archive: tar -cjvf /path/to/foo.tgz /path/to/foo/ ''', } # Cheatsheets can be aliased under a different keyphrase like this: cheatsheets['dbus'] = cheatsheets['notify-send'] cheatsheets['imagick'] = cheatsheets['convert'] cheatsheets['redirection'] = cheatsheets['stdout']