English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La plupart des commandes des systèmes UNIX acceptent des entrées depuis votre terminal et renvoient les sorties générées vers votre terminal. Une commande lit généralement les entrées à partir d'un endroit appelé entrée standard, par défaut, cela est votre terminal. De même, une commande écrit généralement ses sorties dans la sortie standard, par défaut, c'est aussi votre terminal.
Liste des commandes de redirection :
Commande | Description |
---|---|
command > file | Rediriger la sortie vers file. |
command < file | Rediriger l'entrée vers file. |
command >> file | Rediriger la sortie en mode append vers file. |
n > file | Rediriger le fichier dont le descripteur est n vers file. |
n >> file | Rediriger le fichier dont le descripteur est n en mode append vers file. |
n >& m | Fusionner les fichiers de sortie m et n. |
n <& m | Fusionner les fichiers d'entrée m et n. |
<< tag | Prendre le contenu entre les balises de début tag et de fin tag comme entrée. |
Il convient de noter que le descripteur de fichier 0 est généralement l'entrée standard (STDIN),1 C'est la sortie standard (STDOUT),2 C'est la sortie d'erreur standard (STDERR).
La redirection est généralement réalisée en insérant des symboles spécifiques entre les commandes. En particulier, la syntaxe de ces symboles est indiquée comme suit :
commande1 > file1
Cette commande exécute le command1Puis stockez le contenu de la sortie dans un fichier1.
Attention à tout fichier1Le contenu existant à l'intérieur sera remplacé par le nouveau contenu. Si vous souhaitez ajouter de nouveaux contenus à la fin du fichier, utilisez l'opérateur >>.
Exécutez la commande who suivante, qui redirige l'output complet de la commande dans le fichier utilisateur (users) :
$ who > users
Après exécution, il n'y a pas d'informations affichées dans le terminal, car la sortie a été redirigée vers le fichier spécifié à partir de l'équipement de sortie standard (terminal) par défaut.
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
La redirection de sortie remplace le contenu du fichier, voir l'exemple suivant :
$ echo "Base Tutorial Website : fr.oldtoolbag.com" > users $ cat users Base Tutorial Website : fr.oldtoolbag.com $
Si vous ne souhaitez pas que le contenu du fichier soit remplacé, vous pouvez utiliser >> pour l'ajouter à la fin du fichier, par exemple :
$ echo "Base Tutorial Website : fr.oldtoolbag.com" >> users $ cat users Base Tutorial Website : fr.oldtoolbag.com Base Tutorial Website : fr.oldtoolbag.com $
Comme pour la redirection de sortie, les commandes Unix peuvent également obtenir des entrées à partir de fichiers, la syntaxe étant la suivante :
commande1 < file1
De cette manière, les commandes qui auraient dû être saisies à partir du clavier peuvent être transférées pour lire le contenu d'un fichier.
Attention : la redirection de sortie est indiquée par le signe >, et la redirection d'entrée par le signe <.
Poursuivant l'exemple précédent, nous devons compter le nombre de lignes du fichier users, exécuter la commande suivante :
$ wc -l users 2 users
Vous pouvez également rediriger l'entrée vers le fichier users :
$ wc -l < users 2
Attention : les résultats des deux exemples ci-dessus sont différents : dans le premier exemple, le nom du fichier est affiché ; dans le second, cela ne le fait pas, car il ne sait que lire du contenu à partir de l'entrée standard.
commande1 < infile > outfile
Remplacez à la fois l'entrée et la sortie pour exécuter la commande1,lit le contenu du fichier infile, puis écrit la sortie dans outfile.
En règle générale, chaque Unix/Les commandes Linux ouvrent toujours trois fichiers au moment de l'exécution :
Fichier d'entrée standard (stdin) : le descripteur de fichier de stdin est 0, les programmes Unix lisent des données par défaut à partir de stdin.
Fichier de sortie standard (stdout) : le descripteur de fichier de stdout est1,les programmes Unix exportent des données par défaut vers stdout.
Fichier de sortie d'erreur standard (stderr) : le descripteur de fichier de stderr est2,les programmes Unix écrivent des informations d'erreur dans le flux stderr.
Par défaut, commande > fichier redirige stdout vers le fichier, commande < fichier redirige stdin vers le fichier.
Si vous souhaitez rediriger stderr vers le fichier, vous pouvez écrire ainsi :
$ commande 2>fichier
Si vous souhaitez que stderr soit ajouté à la fin du fichier fichier, vous pouvez écrire ainsi :
$ commande 2>>fichier
2 représente le fichier de sortie d'erreur standard (stderr).
Si vous souhaitez rediriger stdout et stderr vers un fichier, vous pouvez écrire ainsi :
$ commande > fichier 2>&1 ou $ commande >> fichier 2>&1
Si vous souhaitez rediriger stdin et stdout, vous pouvez écrire ainsi :
$ commande < fichier1 >fichier2
La commande 'commande' redirige stdin vers le fichier1,rediriger stdout vers le fichier2.
Here Document est une redirection spéciale dans Shell, utilisée pour rediriger l'entrée vers un script ou un programme Shell interactif.
Sa forme de base est la suivante :
commande << delimiter document delimiter
Son action est de transmettre le contenu (document) entre deux delimiters en tant qu'entrée pour la commande.
Attention :
Le delimiter à la fin doit être aligné à gauche, sans aucun caractère avant ou après, y compris les espaces et les tabulations.
Les espaces avant et après le delimiter sont ignorés.
Par le biais de wc en ligne de commande -La commande l commande compte le nombre de lignes du Here Document :
$ wc -l << EOF Bienvenue sur Réseau de tutoriels de base fr.oldtoolbag.com EOF 3 # Résultat de la sortie 3 ligne $
Nous pouvons également utiliser Here Document dans des scripts, par exemple :
#!/bin/bash # auteur:Réseau de tutoriels de base # url:fr.oldtoolbag.com cat << EOF Bienvenue sur Réseau de tutoriels de base fr.oldtoolbag.com EOF
Exécutez le script suivant, le résultat est :
Bienvenue sur Réseau de tutoriels de base fr.oldtoolbag.com
Si vous souhaitez exécuter une commande mais ne souhaitez pas afficher le résultat de la sortie sur l'écran, vous pouvez rediriger la sortie vers /dev/null :
$ command > /dev/null
/dev/null est un fichier spécial, tout ce qui est écrit dans ce fichier sera rejeté ; si vous essayez de lire le contenu de ce fichier, vous ne recevrez rien. Mais /dev/Le fichier null est très utile, redirigez-y la sortie de la commande pour obtenir l'effet d'"interdire l'output".
Si vous souhaitez masquer stdout et stderr, vous pouvez écrire ainsi :
$ command > /dev/null 2>&1
Attention :0 est l'entrée standard (STDIN),1 C'est la sortie standard (STDOUT),2 C'est la sortie d'erreur standard (STDERR).
ici 2 et > Ne peut pas y avoir d'espaces entre2> Cela signifie que c'est une sortie d'erreur lorsque c'est intégré.