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/fstab
to persistently mount an SMB network sharemkdir /media/yourshare id # note uid and gid, e. g. 1000 and 1004 vi /etc/fstab
Password inside fstab Secure password outside fstab fstabservername/yourshare /media/yourshare cifs username=user,password=pass,uid=1000,gid=1004 0 0
mount -a # reload fstab
fstab//server/share /pathto/mountpoint cifs credentials=/home/username/.smbcredentials,uid=shareuser,gid=sharegroup 0 0
Create the .smbcredentials file in your home directory:
~/.smbcredentialsusername=shareuser password=sharepassword domain=domain_or_workgroupname
Make 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 0
mount -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++-9
Adapt 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" .
(
-rho
to 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