BASH
70 2>&1 71 # Redirige lo stderr allo stdout. 72 # I messaggi d'errore vengono visualizzati a video, ma come stdout. 73 74 i>&j 75 # Redirige il descrittore di file i in j. 76 # Tutti gli output del file puntato da i vengono inviati al file 77 #+ puntato da j. 78 79 >&j 80 # Redirige, per default, il descrittore di file 1 (lo stdout) in j. 81 # Tutti gli stdout vengono inviati al file puntato da j. 82 83 0< NOMEFILE 84 < NOMEFILE 85 # Riceve l'input da un file. 86 # È il compagno di ">" e vengono spesso usati insieme. 87 # 88 # grep parola-da-cercare <nomefile 89 90 91 [j]<>nomefile 92 # Apre il file "nomefile" in lettura e scrittura, e gli assegna il 93 #+ descrittore di file "j". 94 # Se il file "nomefile" non esiste, lo crea. 95 # Se il descrittore di file "j" non viene specificato, si assume per 96 #+ default il df 0, lo stdin. 97 # 98 # Una sua applicazione è quella di scrivere in un punto specifico 99 #+ all'interno di un file.
100 echo 1234567890 > File # Scrive la stringa in "File". 101 exec 3<> File # Apre "File" e gli assegna il df 3. 102 read -n 4 <&3 # Legge solo 4 caratteri. 103 echo -n . >&3 # Scrive il punto decimale dopo i 104 #+ caratteri letti. 105 exec 3>&- # Chiude il df 3. 106 cat File # ==> 1234.67890 107 # È l'accesso casuale, diamine. 108 109 | 110 # Pipe. 111 # Strumento generico per concatenare processi e comandi. 112 # Simile a ">", ma con effetti più generali. 113 # Utile per concatenare comandi, script, file e programmi. 114 cat *.txt | sort | uniq > file-finale 115 # Ordina gli output di tutti i file .txt e cancella le righe doppie, 116 # infine salva il risultato in "file-finale".
Bourne Again SHell (Bash)
- interprete comandi Linux/Unix
Rinominare tutti i files/dirs to Title case, capitalize, first character-letter upper case (maiuscole)
for a in *; do echo "$a"; mv "$a" "`echo "$a" | ruby -n -e 'puts $_.capitalize'`" ; done
- Lista solo le directory
ls -d */.
- Ridirezionare Std Output & Std Error in un file:
comando 2>&1 | tee /tmp/comando_output.txt
Comandi Utili
tac:: Reverse lines of files cat -n:: Numbering lines cat -b:: Numbering non-blank lines wc -c:: Counting chars wc -w:: Counting words wc -l:: Counting lines head:: Printing the first lines tail:: Printing the last lines uniq:: Make duplicate lines unique uniq -d:: Print duplicated lines of input uniq -u:: Remove all duplicated lines cat -s:: Squeezing blank lines
- Aliases
Un alias serve per associare a un comando una serie di comandi e parametri come segue:
[xunil@elwood games]$ alias alias k1='kill -9 %1' alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' alias ls='ls --color=tty' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' alias zombie='ssh -X root@zombie'
Grep
greppare tra due linee di cui si conosce il testo: (univoco)
start=`ffmpeg -formats 2>/dev/null |grep -n '^Codecs:'|awk -F":" '{print $1}'`; echo $start; stop=`ffmpeg -formats 2>/dev/null|grep -n '^Supported file protocols:'|awk -F":" '{print $1}'`; echo $stop ; let end=${stop}-${start}; echo $end; ffmpeg -formats 2>/dev/null|head -${stop}|tail -${end}