Latest web development tutorials

redirection d'entrée Shell / sortie

La plupart des systèmes UNIX d'accepter des commandes à partir de votre borne d'entrée et de sortie généré est renvoyé à votre terminal. Une commande généralement lu à partir d'une entrée locale appelée entrée standard, par défaut, cela arrive à être votre terminal. De même, une commande écrit habituellement sa sortie sur la sortie standard, par défaut, ceci est votre terminal.

Rediriger liste de commande est la suivante:

commandement explication
commande> fichier Rediriger la sortie vers un fichier.
commande <file Rediriger entrée dans le fichier.
commande >> fichier La sortie pour être redirigé vers le fichier appending.
n> fichier Le descripteur de fichier pour les n fichiers redirigés vers un fichier.
n >> fichier Le descripteur fichier n de déposer des moyens supplémentaires pour rediriger le fichier.
n> & m Le m de fichier de sortie et n sont fusionnés.
n <& m Le m de fichier d'entrée et n sont fusionnés.
<< Tag Le contenu balise tag balise de début et la balise de fin entre en entrée.

Notez que le descripteur de fichier 0 est généralement l'entrée standard (STDIN), 1 est la sortie standard (STDOUT), 2 est la sortie d'erreur standard (STDERR).


redirection de sortie

Rediriger typiquement par entre commande pour insérer des symboles spécifiques à atteindre. En particulier, ces symboles représentés dans la syntaxe suivante:

command1 > file1

La commande ci-dessus va exécuter commande1 puis sortie le contenu stocké dans file1.

File1 Notez que tout contenu qui existe déjà sera remplacé par le nouveau contenu. Si vous voulez ajouter du nouveau contenu à la fin du fichier, utilisez l'opérateur >>.

Exemples

Exécutez la commande suivante qui terminent ce sera rediriger la sortie d'une commande dans les fichiers utilisateur (utilisateurs):

$ who > users

Après l'exécution, il n'y a pas de sortie au niveau du terminal, il est parce que la sortie a été redirigée à partir du périphérique par défaut de sortie standard (terminal) dans le fichier spécifié.

Vous pouvez utiliser la commande cat pour afficher le contenu du fichier:

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

redirection de sortie écrase le contenu du fichier, voir l'exemple suivant:

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

Si vous ne voulez pas le contenu du fichier est écrasé, vous pouvez utiliser le >> ajouter à un fichier, par exemple:

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

redirection d'entrée

Et comme la redirection de sortie, commande Unix peut prendre en entrée un fichier, la syntaxe est:

command1 < file1

Ainsi, le besoin d'origine pour obtenir les entrées du clavier sera transféré dans le fichier de commande pour lire le contenu.

Remarque: La redirection de sortie symbole supérieur (>), la redirection d'entrée est inférieur à (<).

Exemples

Ensuite, l'exemple ci-dessus, nous avons besoin de compter le nombre de lignes fichier d'utilisateurs, exécutez la commande suivante:

$ wc -l users
       2 users

Vous pouvez également rediriger les fichiers d'entrée pour les utilisateurs:

$  wc -l < users
       2 

Remarque: Les résultats des deux exemples ci-dessus sont différents: le premier exemple, le nom du fichier de sortie, le second ne sera pas, parce qu'il sait que lire l'entrée standard.

command1 < infile > outfile

Remplacer les entrées et sorties, exécuter commande1, infile lire le fichier, puis écrire la sortie du outfile.

Rediriger explication de profondeur

Dans des circonstances normales, chaque commande Unix / Linux pistes ouvriront trois fichiers:

  • fichier d'entrée standard (stdin): descripteur de fichier stdin à 0, le programme par défaut Unix lit les données à partir de stdin.
  • fichier standard de sortie (stdout): stdout au descripteur de fichier 1, programme Unix par défaut des données de sortie de stdout.
  • erreur standard (stderr): stderr descripteur de fichier à 2, le programme Unix écrit des messages d'erreur au flux stderr.

Par défaut, la commande> fichier de redirection stdout vers un fichier, commande <fichier STDIN redirigé vers un fichier.

Si vous souhaitez rediriger stderr vers le fichier, vous pouvez écrire:

$ command 2 > file

Si vous voulez ajouter à la fin du fichier fichier stderr, vous pouvez écrire:

$ command 2 >> file

2 représente le fichier d'erreur standard (stderr).

Si vous souhaitez fusionner après la stdout et stderr redirigé vers le fichier, vous pouvez écrire:

$ command > file 2>&1

或者

$ command >> file 2>&1

Si vous souhaitez rediriger stdin et stdout, vous pouvez écrire:

$ command < file1 >file2

commande de commande stdin redirigé vers file1, rediriger stdout vers file2.


Voici le document

Ici document Shell se trouve dans une des méthodes de redirection spéciales utilisées pour rediriger l'entrée à un script Shell interactif ou programme.

Sa forme de base est la suivante:

command << delimiter
    document
delimiter

Il est le rôle du contenu (document) est transmis aux deux delimiter entre commande comme entrée.

Remarque:

  • Fin délimiteur doit être la grille supérieure écriture, ne peut pas avoir l'un des personnages devant le dos ne peut pas avoir des caractères, espaces compris et onglet indentation.
  • Les espaces avant et après le délimiteur de début est ignoré.

Exemples

Le nombre de lignes dans la ligne de commande informatique Voici le document par la commande -l wc:

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

Nous pouvons également ici le document utilisé dans un script, par exemple:

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

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

Mise en œuvre du script ci-dessus, la sortie:

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

/ Dev fichier / null

Si vous voulez exécuter une commande, mais ne veulent pas afficher la sortie sur l'écran, vous pouvez rediriger la sortie vers / dev / null:

$ command > /dev/null

/ Dev / null est un fichier spécial, son contenu sont écrits pour être mis au rebut, si vous essayez de lire à partir du fichier, alors ce ne peut pas lire. Cependant, fichier / dev / null est très utile pour rediriger la sortie de la commande à elle, il agira comme un effet «d'interdire la sortie".

Si vous voulez protéger stdout et stderr, vous pouvez écrire:

$ command > /dev/null 2>&1

Note: 0 est l'entrée standard (STDIN), 1 est la sortie standard (STDOUT), 2 est la sortie d'erreur standard (STDERR).