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).