Difference between revisions of "BASH"

From Alessandro's Wiki
(Reverted edits by Ypebezimyx (Talk) to last version by 127.0.0.1)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
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)
 
Bourne Again SHell (Bash)
* interprete comandi Linux/Unix
* interprete comandi Linux/Unix


Line 62: Line 13:
  comando 2>&1 | tee /tmp/comando_output.txt
  comando 2>&1 | tee /tmp/comando_output.txt


=== Comandi Utili ===
== mist used shell commands ==
  tac::                            Reverse lines of files
  tac::                            Reverse lines of files
  cat -n::                          Numbering lines
  cat -n::                          Numbering lines
Line 86: Line 37:
  alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  alias zombie='ssh -X root@zombie'
  alias zombie='ssh -X root@zombie'
==== Grep ====
 
== Grep ==
 
greppare tra due linee di cui si conosce il testo: (univoco)
greppare tra due linee di cui si conosce il testo: (univoco)
  start=`ffmpeg -formats 2>/dev/null |grep -n '^Codecs:'|awk -F":" '{print $1}'`;
  start=`ffmpeg -formats 2>/dev/null |grep -n '^Codecs:'|awk -F":" '{print $1}'`;
Line 95: Line 48:
  echo $end;
  echo $end;
  ffmpeg -formats 2>/dev/null|head -${stop}|tail -${end}
  ffmpeg -formats 2>/dev/null|head -${stop}|tail -${end}
== permissions! ==
* change only ''Directory'' permissions from current directory
find . -type d -exec chmod 775 {} \;
* change only ''File'' permissions from current directory.
find . -type f -exec chmod 664 {} \;
* add a user to a group (appending)
usermod -a -G agroup auser
== Redirection ==
    2>&1
      # Redirige lo stderr allo stdout.
      # I messaggi d'errore vengono visualizzati a video, ma come stdout.
    i>&j
      #  Redirige il descrittore di file i in j.
      #  Tutti gli output del file puntato da i vengono inviati al file
      #+ puntato da j.
    >&j
      # Redirige, per default, il descrittore di file 1 (lo stdout) in j. 81      # Tutti gli stdout vengono inviati al file puntato da j.
    0< NOMEFILE
      < NOMEFILE
      # Riceve l'input da un file.
      # È il compagno di ">" e vengono spesso usati insieme.
      #
      # grep parola-da-cercare <nomefile
    [j]<>nomefile
      #  Apre il file "nomefile" in lettura e scrittura, e gli assegna il
      #+ descrittore di file "j".
      #  Se il file "nomefile" non esiste, lo crea.
      #  Se il descrittore di file "j" non viene specificato, si assume per
      #+ default il df 0, lo stdin.
      #
      #  Una sua applicazione è quella di scrivere in un punto specifico
      #+ all'interno di un file.
      echo 1234567890 > File    #  Scrive la stringa in "File".
      exec 3<> File            #  Apre "File" e gli assegna il df 3.
      read -n 4 <&3            #  Legge solo 4 caratteri.
      echo -n . >&3            #  Scrive il punto decimale dopo i
                                #+ caratteri letti.
      exec 3>&-                #  Chiude il df 3.
      cat File                  #  ==> 1234.67890
      # È l'accesso casuale, diamine.
      # Pipe.
      # Strumento generico per concatenare processi e comandi.
      # Simile a ">", ma con effetti più generali.
      # Utile per concatenare comandi, script, file e programmi.
      cat *.txt | sort | uniq > file-finale
      # Ordina gli output di tutti i file .txt e cancella le righe doppie,
      # infine salva il risultato in "file-finale".

Revision as of 09:08, 6 March 2011

  • 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

mist used shell commands

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}

permissions!

  • change only Directory permissions from current directory
find . -type d -exec chmod 775 {} \;
  • change only File permissions from current directory.
find . -type f -exec chmod 664 {} \;
  • add a user to a group (appending)
usermod -a -G agroup auser

Redirection

   2>&1
      # Redirige lo stderr allo stdout.
      # I messaggi d'errore vengono visualizzati a video, ma come stdout.

    i>&j
      #  Redirige il descrittore di file i in j.
      #  Tutti gli output del file puntato da i vengono inviati al file 
      #+ puntato da j.

   >&j
     # Redirige, per default, il descrittore di file 1 (lo stdout) in j. 81       # Tutti gli stdout vengono inviati al file puntato da j.
    0< NOMEFILE
     < NOMEFILE
      # Riceve l'input da un file.
      # È il compagno di ">" e vengono spesso usati insieme.
      #
      # grep parola-da-cercare <nomefile

   [j]<>nomefile
      #  Apre il file "nomefile" in lettura e scrittura, e gli assegna il
      #+ descrittore di file "j".
      #  Se il file "nomefile" non esiste, lo crea.
      #  Se il descrittore di file "j" non viene specificato, si assume per 
      #+ default il df 0, lo stdin.
      #
      #  Una sua applicazione è quella di scrivere in un punto specifico 
      #+ all'interno di un file.
      echo 1234567890 > File    #  Scrive la stringa in "File".
      exec 3<> File             #  Apre "File" e gli assegna il df 3.
      read -n 4 <&3             #  Legge solo 4 caratteri.
      echo -n . >&3             #  Scrive il punto decimale dopo i
                                #+ caratteri letti.
      exec 3>&-                 #  Chiude il df 3.
      cat File                  #  ==> 1234.67890
      # È l'accesso casuale, diamine.
      # Pipe.
      # Strumento generico per concatenare processi e comandi.
      # Simile a ">", ma con effetti più generali.
      # Utile per concatenare comandi, script, file e programmi.
      cat *.txt | sort | uniq > file-finale
      # Ordina gli output di tutti i file .txt e cancella le righe doppie,
      # infine salva il risultato in "file-finale".