Latest web development tutorials

Ingresso Shell / reindirizzamento uscita

La maggior parte dei sistemi UNIX per accettare i comandi dal terminale di ingresso e di uscita generato viene inviato di nuovo al vostro terminale. Un comando di solito leggere da un ingresso locale chiamata standard input, per impostazione predefinita, questo sembra essere il terminale. Allo stesso modo, un comando di solito scrive il suo output sullo standard output, per impostazione predefinita, questo è il vostro terminale.

Redirect lista di comandi è il seguente:

comando spiegazione
comando> file Reindirizzare l'output in un file.
il comando <file Reindirizzare input per il file.
comando >> file L'uscita per essere reindirizzato al file accodamento.
n> file Il descrittore di file per i file n reindirizzati in un file.
n >> file Il descrittore di file n su file modi per reindirizzare il file.
n> & m Il file di output m e n sono fuse.
n <& m Il file di input m e n sono fuse.
<< Tag Il contenuto tag tag tag iniziale e il tag finale tra come input.

Si noti che il descrittore di file 0 è di solito standard input (STDIN), 1 è lo standard di uscita (STDOUT), 2 è l'uscita errore standard (STDERR).


redirezione di uscita

Redirect in genere tra il comando per inserire simboli specifici da raggiungere. In particolare, questi simboli riportati nella seguente sintassi:

command1 > file1

Il comando precedente eseguirà command1 e poi in uscita il contenuto memorizzato in file1.

File1 Si noti che qualsiasi contenuto che è già esistente verrà sostituito dal nuovo contenuto. Se si desidera aggiungere nuovi contenuti alla fine del file, utilizzare l'operatore >>.

Esempi

Eseguire il seguente comando che completano sarà reindirizzare l'output di un comando nei file utente (utenti):

$ who > users

Dopo l'esecuzione, non vi è alcuna uscita al terminale, è perché l'uscita è stato reindirizzato dal dispositivo predefinito standard di uscita (terminale) per il file specificato.

È possibile utilizzare il comando cat per visualizzare il contenuto del file:

$ cat users
_mbsetupuser console  Oct 31 17:35 
tianqixin    console  Oct 31 17:35 
tianqixin    ttys000  Dec  1 11:33 

reindirizzamento output sovrascrive il contenuto del file, vedere il seguente esempio:

$ echo "本教程:www.w3big.com" > users
$ cat users
本教程:www.w3big.com
$

Se non si desidera che il contenuto del file viene sovrascritto, è possibile utilizzare il >> aggiungere a un file, ad esempio:

$ echo "本教程:www.w3big.com" >> users
$ cat users
本教程:www.w3big.com
本教程:www.w3big.com
$

redirezione dell'input

E come redirezione dell'output, comando Unix può prendere l'input da un file, la sintassi è:

command1 < file1

Quindi, la necessità originale per ricevere input dalla tastiera sarà trasferito al file di comando per leggere il contenuto.

Nota: Il reindirizzamento uscita simbolo maggiore di (>), il reindirizzamento ingresso è minore di (<).

Esempi

Poi l'esempio precedente, abbiamo bisogno di contare il numero di file di utenti righe, eseguire il seguente comando:

$ wc -l users
       2 users

È inoltre possibile reindirizzare i file di input per gli utenti:

$  wc -l < users
       2 

Nota: I risultati di questi due esempi sono diversi: il primo esempio, il nome del file di output, il secondo non sarà, perché sa solo leggere dallo standard input.

command1 < infile > outfile

Sostituire sia di input e output, eseguire command1, infile leggere dal file, e quindi scrivere l'uscita al outfile.

Redirect spiegazione approfondita

In circostanze normali, ogni comando viene eseguito Unix / Linux si apriranno tre file:

  • file standard di input (stdin): il descrittore di file stdin a 0, programma predefinito Unix legge i dati da stdin.
  • file standard output (stdout): stdout al file di descrizione 1, programma Unix default dati di output stdout.
  • Errore standard (stderr): stderr descrittore di file a 2, il programma Unix scrive i messaggi di errore di flusso stderr.

Per impostazione predefinita, il comando> file di reindirizzamento stdout a un file, il comando <file verrà STDIN reindirizzato su file.

Se si desidera reindirizzare stderr al file, è possibile scrivere:

$ command 2 > file

Se si desidera aggiungere alla fine del file stderr, è possibile scrivere:

$ command 2 >> file

2 rappresenta il file errore standard (stderr).

Se si desidera unire dopo la stdout e stderr reindirizzato al file, è possibile scrivere:

$ command > file 2>&1

或者

$ command >> file 2>&1

Se si desidera reindirizzare stdin e stdout, si può scrivere:

$ command < file1 >file2

comando comando stdin reindirizzato a file1, reindirizzare stdout al file2.


qui documento

Ecco documento Shell è in una speciale modalità di reindirizzamento utilizzato per reindirizzare input per uno script di shell interattiva o un programma.

La forma di base è il seguente:

command << delimiter
    document
delimiter

E 'il ruolo dei contenuti (documenti) vengono trasmessi ai due delimitatore tra il comando come input.

Nota:

  • Fine delimitatore deve essere la scrittura superiore della griglia, non può avere nessuno dei personaggi di fronte alla schiena non può avere qualsiasi carattere, compresi gli spazi e scheda indentazione.
  • Spazi prima e dopo il delimitatore inizio verranno ignorati.

Esempi

Il numero di righe della riga di comando di calcolo Qui Documento dal comando wc -l:

$ wc -l << EOF
    欢迎来到
    本教程
    www.w3big.com
EOF
3          # 输出结果为 3 行
$

Possiamo anche Qui documento utilizzato in uno script, per esempio:

#!/bin/bash
# author:本教程
# url:www.w3big.com

cat << EOF
欢迎来到
本教程
www.w3big.com
EOF

Attuazione dello script di cui sopra, l'uscita:

欢迎来到
本教程
www.w3big.com

File / dev / null

Se si desidera eseguire un comando, ma non vogliono per visualizzare l'output sullo schermo, è possibile reindirizzare l'output a / dev / null:

$ command > /dev/null

/ Dev / null è un file speciale, i suoi contenuti sono scritti per essere scartati, se si tenta di leggere dal file, quindi ciò che non può leggere. Tuttavia, / dev file / null è molto utile per reindirizzare l'output del comando ad esso, agirà come un effetto di "vietare l'uscita".

Se si desidera proteggere stdout e stderr, si può scrivere:

$ command > /dev/null 2>&1

Nota: 0 è l'input standard (STDIN), 1 è lo standard di uscita (STDOUT), 2 è l'uscita errore standard (STDERR).