Tips en Trucs 2015

Cheat Sheets

Linux terminal opdrachten zijn flexibel en veelzijdig. Elke Linux opdracht wordt gestuurd door opties en parameters. Je kunt deze opties en parameters mengen en aanpassen, en zelfs opdrachten aan elkaar rijgen met pipes en redirects. Zo ontstaan al vlug honderden mogelijkheden met slechts enkele basis opdrachten. Zelfs doorwinterde systeembeheerders beheersen niet alle opdrachtmogelijkheden.

De man pagina's blijven onze beste vriend, maar referentie kaarten werken toch efficiënter. Het ultieme Cheat Sheet hangt misschien op een opvallende plaats aan de muur of zit verborgen in een PDF bestand op uw harde schijf, of verschijnt zelfs als achtergrondafbeelding voor uw bureaublad.

Cheat is een alternatief, en eveneens een Linux opdracht om snel Cheat Sheets van een bepaalde opdracht weer te geven. Met Cheat kan je Cheat Sheets opvragen, aanmaken en aanpassen via de terminal.

Cheat installeren

Cheat is een Python packet dat je met de volgende opdracht kunt installeren:

dany@laptop:~> sudo pip install cheat
root's password:
Collecting cheat
  Downloading cheat-2.1.18.tar.gz
Collecting docopt>=0.6.1 (from cheat)
  Downloading docopt-0.6.2.tar.gz
Collecting pygments>=1.6.0 (from cheat)
  Downloading Pygments-2.0.2-py3-none-any.whl (672kB)
    100% |████████████████████████████████| 675kB 303kB/s 
Installing collected packages: docopt, pygments, cheat
  Running setup.py install for docopt
  Running setup.py install for cheat
Successfully installed cheat-2.1.18 docopt-0.6.2 pygments-2.0.2

Cheat gebruiken

Cheat wordt geïnstalleerd met ingebouwde Cheat Sheets voor meer dan 90 opdrachten. Je kunt een lijst met alle beschikbare Cheat Sheets weergeven met de volgende opdracht:

dany@laptop:~> cheat -l     
7z               /usr/lib/python3.4/site-packages/cheat/cheatsheets/7z
ab               /usr/lib/python3.4/site-packages/cheat/cheatsheets/ab
apk              /usr/lib/python3.4/site-packages/cheat/cheatsheets/apk
apparmor         /usr/lib/python3.4/site-packages/cheat/cheatsheets/apparmor
apt-cache        /usr/lib/python3.4/site-packages/cheat/cheatsheets/apt-cache
apt-get          /usr/lib/python3.4/site-packages/cheat/cheatsheets/apt-get
aptitude         /usr/lib/python3.4/site-packages/cheat/cheatsheets/aptitude
asciiart         /usr/lib/python3.4/site-packages/cheat/cheatsheets/asciiart
asterisk         /usr/lib/python3.4/site-packages/cheat/cheatsheets/asterisk
at               /usr/lib/python3.4/site-packages/cheat/cheatsheets/at
awk              /usr/lib/python3.4/site-packages/cheat/cheatsheets/awk
bash             /usr/lib/python3.4/site-packages/cheat/cheatsheets/bash
bower            /usr/lib/python3.4/site-packages/cheat/cheatsheets/bower
chmod            /usr/lib/python3.4/site-packages/cheat/cheatsheets/chmod
chown            /usr/lib/python3.4/site-packages/cheat/cheatsheets/chown
convert          /usr/lib/python3.4/site-packages/cheat/cheatsheets/convert
crontab          /usr/lib/python3.4/site-packages/cheat/cheatsheets/crontab
csplit           /usr/lib/python3.4/site-packages/cheat/cheatsheets/csplit
cups             /usr/lib/python3.4/site-packages/cheat/cheatsheets/cups
curl             /usr/lib/python3.4/site-packages/cheat/cheatsheets/curl
cut              /usr/lib/python3.4/site-packages/cheat/cheatsheets/cut
date             /usr/lib/python3.4/site-packages/cheat/cheatsheets/date
dd               /usr/lib/python3.4/site-packages/cheat/cheatsheets/dd
df               /usr/lib/python3.4/site-packages/cheat/cheatsheets/df
dhclient         /usr/lib/python3.4/site-packages/cheat/cheatsheets/dhclient
diff             /usr/lib/python3.4/site-packages/cheat/cheatsheets/diff
distcc           /usr/lib/python3.4/site-packages/cheat/cheatsheets/distcc
dnf              /usr/lib/python3.4/site-packages/cheat/cheatsheets/dnf
docker           /usr/lib/python3.4/site-packages/cheat/cheatsheets/docker
dpkg             /usr/lib/python3.4/site-packages/cheat/cheatsheets/dpkg
du               /usr/lib/python3.4/site-packages/cheat/cheatsheets/du
emacs            /usr/lib/python3.4/site-packages/cheat/cheatsheets/emacs
ffmpeg           /usr/lib/python3.4/site-packages/cheat/cheatsheets/ffmpeg
find             /usr/lib/python3.4/site-packages/cheat/cheatsheets/find
gcc              /usr/lib/python3.4/site-packages/cheat/cheatsheets/gcc
gdb              /usr/lib/python3.4/site-packages/cheat/cheatsheets/gdb
git              /usr/lib/python3.4/site-packages/cheat/cheatsheets/git
gpg              /usr/lib/python3.4/site-packages/cheat/cheatsheets/gpg
grep             /usr/lib/python3.4/site-packages/cheat/cheatsheets/grep
gs               /usr/lib/python3.4/site-packages/cheat/cheatsheets/gs
gzip             /usr/lib/python3.4/site-packages/cheat/cheatsheets/gzip
hardware-info    /usr/lib/python3.4/site-packages/cheat/cheatsheets/hardware-info
head             /usr/lib/python3.4/site-packages/cheat/cheatsheets/head
history          /usr/lib/python3.4/site-packages/cheat/cheatsheets/history
hub              /usr/lib/python3.4/site-packages/cheat/cheatsheets/hub
ifconfig         /usr/lib/python3.4/site-packages/cheat/cheatsheets/ifconfig
indent           /usr/lib/python3.4/site-packages/cheat/cheatsheets/indent
ip               /usr/lib/python3.4/site-packages/cheat/cheatsheets/ip
iptables         /usr/lib/python3.4/site-packages/cheat/cheatsheets/iptables
irssi            /usr/lib/python3.4/site-packages/cheat/cheatsheets/irssi
iwconfig         /usr/lib/python3.4/site-packages/cheat/cheatsheets/iwconfig
journalctl       /usr/lib/python3.4/site-packages/cheat/cheatsheets/journalctl
jq               /usr/lib/python3.4/site-packages/cheat/cheatsheets/jq
jrnl             /usr/lib/python3.4/site-packages/cheat/cheatsheets/jrnl
less             /usr/lib/python3.4/site-packages/cheat/cheatsheets/less
lib              /usr/lib/python3.4/site-packages/cheat/cheatsheets/lib
ln               /usr/lib/python3.4/site-packages/cheat/cheatsheets/ln
ls               /usr/lib/python3.4/site-packages/cheat/cheatsheets/ls
lsof             /usr/lib/python3.4/site-packages/cheat/cheatsheets/lsof
lvm              /usr/lib/python3.4/site-packages/cheat/cheatsheets/lvm
man              /usr/lib/python3.4/site-packages/cheat/cheatsheets/man
markdown         /usr/lib/python3.4/site-packages/cheat/cheatsheets/markdown
mkdir            /usr/lib/python3.4/site-packages/cheat/cheatsheets/mkdir
more             /usr/lib/python3.4/site-packages/cheat/cheatsheets/more
mount            /usr/lib/python3.4/site-packages/cheat/cheatsheets/mount
mysql            /usr/lib/python3.4/site-packages/cheat/cheatsheets/mysql
mysqldump        /usr/lib/python3.4/site-packages/cheat/cheatsheets/mysqldump
nc               /usr/lib/python3.4/site-packages/cheat/cheatsheets/nc
ncat             /usr/lib/python3.4/site-packages/cheat/cheatsheets/ncat
netstat          /usr/lib/python3.4/site-packages/cheat/cheatsheets/netstat
nmap             /usr/lib/python3.4/site-packages/cheat/cheatsheets/nmap
notify-send      /usr/lib/python3.4/site-packages/cheat/cheatsheets/notify-send
nova             /usr/lib/python3.4/site-packages/cheat/cheatsheets/nova
ntp              /usr/lib/python3.4/site-packages/cheat/cheatsheets/ntp
numfmt           /usr/lib/python3.4/site-packages/cheat/cheatsheets/numfmt
od               /usr/lib/python3.4/site-packages/cheat/cheatsheets/od
openssl          /usr/lib/python3.4/site-packages/cheat/cheatsheets/openssl
p4               /usr/lib/python3.4/site-packages/cheat/cheatsheets/p4
pacman           /usr/lib/python3.4/site-packages/cheat/cheatsheets/pacman
paste            /usr/lib/python3.4/site-packages/cheat/cheatsheets/paste
pdftk            /usr/lib/python3.4/site-packages/cheat/cheatsheets/pdftk
php              /usr/lib/python3.4/site-packages/cheat/cheatsheets/php
ping             /usr/lib/python3.4/site-packages/cheat/cheatsheets/ping
ping6            /usr/lib/python3.4/site-packages/cheat/cheatsheets/ping6
pip              /usr/lib/python3.4/site-packages/cheat/cheatsheets/pip
ps               /usr/lib/python3.4/site-packages/cheat/cheatsheets/ps
python           /usr/lib/python3.4/site-packages/cheat/cheatsheets/python
readline         /usr/lib/python3.4/site-packages/cheat/cheatsheets/readline
rm               /usr/lib/python3.4/site-packages/cheat/cheatsheets/rm
route            /usr/lib/python3.4/site-packages/cheat/cheatsheets/route
rpm              /usr/lib/python3.4/site-packages/cheat/cheatsheets/rpm
rss2email        /usr/lib/python3.4/site-packages/cheat/cheatsheets/rss2email
rsync            /usr/lib/python3.4/site-packages/cheat/cheatsheets/rsync
sam2p            /usr/lib/python3.4/site-packages/cheat/cheatsheets/sam2p
scp              /usr/lib/python3.4/site-packages/cheat/cheatsheets/scp
screen           /usr/lib/python3.4/site-packages/cheat/cheatsheets/screen
sed              /usr/lib/python3.4/site-packages/cheat/cheatsheets/sed
shred            /usr/lib/python3.4/site-packages/cheat/cheatsheets/shred
smbclient        /usr/lib/python3.4/site-packages/cheat/cheatsheets/smbclient
snmpwalk         /usr/lib/python3.4/site-packages/cheat/cheatsheets/snmpwalk
sockstat         /usr/lib/python3.4/site-packages/cheat/cheatsheets/sockstat
sort             /usr/lib/python3.4/site-packages/cheat/cheatsheets/sort
split            /usr/lib/python3.4/site-packages/cheat/cheatsheets/split
sqlmap           /usr/lib/python3.4/site-packages/cheat/cheatsheets/sqlmap
ss               /usr/lib/python3.4/site-packages/cheat/cheatsheets/ss
ssh              /usr/lib/python3.4/site-packages/cheat/cheatsheets/ssh
ssh-copy-id      /usr/lib/python3.4/site-packages/cheat/cheatsheets/ssh-copy-id
ssh-keygen       /usr/lib/python3.4/site-packages/cheat/cheatsheets/ssh-keygen
stdout           /usr/lib/python3.4/site-packages/cheat/cheatsheets/stdout
strace           /usr/lib/python3.4/site-packages/cheat/cheatsheets/strace
systemctl        /usr/lib/python3.4/site-packages/cheat/cheatsheets/systemctl
systemd          /usr/lib/python3.4/site-packages/cheat/cheatsheets/systemd
tail             /usr/lib/python3.4/site-packages/cheat/cheatsheets/tail
tar              /usr/lib/python3.4/site-packages/cheat/cheatsheets/tar
tcpdump          /usr/lib/python3.4/site-packages/cheat/cheatsheets/tcpdump
tee              /usr/lib/python3.4/site-packages/cheat/cheatsheets/tee
tmux             /usr/lib/python3.4/site-packages/cheat/cheatsheets/tmux
top              /usr/lib/python3.4/site-packages/cheat/cheatsheets/top
tr               /usr/lib/python3.4/site-packages/cheat/cheatsheets/tr
truncate         /usr/lib/python3.4/site-packages/cheat/cheatsheets/truncate
udisksctl        /usr/lib/python3.4/site-packages/cheat/cheatsheets/udisksctl
uname            /usr/lib/python3.4/site-packages/cheat/cheatsheets/uname
uniq             /usr/lib/python3.4/site-packages/cheat/cheatsheets/uniq
unzip            /usr/lib/python3.4/site-packages/cheat/cheatsheets/unzip
vagrant          /usr/lib/python3.4/site-packages/cheat/cheatsheets/vagrant
vim              /usr/lib/python3.4/site-packages/cheat/cheatsheets/vim
weechat          /usr/lib/python3.4/site-packages/cheat/cheatsheets/weechat
wget             /usr/lib/python3.4/site-packages/cheat/cheatsheets/wget
xargs            /usr/lib/python3.4/site-packages/cheat/cheatsheets/xargs
yaourt           /usr/lib/python3.4/site-packages/cheat/cheatsheets/yaourt
youtube-dl       /usr/lib/python3.4/site-packages/cheat/cheatsheets/youtube-dl
yum              /usr/lib/python3.4/site-packages/cheat/cheatsheets/yum
zip              /usr/lib/python3.4/site-packages/cheat/cheatsheets/zip
zoneadm          /usr/lib/python3.4/site-packages/cheat/cheatsheets/zoneadm

Om een Cheat Sheet van een bepaalde opdracht weer te geven, voeg je de opdrachtnaam toe aan de cheat opdracht:

dany@laptop:~> cheat diff
# To view the differences between two files:                                                                                         
diff -u version1 version2                                                                                                            
                                                                                                                                     
# To view the differences between two directories:                                                                                   
diff -ur folder1/ folder2/                                                                                                           
                                                                                                                                     
# To ignore the white spaces:                                                                                                        
diff -ub version1 version2                                                                                                           
                                                                                                                                     
# To ignore the blank lines:                                                                                                         
diff -uB version1 version2                                                                                                           
                                                                                                                                     
# To ignore the differences between uppercase and lowercase:                                                                         
diff -ui version1 version2                                                                                                           
                                                                                                                                     
# To report whether the files differ:                                                                                                
diff -q version1 version2                                                                                                            

# To report whether the files are identical:
diff -s version1 version2

# To diff the output of two commands or scripts:
diff <(command1) <(command2)

Om alle Cheat Sheets te doorzoeken naar een sleutelwoord, gebruik je de -s optie (search):

dany@laptop:~> cheat -s diff
diff:                                                           
  # To view the differences between two files:                  
  diff -u version1 version2                                                                                                          
  # To view the differences between two directories:                                                                                 
  diff -ur folder1/ folder2/                                                                                                         
  diff -ub version1 version2                                                                                                         
  diff -uB version1 version2                                                                                                         
  # To ignore the differences between uppercase and lowercase:                                                                       
  diff -ui version1 version2                                                                                                         
  # To report whether the files differ:                                                                                              
  diff -q version1 version2                                                                                                          
  diff -s version1 version2                                                                                                          
  # To diff the output of two commands or scripts:                                                                                   
  diff <(command1) <(command2)                                                                                                       
                                                                                                                                     
git:                                                                                                                                 
  git diff branch_1 branch_2                              # Check difference between branches                                        
  git diff master...feature
  # This can be used to diff files that are not in a git repo!
  git diff --no-index path/to/file/A path/to/file/B

tmux:
  # Detach an already attached session (great if you are moving devices with different screen resolutions)

yaourt:
  # The difference is that yaourt will also query the Arch User Repository,

Cheats Sheets aanpassen

Sommige Cheat Sheets die interessant zijn voor de ene zijn waardeloos voor een andere gebruiker. De cheat opdracht laat toe de ingebouwde Cheat Sheets te personaliseren en aan te passen en nieuwe aan te maken. Daarvoor gebruikt de cheat opdracht de lokale map ~/.cheat.

De cheat editor werkt met de EDITOR omgevingsvariabele, deze geeft aan welke uw favoriete editor is. Pas deze omgevingsvariabele aan met de volgende opdracht:

dany@laptop:~> export EDITOR=/usr/bin/joe

Controleer de EDITOR omgevingsvariabele met de opdracht:

dany@laptop:~> echo $EDITOR
/usr/bin/joe

Als je de EDITOR omgevingsvariabele permanent in bash wilt gebruiken, voeg je deze toe aan het bestand ~/.bashrc. Daarna wordt bij elke terminalstart de EDITOR omgevingsvariabele ingesteld.

Daarna bepalen we in welke map (directory) de ingebouwde Cheat Sheets op de harde schijf staan:

dany@laptop:~> cheat -d
/home/dany/.cheat
/usr/lib/python3.4/site-packages/cheat/cheatsheets

Kopieer de ingebouwde Cheat Sheets die je wilt aanpassen naar uw persoonlijke Cheat Sheet map:

dany@laptop:~> cp /usr/lib/python3.4/site-packages/cheat/cheatsheets/* ~/.cheat
cp: map ‘/usr/lib/python3.4/site-packages/cheat/cheatsheets/__pycache__’ wordt overgeslagen

Je kunt nu Cheat Sheets aanmaken en aanpassen met behulp van de -e optie (editor):

dany@laptop:~> cheat -e diff
Cheat Editor

Deze editor functie gebruik je om een lokale map met aan uw eigen noden aangepaste Cheat Sheets aan te leggen. Niets belet je om een aangemaakt of aangepast Cheat Sheet waarvan je denkt dat meerdere mensen er iets aan hebben, bij te dragen aan het Github Cheat project.