Werken met opdrachten in de terminal lijkt voor een niet terminal gebruiker saai en omslachtig. Niets is minder waar. Vandaag toont ik enkele opdrachten die plezant, soms een tikkeltje nutteloos (of lijken) maar toch interessant kunnen zijn.
Deze opdracht keert ingegeven tekstregels om. Met de sneltoets Ctrl + c breek je de opdracht af.
dany@linux-e1kr:~> rev
Tips en Trucs op PinDaNet.be
eb.teNaDniP po scurT ne spiT
^C
Met een bestand als argument wordt het volledige tekstbestand regel per regel omgekeerd.
dany@linux-e1kr:~> rev capsized/Linux.README
.xuniL/UNG rof dezispaC 'semaG partneilA si sihT
moc.obibijitibilf@obibijitibilf ta eeL nahtE ot detroper eb dluohs sguB
2LDS-emaGonoM tuobA
-------------------
:buHtiG no dnuof eb nac dezispaC stroppus taht hcnarb emaGonoM ehT
emaGonoM/obibijitibilf/moc.buhtig//:sptth
sknahT laicepS
--------------
.reyalp oediv #yalParoehT eht dna #2LDS ,emaGonoM htiw pleh rof ,woG divaD
.#yalParoehT htiw pleh lanoitidda rof ,thgiLratS
:sretset fo hcnub elohw A
irelegnA onafetS -
rekceB niveK -
ikswokcaG walsinatS -
zednanreH einaleM -
trepliH nitraM -
drawoH miT -
arecuK rehpotsirhC -
relløM sucraM -
sennahoJ -
wehttaM -
!dezispaC yojne uoy epoh eW
tibilf ,evoL
Deze eigenaardige opdracht herhaalt een tekenreeks tot de opdracht met de sneltoets Ctrl + c wordt afgebroken.
dany@linux-e1kr:~> yes linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
linux
^Clinux
linux
linux
linux
linux
linux
linux
linux
dany@linux-e1kr:~>
Om de priemgetallen van een getal te kennen, gebruik je de opdracht factor. Ik heb de limieten van de opdracht niet getest, maar de opdracht lijkt me krachtig. Priemgetallen en het ontbinden in priemgetallen is de basis voor moderne versleuteling en internetbeveiliging.
dany@linux-e1kr:~> factor 256944597
256944597: 3 7 13 73 12893
Deze opdracht gebruik je als een ingebouwde timer. Het werkt in de achtergrond terwijl je met een andere opdracht werkt. Na het afsluiten van de opdracht toont time hoelang de uitgevoerde opdracht duurde.
dany@linux-e1kr:~> time factor 256944597
256944597: 3 7 13 73 12893
real 0m0.002s
user 0m0.000s
sys 0m0.001s
Elk Unix systeem heeft een ingebouwde kalender. De opdracht toont zonder argumenten de huidige maand. Door argumenten op te geven kan je om het even welke maand in om het even welk jaar weergeven. Het argument -j geeft het aantal dagen vanaf 1 januari weer (Julian days).
dany@linux-e1kr:~>cal
oktober 2013 ma di wo do vr za zo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 dany@linux-e1kr:~>cal 12 2014
december 2014 ma di wo do vr za zo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 dany@linux-e1kr:~>cal -j
oktober 2013 ma di wo do vr za zo 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304
De opdracht pi toont een benadering van het getal PI, handig voor wiskundigen en dergelijke. Als argument geef je het aantal weer te geven cijfer op.
dany@linux-e1kr:~> pi 100
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823L0
De opdracht vdir toont een gedetailleerde inhoud van een map.
Deze opdracht is overtollig omdat de opdracht ls -l
identiek hetzelfde doet.
dany@linux-e1kr:~> vdir
totaal 72
drwxr-xr-x 2 dany users 4096 30 sep 16:01 bin
drwxr-xr-x 11 dany users 4096 11 jul 20:56 capsized
-rw-r--r-- 1 dany users 72 28 sep 12:17 C:\\nppdf32Log\\debuglog.txt
drwxr-xr-x 3 dany users 4096 19 sep 15:11 Desktop
lrwxrwxrwx 1 dany users 20 7 apr 17:56 Documents -> /usr/home/Documents/
drwxr-xr-x 5 dany users 4096 3 okt 15:56 Downloads
drwxr-xr-x 6 dany users 4096 30 sep 16:01 Games
drwxr-xr-x 4 dany users 4096 19 jun 15:42 highlight
-rw-r--r-- 1 dany users 544 17 jun 20:49 html.html
-rw-r--r-- 1 dany users 18 16 jun 21:34 html.sh
-rw-r--r-- 1 dany users 102 29 jun 19:24 index.php
drwxr-xr-x 4 dany users 4096 28 jul 17:50 LegendsOfAthereus
lrwxrwxrwx 1 dany users 27 7 apr 17:56 Music -> /usr/home/Documents/Muziek/
lrwxrwxrwx 1 dany users 33 7 apr 17:56 Pictures -> /usr/home/Documents/Afbeeldingen/
drwxr-xr-x 2 dany users 4096 6 apr 20:30 Public
drwxr-xr-x 2 dany users 4096 6 apr 20:30 public_html
-rw-r--r-- 1 dany users 929 29 jul 17:52 Settings.ini
-rwxr-xr-x 1 dany users 597 3 okt 15:14 snow.sh
drwxr-xr-x 2 dany users 4096 6 apr 20:30 Templates
drwxr-xr-x 2 dany users 4096 21 sep 11:26 Torrents
lrwxrwxrwx 1 dany users 28 7 apr 17:57 Videos -> /usr/home/Documents/Video's/
drwxr-xr-x 9 dany users 4096 28 aug 12:25 vmware
Deze opdracht wist alle regels in een terminal, waardoor het terminal scherm leeg is. Een doorwinterde terminal gebruiker gebruikt daarvoor de sneltoets Ctrl + l. De enige plaats waar je de opdracht clear wel kunt gebruiken is in scripts.
clear(1) clear(1) NAME clear - clear the terminal screen SYNOPSIS clear DESCRIPTION clear clears your screen if this is possible. It looks in the environ- ment for the terminal type and then in the terminfo database to figure out how to clear the screen. clear ignores any command-line parameters that may be present. SEE ALSO tput(1), terminfo(5) This describes ncurses version 5.9 (patch 20130119). Manual page clear(1) line 1 (press h for help or q to quit)
Deze opdracht gebruik je om tekens in een terminal te onderstrepen. Ik heb de opdracht nog niet helemaal onderzocht, maar heb ontdekt dat het meta-teken \b_ het vorige teken onderstreept.
dany@linux-e1kr:~> echo $'hello w\b_o\b_r\b_l\b_d\b_ ' | ul
hello world
Naar mijn weten is dit de kortste opdracht die ik ken. De w opdracht toont informatie over de huidige gebruiker.
dany@linux-e1kr:~> w
17:52:20 up 6:33, 3 users, load average: 0,24, 0,17, 0,15
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
dany :0 console 11:19 ?xdm? 12:03 0.03s /bin/sh /usr/bi
dany pts/0 11:19 6:33m 0.00s 2.42s kdeinit4: kded4
dany pts/1 17:28 20.00s 0.03s 0.00s w
Dit is eigenlijk meer een script dan een opdracht en toont de tafels van vermenigvuldiging. Mooi weergegeven in kolommen, maar niet een opdracht die je zomaar kunt onthouden.
dany@linux-e1kr:~> for i in {1..9}; do for j in $(seq 1 $i); do echo -ne $i×$j=$((i*j))\\t;done; echo;done
1×1=1
2×1=2 2×2=4
3×1=3 3×2=6 3×3=9
4×1=4 4×2=8 4×3=12 4×4=16
5×1=5 5×2=10 5×3=15 5×4=20 5×5=25
6×1=6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36
7×1=7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49
8×1=8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64
9×1=9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81
Het snow.sh script toont vallende sneeuwvlokjes in de terminal.
Kopieer en plak onderstaande script in een tekst bestand (bijvoorbeeld in KWrite), sla het op als snow.sh (in uw Persoonlijke map), maak het uitvoerbaar (chmod +x snow.sh
), start het (./snow.sh
) en bewonder uw terminal.
Onderbreek het script (sneeuwen) met de sneltoets Ctrl + C.
#!/bin/bash
LINES=$(tput lines)
COLUMNS=$(tput cols)
declare -A snowflakes
declare -A lastflakes
clear
function move_flake() {
i="$1"
if [ "${snowflakes[$i]}" = "" ] || [ "${snowflakes[$i]}" = "$LINES" ]; then
snowflakes[$i]=0
else
if [ "${lastflakes[$i]}" != "" ]; then
printf "\033[%s;%sH \033[1;1H " ${lastflakes[$i]} $i
fi
fi
printf "\033[%s;%sH*\033[1;1H" ${snowflakes[$i]} $i
lastflakes[$i]=${snowflakes[$i]}
snowflakes[$i]=$((${snowflakes[$i]}+1))
}
while :
do
i=$(($RANDOM % $COLUMNS))
move_flake $i
for x in "${!lastflakes[@]}"
do
move_flake "$x"
done
sleep 0.1
done