Trucuri similare aici: http://stressat.blogspot.com/2011/11/cli-tricks.html
Corectare greșeli de tastare. Ați scris sl în loc de ls, puneți cursorul pe l (ultimul caracter) și apasați Ctrl+t, va inversa ordinea literelor, deci veți avea comanda dorită: ls. Ctrl+t inversează ordinea ultimelor două caractere. Valabil și pentru cazuri precum: pacmna in loc de pacman, neapăsare Space între comandă și parametri, etc.
Pentru a inversa ordinea ultimelor două cuvinte: Esc+t.
PBTORRENT
Dacă folosiți un client de torrente CLI, gen rtorrent, v-ar prinde bine o aplicație care să caute și descarce torrentele dorite. Pbtorrent este un script care permite acest lucru.
Instalați pbtorrent (yaourt -S pbtorrent în Arch Linux), porniți în terminal aplicația (pbtorrent parametri fișier-căutat, de exemplu pbtorrent v The.Big.Bang.Theory). Parametriii sunt categoria de căutare și categoria de sortare. Putem specifica categoria în care se va căuta:
a= audio
v= video
s= software
g= jocuri
x= orice altceva
A= toate categoriile
De asemenea putem alege, specifica și ordinea sortării rezultatelor:
s= numărul de seederi
z= dimensiune
r= relevanță, criteriul implicit de sortare
Dacă folosim ambele categorii de parametri, categoria va fi prima în sintaxă.
Parametrul A necesită obligatoriu un termen de căutare (nume fișier), ceilalți parametri pot fi folosiți fără termen de căutare, afișând toate rezultatele găsite pe http://thepiratebay.org/ .
Fișierul torrent va fi descărcat în directorul /home, sub numele pb_număr_torrent.torrent (pb1.torrent, pb3.torrent, etc), pentru a fi descărcat de rtorrent e suficient să-l copiem în watch. Ar fi bine să schimbați directorul de destinație al torrentelor (watch), să fie același director de unde rtorrent caută fișierele torrent pentru download. Editați fișierul (sudo nano /usr/bin/pbtorrent) și înlocuiți linia:
wget -U "$userid" -qO ${watchdir}/pb${l}.torrent "${torrenturl[$l]}" && echo "${torrenturl[$l]} downloaded."
cu:
wget -U "$userid" -qO ${watchdir}/watch/pb${l}.torrent "${torrenturl[$l]}" && echo "${torrenturl[$l]} downloaded."
Închidem pbtorrent cu q și Enter sau Ctrl+c.
SUBMARINE
Presupunem că aveți un film dar nu aveți subtitrare. Instalați submarine, utilitar cu care căutăm și descărcăm subtitrări potrivite.
Instalați submarine (yaourt -S submarine pentru Arch), deschideți o consolă/ terminal și dați comanda: submarine -l ro nume-film, de exemplu submarine -l ro submarine -l ro Videos/Carjacked.2011.BRRip.XviD-ROMANIAN-ZONE/Carjacked.2011.BRRip.XviD-ROMANIAN-ZONE.avi), iar submarine va căuta și descărca în același director cu fișierul video subtitrarea potrivită în limba română, o va redenumi exact după numele filmului. Dacă doriți subtitrarea în altă limbă înlocuiți ro cu de (germană), hu (maghiară), etc...
UNITS
Putem face conversii între unități de măsură cu units.
Evitare inregistrare comandă dată în history (doar în sesiunea curentă va apărea în history):
spațiu comandă
Ștergere rapidă a conținutului unui fișier, fără editare:
Schimbare locație, executare comandă in noul director și reintoarcere automată în vechiul director (punem comenzile intre paranteze):
(cd $DIR && comandă) de exemplu: (cd Video/filme && rm -rf nume-director)
Urmăriți Star Wars (ASCII) în terminal :
Pentru a fi anuntați sonor în momentul când o adresă IP e online:
ping -i 60 -a IP_address (-i 60 inseamnă că veți fi anuntați după 60 secunde, -a reprezintă semnalul sonor)
Căutarea în history a celor mai utilizate 10 comenzi CLI folosite:
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10
sau
Vreți să fie afișate într-un grafic? Instalați gnuplot și dați comanda:
HISTTIMEFORMAT='' history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head > /tmp/cmds ; gnuplot -persist <<<'plot "/tmp/cmds" using 1:xticlabels(2) with boxes'
Evident că în această formă este destul de dificil de memorat și folosit, de aceea putem crea o funcție bash în .bashrc:
#Traducere
trans () {
wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$1+$2+$3+$4+$5+$6+$7+$8+$9+${10}&sl=auto&tl=ro" | sed 's/\[\[\[\"//' | cut -d \" -f 1
}
iar comanda trans text-de-tradus va face ce dorim.
După ceva căutări și încercări am ajuns la o variantă mai elegantă (și care poate lucra cu mai mult de 10 termeni, las totuși și prima variantă pentru a vedea și altă modalitate):
#Traducere
trans () {
for ARG in "$*"
do
wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$ARG&sl=auto&tl=ro" | sed 's/\[\[\[\"//' | cut -d \" -f 1
done
}
În cazul în care doriți să traduceți din română în engleză (sau altă limbă), trebuie înlocuit auto (engleza folosită implicit) cu ro (română) și ro cu en (engleză) sau altă limbă (de, tr, hu, ru, șamd). Funcția va arăta așa:
tradu () {
for ARG in "$*"
do
wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$ARG&tl=en" | sed 's/\[\[\[\"//' | cut -d \" -f 1
done
}
iar comanda tradu text de tradus în engleză vă va furniza traducerea dorită.
Funcția tratează termenii global, deci e bună pentru propoziții, fraze, etc, dacă doriți traducerea mai multor cuvinte independente, înlocuiți "$*" cu "$@" .
Dati o comanda eludând aliasurile:
Corectare greșeli de tastare. Ați scris sl în loc de ls, puneți cursorul pe l (ultimul caracter) și apasați Ctrl+t, va inversa ordinea literelor, deci veți avea comanda dorită: ls. Ctrl+t inversează ordinea ultimelor două caractere. Valabil și pentru cazuri precum: pacmna in loc de pacman, neapăsare Space între comandă și parametri, etc.
Pentru a inversa ordinea ultimelor două cuvinte: Esc+t.
PBTORRENT
Dacă folosiți un client de torrente CLI, gen rtorrent, v-ar prinde bine o aplicație care să caute și descarce torrentele dorite. Pbtorrent este un script care permite acest lucru.
Instalați pbtorrent (yaourt -S pbtorrent în Arch Linux), porniți în terminal aplicația (pbtorrent parametri fișier-căutat, de exemplu pbtorrent v The.Big.Bang.Theory). Parametriii sunt categoria de căutare și categoria de sortare. Putem specifica categoria în care se va căuta:
a= audio
v= video
s= software
g= jocuri
x= orice altceva
A= toate categoriile
De asemenea putem alege, specifica și ordinea sortării rezultatelor:
s= numărul de seederi
z= dimensiune
r= relevanță, criteriul implicit de sortare
Dacă folosim ambele categorii de parametri, categoria va fi prima în sintaxă.
Parametrul A necesită obligatoriu un termen de căutare (nume fișier), ceilalți parametri pot fi folosiți fără termen de căutare, afișând toate rezultatele găsite pe http://thepiratebay.org/ .
Fișierul torrent va fi descărcat în directorul /home, sub numele pb_număr_torrent.torrent (pb1.torrent, pb3.torrent, etc), pentru a fi descărcat de rtorrent e suficient să-l copiem în watch. Ar fi bine să schimbați directorul de destinație al torrentelor (watch), să fie același director de unde rtorrent caută fișierele torrent pentru download. Editați fișierul (sudo nano /usr/bin/pbtorrent) și înlocuiți linia:
wget -U "$userid" -qO ${watchdir}/pb${l}.torrent "${torrenturl[$l]}" && echo "${torrenturl[$l]} downloaded."
cu:
wget -U "$userid" -qO ${watchdir}/watch/pb${l}.torrent "${torrenturl[$l]}" && echo "${torrenturl[$l]} downloaded."
Închidem pbtorrent cu q și Enter sau Ctrl+c.
SUBMARINE
Presupunem că aveți un film dar nu aveți subtitrare. Instalați submarine, utilitar cu care căutăm și descărcăm subtitrări potrivite.
Instalați submarine (yaourt -S submarine pentru Arch), deschideți o consolă/ terminal și dați comanda: submarine -l ro nume-film, de exemplu submarine -l ro submarine -l ro Videos/Carjacked.2011.BRRip.XviD-ROMANIAN-ZONE/Carjacked.2011.BRRip.XviD-ROMANIAN-ZONE.avi), iar submarine va căuta și descărca în același director cu fișierul video subtitrarea potrivită în limba română, o va redenumi exact după numele filmului. Dacă doriți subtitrarea în altă limbă înlocuiți ro cu de (germană), hu (maghiară), etc...
UNITS
Putem face conversii între unități de măsură cu units.
Evitare inregistrare comandă dată în history (doar în sesiunea curentă va apărea în history):
spațiu comandă
Ștergere rapidă a conținutului unui fișier, fără editare:
> fișier.txt
Schimbare locație, executare comandă in noul director și reintoarcere automată în vechiul director (punem comenzile intre paranteze):
(cd $DIR && comandă) de exemplu: (cd Video/filme && rm -rf nume-director)
Urmăriți Star Wars (ASCII) în terminal :
telnet towel.blinkenlights.nl
Pentru a fi anuntați sonor în momentul când o adresă IP e online:
ping -i 60 -a IP_address (-i 60 inseamnă că veți fi anuntați după 60 secunde, -a reprezintă semnalul sonor)
Căutarea în history a celor mai utilizate 10 comenzi CLI folosite:
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10
sau
history | awk '{a[$'$(echo "1 2 $HISTTIMEFORMAT" | wc -w)']++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
HISTTIMEFORMAT='' history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head > /tmp/cmds ; gnuplot -persist <<<'plot "/tmp/cmds" using 1:xticlabels(2) with boxes'
Salvare ultima comandă executată într-un fișier:
echo "!!" > nume-fișier
Traducere text:
wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=translation+example&sl=auto&tl=ro" | sed 's/\[\[\[\"//' | cut -d \" -f 1
Inlocuiți text cu textul propriu zis, la tl (tl= target language= limba în care se va traduce, iar sl= source language= limba din care se traduce)) este ro pentru română, puneți de pentru germană, hu pentru maghiară, etc.
#Traducere
trans () {
wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$1+$2+$3+$4+$5+$6+$7+$8+$9+${10}&sl=auto&tl=ro" | sed 's/\[\[\[\"//' | cut -d \" -f 1
}
iar comanda trans text-de-tradus va face ce dorim.
După ceva căutări și încercări am ajuns la o variantă mai elegantă (și care poate lucra cu mai mult de 10 termeni, las totuși și prima variantă pentru a vedea și altă modalitate):
#Traducere
trans () {
for ARG in "$*"
do
wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$ARG&sl=auto&tl=ro" | sed 's/\[\[\[\"//' | cut -d \" -f 1
done
}
tradu () {
for ARG in "$*"
do
wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$ARG&tl=en" | sed 's/\[\[\[\"//' | cut -d \" -f 1
done
}
iar comanda tradu text de tradus în engleză vă va furniza traducerea dorită.
Funcția tratează termenii global, deci e bună pentru propoziții, fraze, etc, dacă doriți traducerea mai multor cuvinte independente, înlocuiți "$*" cu "$@" .
Salvează output ultima comandă ca imagine:
comandă | convert label:@- imagine.png
ifconfig | convert label:@- ip.png
\comanda
Etichetarea unei comenzi lungi, complicate este un inlocuitor pentru aliasuri sau funcții bash:
comandă-complicată-cu-mulți parametri # etichetă
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 30 -s 1280x960 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 captura.avi # captură
Urmatoarea tură cand vrem sa folosim comanda apăsăm Ctrl+r și scriem eticheta: Ctrl+r captură.
Realizarea unei imagini .iso de pe un cd/ dvd:
dd if=/dev/sr0 of=/cale/către/imagine.iso
dd if=/dev/sr0 of=/cale/către/imagine.iso
readom dev=/dev/sr0 f=/cale/către/imagine.iso
Creati un director cu tot cu directoarele intermediare:
mkdir -p /cale/catre/director
De exemplu vrem sa cream in director /home/user/Videos/filme/noi/seriale, dar ultima veriga intermediara este Videos, nu exista Videos/filme, nici Videos/filme/noi, parametrul -p va crea si "parintii", intermediarii.
De asemenea se pot crea multiple subdirectoare cu tot cu verigile intermediare:
mkdir -p Director-nou/{d1,d2}/{bac,bin,src} va crea directorul Director-nou cu subdirectoarele d1 și d2 și în fiecare din aceste două directoare (d2 și d2) subdirectoarele bac, bin și src.
De asemenea se pot crea multiple subdirectoare cu tot cu verigile intermediare:
mkdir -p Director-nou/{d1,d2}/{bac,bin,src} va crea directorul Director-nou cu subdirectoarele d1 și d2 și în fiecare din aceste două directoare (d2 și d2) subdirectoarele bac, bin și src.
Modificare permisiuni fișier în raport cu alt fișier (fișier2 să aibă exact aceleași permisiuni/ drepturi/ proprietar... ca fișier1):
chmod --reference fișier1 fișier2 sau
chown --reference fișier1 fișier2 sau
chgrp --reference fișier1 fișier2
Redenumire fișiere ce conțin spații în nume cu alt caracter:
rename 'y/ /_/' * (va inlocui în numele tuturor fișierelor din directorul curent spațiile cu _ )
rename 'y/ /-/' * (va înlocui spațiile cu - )
rename 'y/ /./' * (va înlocui spațiile cu puncte . )
Redenumire fișiere din majuscule in minuscule:
Inlocuire recursivă a unui termen de căutare cu alt termen:
Faceți terminalul să ”cânte”...
rename 'y/ /_/' * (va inlocui în numele tuturor fișierelor din directorul curent spațiile cu _ )
rename 'y/ /-/' * (va înlocui spațiile cu - )
rename 'y/ /./' * (va înlocui spațiile cu puncte . )
Redenumire fișiere din majuscule in minuscule:
rename 'y/A-Z/a-z/' *
Inlocuire recursivă a unui termen de căutare cu alt termen:
grep -rl termen-vechi . |xargs sed -i -e 's/termen-vechi/termen-nou/'
Comanda caută în toate fișierele din directorul curent.Faceți terminalul să ”cânte”...
echo {1..199}"text-de-reprodus,, " | espeak -v english -s 140
echo {1..199}" bottles of beer on the wall, cold bottle of beer, take one down, pass it around, one less bottle of beer on the wall,, " | espeak -v english -s 140
Evident că e posibil același lucru în română, setând limba (espeak -v romanian 140) și pasând un text în română.
echo {2..10}" elefanți se legănau, pe o pânză de pâianjen, și fiindcă ea nu se rupea, a mai venit un elefant,, " | espeak -v romanian -s 140
ATENȚIE: dacă una din aceste comenzi returnează erori de genul:
bash: espeak: command not found
trebuie instalat pachetul respectiv!!!
echo {2..10}" elefanți se legănau, pe o pânză de pâianjen, și fiindcă ea nu se rupea, a mai venit un elefant,, " | espeak -v romanian -s 140
ATENȚIE: dacă una din aceste comenzi returnează erori de genul:
bash: espeak: command not found
trebuie instalat pachetul respectiv!!!