Faceți căutări pe acest blog

luni, 16 ianuarie 2012

CLI tricks 2

  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:
> 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
 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'


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.
 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 "$@" .



 Salvează output ultima comandă ca imagine:
comandă | convert label:@- imagine.png
ifconfig | convert label:@- ip.png


 Dati o comanda eludând aliasurile:
\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
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.


 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:
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!!!

14 comentarii:

  1. " Realizarea unei imagini .iso de pe un cd/ dvd:
    readom dev=/dev/sr0 f=/cale/către/imagine.iso"
    merge si cu dd:
    dd if=/dev/sr0 of=/locatie/imagine.iso

    RăspundețiȘtergere
  2. Da, știu, dar mi s-a părut mai ”cool” readom... Hai că trec și varianta cu dd, să fie!

    RăspundețiȘtergere
  3. Ai dreptate, mai ales c-am mai folosit dd, problema principală e c-am înțeles că dd mai dă erori la chestia asta câteodată. Sincer mie mi-a mers ok cu dd, dar cine știe...

    RăspundețiȘtergere
  4. Dacă doriți să cautați un fișier cu nume complex cu ajutorul pbtorrent apelați la ""
    Ex.
    pbtorrent v "earth's final hours"

    RăspundețiȘtergere
  5. Nu, o să mă interesez puțin ce are, bănuiesc că-i vreun update, ceva... :(

    RăspundețiȘtergere
  6. @calvar: modifică te rog în /usr/bin/pbtorrent adresa site-ului, din thepiratebay.org în thepiratebay.se, deci înlocuiești .org cu .se, recomand kwrite cu Replace, le înlocuiești pe toate dintr-o lovitură. Baftă!
    http://i.imgur.com/ky6I4.jpg

    RăspundețiȘtergere
  7. Această rezolvare a găsito și @nkn.
    Prefer sa lucrez în cli:

    sudo sed -i 's/.org/.se/g'

    mulțumesc.

    RăspundețiȘtergere
  8. thepiratebay.se nu mai ține *.torrent , are doar magnet link, deci pbtorrent este nefuncțional.

    RăspundețiȘtergere
  9. Ok, mulțumesc pentru vești.
    O să văd ce și cum, deocamdată tocmai mi-am luat laptop, așa că acum instalez, setez, configurez, etc în draci, încerc Mandriva 2011.0 (SUPERBĂ!!!, o bijuterie, totul recunoscut out of the box!!!!, card reader, bluetoth, difuzoare, microfon, webcam, wireless, bla-bla), urmează Arch-ul.
    Plus ceva treburi casnice! Revin săptămâna viitoare cu noutăți (dacă nu cumva revii tu! :D ).

    RăspundețiȘtergere
  10. Comandă pentru suspendare sesiune:

    echo mem|sudo tee /sys/power/state

    Un site care colectează comenzi... e super! deși îl știu de mult timp, îl redescoper cu plăcere.
    http://www.commandlinefu.com/commands/browse

    RăspundețiȘtergere
  11. Încă în dezvoltare un script bash de cautare si inocularea legaturilor magnet într-un manager de torrente: pirate-cli

    RăspundețiȘtergere

Back to top