Debian specific
- 
install Let’s Encrypt certificates apt-get update apt-get install software-properties-common add-apt-repository ppa:certbot/certbot apt-get update apt-get install python-certbot-nginx certbot --nginx # for nginx
- 
find packages that contain a certain file (e. g. a header file that is needed by a build) apt-file search file_name
- 
apt-get update apt-get install -y x11vnc apt-get install gnome-core x11vnc -storepasswd apt install xinit startx & x11vnc -xkb -noxrecord -forever -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw &
- 
install mount support for SMB protocol apt install cifs-utils
- 
temporary mount mount //server/share /mnt/share -o user=user,pass=pass
- 
persistent mount 
 edit/etc/fstabto persistently mount an SMB network sharemkdir /media/yourshare id # note uid and gid, e. g. 1000 and 1004 vi /etc/fstabPassword inside fstab Secure password outside fstab fstabservername/yourshare /media/yourshare cifs username=user,password=pass,uid=1000,gid=1004 0 0mount -a # reload fstabfstab//server/share /pathto/mountpoint cifs credentials=/home/username/.smbcredentials,uid=shareuser,gid=sharegroup 0 0Create the .smbcredentials file in your home directory: ~/.smbcredentialsusername=shareuser password=sharepassword domain=domain_or_workgroupnameMake sure you secure your ~/.smbcredentials file: chmod 0600 ~/.smbcredentials
- 
unmount persistent network share vi /etc/fstab # remove entry from /etc/fstab mount -a # reload fstab umount /media/yourshare rm /media/yourshare
- 
update Debian apt-get update # fetches the list of updates apt-get upgrade # strictly upgrades the current packages apt-get dist-upgrade # installs updates (new ones)
- 
start programs automatically crontab -e@reboot command_or_script
- 
send a mail ssmtp recipent@domain.org Subject: your subject Text of mail(then send mail with controlZ) 
- 
share folders over NFS - 
install mount support for NFS protocol apt-get install nfs-common 
- 
edit fstab to persistently mount an NFS network share mkdir /media/yourshare vi /etc/fstab/etc/fstabservername:/yourshare /media/yourshare nfs rsize=8192,wsize=8192,timeo=14,intr 0 0mount -a # reload fstab
 
- 
Mac specific
- 
install gcc and make CMake use it instead of /usr/bin/g++ (i. e. XCode Clang) brew install gcc export CC=/usr/local/Cellar/gcc/9.1.0/bin/gcc-9 export CXX=/usr/local/Cellar/gcc/9.1.0/bin/g++-9Adapt above path so it matches the one printed by brew info gcc.
- 
print version of shared library otool -L libName.dylib
- 
share a file sharing -a file_name
- 
list files including extended attributes ls -l@
- 
show the names and values of all extended attributes of a file xattr -l file
- 
compress directory into zip archive zip -r folder.zip /path/to/folder
- 
compress directory into zip archive with password zip -er folder.zip /path/to/folder
- 
copy file content into clipboard pbcopy < /path/to/source_file
- 
copy clipboard content into file pbpaste > /path/to/target_file
- 
create directory hardlink brew install hardlink-osx hln /path/to/source_directory /path/to/target_directory
- 
open file with associated app open file_name
- 
see the list of outdated software softwareupdate --list
- 
update all outdated software softwareupdate --install --all
- 
update specfic software softwareupdate --install product_name
- 
suspend system /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
- 
stop dock icons from bouncing defaults write com.apple.dock no-bouncing -bool TRUE killall Dock
Linux and Mac
- 
create patch file diff -u modified_file original_file >my_patch.patch
- 
apply patch file patch -u file_to_be_modified my_patch.patch
- 
change text encoding of file (here from utf-16 to utf-8) iconv -f utf-16 -t utf-8 </path/to/source_file >/path/to/target_file
- 
print hex dump of file xxd filename
- 
print all environment variables printenv
- 
compare folder contents diff -rq <folder1> <folder2>
- 
print folder size du -sh /path/to/folder
- 
copy file to server scp -P <port> local_file user_name@server_name:/target/path
- 
ssh-login to server ssh -l user_name -p <port> server_name
- 
create symlink (example in /usr/local/bin) ln -s /path/to/my_executable /usr/local/bin/my_executable
- 
try to make PDF file smaller gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -dPDFSETTINGS=/PSL2Printer -dCompatibilityLevel=1.4 -sOutputFile=out.pdf in.pdf
- 
list possible pdfsettings gs -dNODISPLAY -c ".distillersettings {exch ==only ( ) print ==} forall quit"
- 
check which nfs shares are available on an nfs server showmount -e server_name
- 
list all files in a directory find . -type f -ls
- 
list all symlinks find . -type l -ls
- 
delete all files in a directory find . -type f -delete
- 
list currently running processes top
- 
find a process by its name pgrep process_name
- 
kill a process by its name pkill process_name
- 
create SSH key ssh-keygen
- 
switch on SSH logging vi /etc/ssh/sshd_config # comment in LogLevel INFO service ssh restart tail -f /var/log/auth.log
- 
change SSH port vi /etc/ssh/sshd_config # change the line containing the port service ssh restart
- 
show processes that lock a file: lsof /path/to/locked/file
- 
change owner of a file chown username filename
- 
list files containing given text - 
list file names grep -rl --include "*.ext" "text_to_search_for" /path/where/to/search
- 
list file names and part of text grep -ro --include "filename" -e "pattern" .( -rhoto suppress the file name)
 
- 
- 
find file based on its name (case insensitive) find / -iname "file_name"
- 
list files with a certain extension find /path/where/to/search *.c