in

15 caractères spéciaux à connaître pour Bash

Si vous souhaitez maîtriser le shell Bash sous Linux, macOS ou un autre système de type UNIX, les caractères spéciaux (tels que ~, *, | et>) sont essentiels. Nous vous aiderons à démêler ces séquences de commandes Linux cryptiques et à devenir un héros des hiéroglyphes.

Que sont les caractères spéciaux?

Il y a un ensemble de caractères le Coquille de bash traite de deux manières différentes. Lorsque vous les tapez dans le shell, ils agissent comme des instructions ou des commandes et indiquent au shell d’exécuter une certaine fonction. Considérez-les comme des commandes à un seul caractère.

Parfois, vous voulez simplement imprimer un caractère et vous n’en avez pas besoin pour agir comme un symbole magique. Il existe un moyen d’utiliser un caractère pour se représenter lui-même plutôt que sa fonction spéciale.

Nous allons vous montrer quels caractères sont des caractères «spéciaux» ou «méta», ainsi que comment vous pouvez les utiliser fonctionnellement et littéralement.

~ Répertoire d’accueil

Le tilde (~) est un raccourci pour votre répertoire personnel. Cela signifie que vous n’avez pas à taper le chemin complet de 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 personnel:

cd ~

Vous pouvez également utiliser cette commande avec des chemins relatifs. Par exemple, si vous vous trouvez quelque part dans le système de fichiers qui ne se trouve pas dans votre dossier de départ 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

Un point (.) Représente le répertoire courant. Vous le voyez dans les listes de répertoires si vous utilisez le -a (tout) option avec ls.

ls -a

Vous pouvez également utiliser le point 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 indique à Bash de rechercher dans le répertoire courant le script.sh déposer. De cette façon, il ne recherchera pas dans les répertoires de votre chemin un exécutable ou un script correspondant.

.. Dossier Parent

Le double point ou «double point» (..) représente le répertoire parent de votre répertoire actuel. Vous pouvez l’utiliser pour remonter d’un niveau dans l’arborescence des répertoires.

cd ..

Vous pouvez également utiliser cette commande avec des chemins relatifs, par exemple, si vous souhaitez monter d’un niveau dans l’arborescence de répertoires, puis entrer 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 de répertoires que votre répertoire actuel. Vous montez d’un niveau, puis vous en redescendez un dans un répertoire différent.

cd ../gc_help

/ Séparateur de répertoire de chemin

Vous pouvez utiliser une barre oblique (/) – souvent simplement appelée barre oblique – pour séparer les répertoires dans un chemin.

ls ~/work/archive

Une barre oblique représente le chemin de répertoire le plus court possible. Comme tout dans l’arborescence de répertoires Linux commence au répertoire racine, vous pouvez utiliser cette commande pour vous déplacer rapidement vers le répertoire racine:

cd /

# Commenter ou couper les chaînes

Le plus souvent, vous utilisez le dièse ou le signe dièse (#) pour dire au shell que ce qui suit est un commentaire, et il ne doit pas agir en conséquence. Vous pouvez l’utiliser dans des scripts shell et – moins utilement – sur la ligne de commande.

# This will be ignored by the Bash shell

Cependant, il n’est pas vraiment ignoré, car il est ajouté à votre historique de commandes.

Vous pouvez également utiliser le hachage pour dé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 «How-To» dans la fenêtre du terminal. Il récupère la valeur stockée dans la variable chaîne via un expansion des paramètres. Étant donné que nous ajoutons le hachage et le texte «Dave», il supprime cette partie de la chaîne avant qu’elle ne soit transmise à echo.

echo How-To ${this_string#Dave}

Cela ne change pas la valeur stockée dans la variable chaîne; cela n’affecte que ce qui est envoyé à echo. On peut utiliser echo pour imprimer à nouveau la valeur de la variable chaîne et vérifier ceci:

echo $this_string

? Caractère générique unique

Le shell Bash prend en charge trois caractères génériques, 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 fichier. Un nom de fichier qui contient un caractère générique forme un modèle qui correspond à une plage de noms de fichiers, plutôt qu’à un seul.

Le caractère générique du point d’interrogation représente. Considérez le modèle de nom de fichier suivant:

ls badge?.txt

Cela se traduit par « lister tous les fichiers dont le nom commence par » badge « et est suivi d’un seul caractère avant l’extension du nom de fichier. »

Il correspond aux fichiers suivants. Notez que certains ont des chiffres et d’autres des lettres après la partie «badge» du nom de fichier. Le caractère générique du point d’interrogation correspondra à la fois 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 caractère générique du point d’interrogation doit correspondre à un caractère correspondant dans le nom de fichier.

Vous pouvez également utiliser le point d’interrogation pour rechercher tous les fichiers avec un nombre spécifique de caractères dans les noms de fichiers. Cela répertorie tous les fichiers texte contenant exactement cinq caractères dans le nom de fichier:

ls ?????.txt

* Caractère générique de séquence de caractères

Vous pouvez utiliser l’astérisque

ls badge*

wildcard pour représenter l’un des caractères, y compris. Considérez le modèle de nom de fichier suivant:

Cela correspond à tous les éléments suivants:

Il correspond à «badge.txt» car le caractère générique représente n’importe quelle séquence de caractères ou aucun caractère.

ls source.*

[] Cette commande correspond à tous les fichiers appelés «source», quelle que soit l’extension du fichier.

Jeu de caractères générique

Comme indiqué ci-dessus, vous utilisez le point d’interrogation pour représenter n’importe quel caractère unique et l’astérisque pour représenter n’importe quelle séquence de caractères (y compris aucun caractère). [] Vous pouvez former un caractère générique avec les crochets (

) et les caractères qu’ils contiennent. Le caractère pertinent dans le nom de fichier doit alors correspondre à au moins un des caractères du jeu de caractères génériques.

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 2, 4 ou 6. »

ls badge_[01][789].txt

Vous pouvez utiliser plusieurs jeux de crochets par modèle de nom de fichier:

ls badge_[23][1-5].txt

Vous pouvez également inclure des plages 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 commandes 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, à condition de séparer chacune d’elles par un point-virgule (;). Nous allons le faire dans l’exemple suivant:

Notez que la deuxième commande s’exécute même si la première échoue, la troisième s’exécute même si la seconde échoue, et ainsi de suite.

cd ./doesntexist && cp ~/Documents/reports/* .

Si vous souhaitez arrêter la séquence d’exécution si une commande échoue, utilisez une double esperluette (&&) au lieu d’un point-virgule:

& Processus d’arrière-plan geditUne fois que vous avez tapé une commande dans une fenêtre de terminal et qu’elle se termine, vous revenez à l’invite de commande. Normalement, cela ne prend qu’un moment ou deux. Mais si vous lancez une autre application, telle que

, vous ne pouvez pas utiliser la fenêtre de votre terminal tant que vous n’avez pas fermé l’application.

gedit command_address.page &

Vous pouvez cependant lancer une application en arrière-plan et continuer à utiliser la fenêtre du terminal. Pour ce faire, ajoutez simplement une esperluette à la ligne de commande:

Bash vous montre l’ID de processus de ce qui a été lancé, puis vous renvoie à la ligne de commande. Vous pouvez ensuite continuer à utiliser la fenêtre de votre terminal.

sort < words.txt

De nombreuses commandes Linux acceptent un fichier comme paramètre et prennent leurs données à partir de ce fichier. La plupart de ces commandes peuvent également prendre des entrées à partir d’un flux. Pour créer un flux, vous utilisez le crochet à angle gauche (<), comme indiqué dans l'exemple suivant, pour rediriger un fichier vers une commande:

Lorsqu’une commande a une entrée redirigée vers elle, elle peut se comporter différemment que lorsqu’elle lit à partir d’un fichier nommé. wc Si nous utilisons wcpour compter les mots, les lignes et les caractères d’un fichier, il imprime les valeurs, puis le nom du fichier. Si nous redirigeons le contenu du fichier vers

, il imprime les mêmes valeurs numériques mais ne connaît pas le nom du fichier d’où proviennent les données. Il ne peut pas imprimer un nom de fichier. wcVoici quelques exemples d’utilisation

wc words.txt
wc < words.txt

:

> Redirection de sortie

ls > files.txt
cat files.txt

Vous pouvez utiliser le crochet à angle droit (>) pour rediriger la sortie d’une commande (généralement, dans un fichier); voici un exemple: >La redirection de sortie peut également rediriger les messages d’erreur si vous utilisez un chiffre (2, dans notre exemple) avec

wc doesntexist.txt 2> errors.txt
cat errors.txt

. Voici comment procéder:

| Tuyau

Une chaîne «pipe» commande ensemble. Il prend la sortie d’une commande et la transmet à la suivante en tant qu’entrée. Le nombre de commandes canalisées (la longueur de la chaîne) est arbitraire. cat Ici, nous allons utiliser greppour alimenter le contenu du fichier words.txt dans grep , qui extrait toute ligne contenant un «C» minuscule ou majuscule sorttransmettra ensuite ces lignes à sort . -r utilise le

(inverse), de sorte que les résultats triés apparaîtront dans l’ordre inverse.

cat words.txt | grep [cC] | sort -r

Nous avons tapé ce qui suit:

! Opérateur de NOT logique et d’historique de pipeline

Le point d’exclamation (!) Est un opérateur logique qui signifie NON.

[ ! -d ./backup ] && mkdir ./backup
  • Il y a deux commandes dans cette ligne de commande:
  • La première commande est le texte entre crochets; &&La deuxième commande est le texte qui suit les doubles esperluettes

. ! La première commande utilise -d comme opérateur logique. Les crochets indiquent qu’un test va être effectué. Le

L’option (répertoire) teste la présence d’un répertoire appelé backup. La deuxième commande crée le répertoire.

Parce que les doubles esperluettes séparent les deux commandes, Bash n’exécutera la seconde que si la première. Cependant, c’est le contraire de ce dont nous avons besoin. Si le test du répertoire «backup» réussit, nous devons le créer. Et si le test du répertoire «backup» échoue, la deuxième commande ne sera pas exécutée et le répertoire manquant ne sera pas créé. ! C’est là que l’opérateur logique ! entre. Il agit comme un NON logique. Donc, si le test réussit (c’est-à-dire que le répertoire existe), le retourne cela à «PAS de succès», ce qui est. Donc, la deuxième commande n’est pas

activé. ! Si le test du répertoire échoue (c’est-à-dire que le répertoire n’existe pas), le

modifie la réponse en «PAS d’échec», ce qui est. Donc, la commande pour créer le répertoire manquant a été exécutée. ! Ce petit

emballe beaucoup de punch quand vous en avez besoin! ls Pour vérifier l’état du dossier de sauvegarde, vous utilisez le -l commande et le -d (longue liste) et

ls -l -d backup

(répertoire), comme indiqué ci-dessous: history Vous pouvez également exécuter des commandes à partir de votre historique de commandes avec le point d’exclamation. Le ! commande répertorie votre historique de commandes, puis vous tapez le numéro de la commande que vous souhaitez réexécuter avec

!24

pour l’exécuter, comme indiqué ci-dessous:

!!

La commande suivante réexécute la commande précédente:

$ Expressions variables Dans le shell Bash, vous créez des variables pour contenir des valeurs. Certains, comme Variables d’environnement,

existent toujours, et vous pouvez y accéder à chaque fois que vous ouvrez une fenêtre de terminal. Ceux-ci contiennent des valeurs, telles que votre nom d’utilisateur, votre répertoire de base et votre chemin. echo Vous pouvez utiliser

echo $USER
echo $HOME
echo $PATH

pour voir la valeur d’une variable, faites simplement précéder le nom de la variable du signe dollar ($), comme indiqué ci-dessous: $ Pour créer une variable, vous devez lui donner un nom et lui fournir une valeur à tenir. Vous devez utiliser le signe dollar pour créer une variable. Vous n’ajoutez que

ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber

lorsque vous référencez une variable, comme dans l’exemple suivant:

Ajoutez des accolades ({}) autour du signe dollar et effectuez une expansion des paramètres pour obtenir la valeur de la variable et permettre d’autres transformations de la valeur.

MyString=123456qwerty

Cela crée une variable qui contient une chaîne de caractères, comme indiqué ci-dessous:

echo ${MyString}

Utilisez la commande suivante pour faire écho à la chaîne dans la fenêtre du terminal:

echo ${myString:6}

Pour renvoyer la sous-chaîne commençant à la position 6 de la chaîne entière, utilisez la commande suivante (il y a un décalage zéro, donc la première position est zéro):

echo ${myString:0:6}

Si vous souhaitez faire écho à une sous-chaîne qui commence à la position zéro et contient les six caractères suivants, utilisez la commande suivante:

echo ${myString:4:4}

Utilisez la commande suivante pour faire écho à une sous-chaîne qui commence à la position quatre et contient les quatre caractères suivants:

Citations de caractères spéciaux

Si vous voulez utiliser un caractère spécial comme caractère littéral (non spécial), vous devez le dire au shell Bash. Cela s’appelle la citation, et il y a trois façons de le faire.

Si vous mettez le texte entre guillemets («…»), cela empêche Bash d’agir sur la plupart des caractères spéciaux, et ils s’impriment simplement. Une exception notable, cependant, est le signe dollar ($). Il fonctionne toujours comme le caractère des expressions de variables, vous pouvez donc inclure les valeurs des variables dans votre sortie.

echo "Today is $(date)"

Par exemple, cette commande imprime la date et l’heure:

echo 'Today is $(date)'

Si vous mettez le texte entre guillemets simples (‘…’) comme indiqué ci-dessous, cela arrête la fonction des caractères spéciaux:

echo "Today is $(date)"

Vous pouvez utiliser une barre oblique inverse () pour empêcher le caractère suivant de fonctionner comme un caractère spécial. Cela s’appelle «échapper» au caractère; voir l’exemple ci-dessous:

Pensez simplement aux caractères spéciaux comme à des commandes très courtes. Si vous mémorisez leurs utilisations, cela peut grandement améliorer votre compréhension du shell Bash et des scripts d’autres personnes.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment lancer automatiquement Android Auto avec NFC

Comment lancer automatiquement Android Auto avec NFC

Comment utiliser et personnaliser le curseur sur votre iPad