BASH

From Alessandro's Wiki
Revision as of 14:54, 18 November 2010 by Xunil (talk | contribs) (Reverted edits by Ypebezimyx (Talk) to last version by 127.0.0.1)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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}