15 caractères spéciaux que vous devez savoir pour bash
Si vous souhaitez maîtriser le shell bash sur Linux, MacOS ou un autre système de type UNIX, des caractères spéciaux (comme ~, *, | et>) sont essentiels. Nous vous aiderons à démêler ces séquences de commandes cryptiques Linux et à devenir un héros de hiéroglyphes.
Sommaire
Quels sont les caractères spéciaux?
Il y a un ensemble de caractères que le Bash Shell traite de deux manières différentes. Lorsque vous les tapez sur le shell, ils agissent comme des instructions ou des commandes et dites au shell d'effectuer une certaine fonction. Considérez-les comme des commandes à personnage à un seul caractère.
Parfois, vous voulez juste imprimer un personnage et n'en avez pas besoin pour agir comme un symbole magique. Il existe un moyen d'utiliser un personnage pour se représenter plutôt que sa fonction spéciale.
Nous vous montrerons quels personnages sont des personnages « spéciaux » ou « méta-« , ainsi que la façon dont vous pouvez les utiliser fonctionnellement et littéralement.
~ Répertoire de la maison
Le Tilde (~) est un raccourci pour votre répertoire domestique. Cela signifie que vous n'avez pas à taper le chemin complet vers votre répertoire personnel dans les commandes. Où que vous soyez dans le système de fichiers, vous pouvez utiliser cette commande pour accéder à votre répertoire domestique:
cd ~
Vous pouvez également utiliser cette commande avec des chemins relatifs. Par exemple, si vous êtes quelque part dans le système de fichiers, ce n'est pas sous votre dossier à domicile et que vous souhaitez passer au archive Répertoire dans votre work Répertoire, utilisez le Tilde pour le faire:
cd ~/work/archive
. Répertoire actuel
Une période (.) Représente le répertoire actuel. Vous le voyez dans les listes de répertoires si vous utilisez le -a (all) Option avec ls.
ls -a
Vous pouvez également utiliser la période dans les commandes pour représenter le chemin d'accès à votre répertoire actuel. Par exemple, si vous souhaitez exécuter un script à partir du répertoire actuel, vous l'appelleriez comme ceci:
./script.sh
Cela dit à Bash de regarder dans le répertoire actuel pour le script.sh déposer. De cette façon, il ne recherchera pas les répertoires de votre chemin pour faire correspondre l'exécutable ou le script.
.. Répertoire parent
La double période ou « Double Dot » (..) représente le répertoire parent de votre actuel. Vous pouvez l'utiliser pour monter un niveau dans l'arbre de répertoire.
cd ..
Vous pouvez également utiliser cette commande avec des chemins relatifs, par exemple, si vous souhaitez augmenter un niveau dans l'arborescence du répertoire, puis entrez un autre répertoire à ce niveau.
Vous pouvez également utiliser cette technique pour vous déplacer rapidement vers un répertoire au même niveau dans l'arborescence du répertoire que votre actuelle. Vous montez un niveau, puis vous le remettez en un dans un autre répertoire.
cd ../gc_help
/ Séparateur de répertoire de chemin
Vous pouvez utiliser un slash vers l'avant (/) – souvent juste appelé une barre oblique – pour séparer les répertoires dans un chemin de chemin.
ls ~/work/archive
Un slash avant représente le chemin du répertoire le plus court possible. Parce que tout dans l'arborescence du répertoire Linux commence au répertoire racine, vous pouvez utiliser cette commande pour passer rapidement au répertoire racine:
cd /
Le plus souvent, vous utilisez le hachage ou le panneau numérique (#) pour dire au shell ce qui suit est un commentaire, et il ne devrait pas agir dessus. Vous pouvez l'utiliser dans des scripts shell et – sans usage – sur la ligne de commande.
# This will be ignored by the Bash shell
Il n'est pas vraiment ignoré, cependant, car il est ajouté à votre historique de commandement.
Vous pouvez également utiliser le hachage pour couper une variable de chaîne et supprimer du texte depuis le début. Cette commande crée une variable de chaîne appelée this_string.
Dans cet exemple, nous attribuons le texte « Dave Geek! » à la variable.
this_string="Dave Geek!"
Cette commande utilise echo Pour imprimer les mots « comment être » à la fenêtre du terminal. Il récupère la valeur stockée dans la variable de chaîne via une expansion de paramètre. Parce que nous ajoutons le hachage et le texte « Dave », il coupe cette partie de la chaîne avant de passer à echo.
echo How-To ${this_string#Dave}
Cela ne modifie pas la valeur stockée dans la variable de chaîne; cela n'affecte que ce qui est envoyé à echo. Nous pouvons utiliser echo Pour imprimer à nouveau la valeur de la variable de chaîne et vérifier ceci:
echo $this_string
? Cruche à un seul caractère
Bash Shell soutient trois jokers, dont l'un est le point d'interrogation (?). Vous utilisez des caractères génériques pour remplacer les caractères dans les modèles de nom de fichiers. Un nom de fichier qui contient un joker forme un modèle qui correspond à une gamme de noms de fichiers, plutôt qu'à un seul.
Le wildcard d'interrogation représente exactement un seul personnage. Considérez le modèle de nom de fichier suivant:
ls badge?.txt
Cela se traduit par « listez n'importe quel fichier avec un nom qui commence par » badge « et est suivi par n'importe quel caractère unique avant l'extension du nom de fichier ».
Il correspond aux fichiers suivants. Notez que certains ont des chiffres et certains ont des lettres après la partie « badge » du nom de fichier. Le wildcard d'interrogation correspondra aux lettres et aux chiffres.
Ce modèle de nom de fichier ne correspond pas à « badge.txt », car le nom de fichier n'a pas un seul caractère entre « badge » et l'extension de fichier. Le wildcard des questions doit correspondre à un personnage correspondant dans le nom de fichier.
Vous pouvez également utiliser le point d'interrogation pour trouver tous les fichiers avec un nombre spécifique de caractères dans les noms de fichiers. Cela répertorie tous les fichiers texte qui contiennent exactement cinq caractères dans le nom de fichier:
ls ?????.txt
* Séquence de caractères bash
Vous pouvez utiliser l'astérisque
ls badge*
Le joker représente toute séquence de personnages, y compris aucun personnage. Considérez le modèle de nom de fichier suivant:
Cela correspond à tous les éléments suivants:
Il correspond à « badge.txt » parce que le joker représente n'importe quelle séquence de caractères ou pas de caractères.
ls source.*
Cette commande correspond à tous les fichiers appelés « source », quelle que soit l'extension de fichier.
() Set Wildcard Set Wild
Comme couvert ci-dessus, vous utilisez le point d'interrogation pour représenter un seul caractère et l'astérisque pour représenter toute séquence de caractères (y compris aucun caractères).
Vous pouvez former un joker avec les crochets (()) et les caractères qu'ils contiennent. Le personnage pertinent du nom de fichier doit ensuite correspondre au moins l'un des personnages du jeu de personnages de joker.
ls badge_0(246).txt
Dans cet exemple, la commande se traduit par: « tout fichier avec une extension » .png « , un nom de fichier commençant par » PIPES_0 « , et dans lequel le caractère suivant est soit 2, 4 ou 6. »
ls badge_(01)(789).txt
Vous pouvez utiliser plus d'un ensemble de supports par modèle de nom de fichier:
ls badge_(23)(1-5).txt
Vous pouvez également inclure des gammes dans le jeu de caractères. La commande suivante sélectionne les fichiers avec les numéros 21 à 25 et 31 à 35 dans le nom de fichier.
; Séparateur de commande shell
ls > count.txt; wc -l count.txt; rm count.txt
Vous pouvez taper autant de commandes que vous le souhaitez sur la ligne de commande, tant que vous séparez chacun d'eux avec un point-virgule (;). Nous le ferons dans l'exemple suivant:
Notez que la deuxième commande s'exécute même si le premier échoue, le troisième s'exécute même si le second échoue, etc.
cd ./doesntexist && cp ~/Documents/reports/* .
Si vous souhaitez arrêter la séquence d'exécution si une commande échoue, utilisez un double ampère et (&&) au lieu d'un point-virgule:
