Guide du débutant sur les scripts shell 3: Commandes et chaînes plus élémentaires

Table des matières:

Guide du débutant sur les scripts shell 3: Commandes et chaînes plus élémentaires
Guide du débutant sur les scripts shell 3: Commandes et chaînes plus élémentaires

Vidéo: Guide du débutant sur les scripts shell 3: Commandes et chaînes plus élémentaires

Vidéo: Guide du débutant sur les scripts shell 3: Commandes et chaînes plus élémentaires
Vidéo: Comment créer un raccourci sur le bureau pour éteindre l'ordinateur - YouTube 2024, Avril
Anonim
Vous avez appris à créer des scripts, à utiliser des arguments et à créer des boucles. Voyons maintenant quelques commandes plus élémentaires, la manipulation de fichiers texte et la redirection des entrées et des sorties vers des fichiers et d’autres commandes.
Vous avez appris à créer des scripts, à utiliser des arguments et à créer des boucles. Voyons maintenant quelques commandes plus élémentaires, la manipulation de fichiers texte et la redirection des entrées et des sorties vers des fichiers et d’autres commandes.

Quelques commandes utiles de base

Nous vous avons déjà fourni une description de base des scripts shell et un exemple de présentation des boucles for, mais assurez-vous de consulter ces articles si vous avez raté notre guide de scripts shell jusqu'à présent.

La ligne de commande est merveilleuse pour de nombreuses raisons, et la redirection est l’une des plus importantes. Si vous deviez noter et reproduire le résultat de chaque commande pour pouvoir prendre d'autres mesures ou l'utiliser à d'autres fins, nous serions tous devenus fous il y a longtemps. La redirection nous permet d’utiliser cette sortie et de la sauvegarder ou de l’utiliser immédiatement comme entrée d’une autre commande. Nous pouvons également utiliser des fichiers comme entrées pour d'autres commandes.

Avant de poursuivre, voyons quelques commandes de base qui peuvent être utiles dans de nombreux endroits.

écho - Cette commande affiche simplement (affiche) l'intégralité de son argument sur la ligne de commande en sortie

echo argument with spaces

Comme vous pouvez le constater, les caractères spéciaux doivent être «échappés» pour être traités normalement. Ceci est fait en utilisant une barre oblique inverse () devant le caractère. C’est une meilleure idée d’utiliser des guillemets. La commande echo fonctionne également avec des variables.
Comme vous pouvez le constater, les caractères spéciaux doivent être «échappés» pour être traités normalement. Ceci est fait en utilisant une barre oblique inverse () devant le caractère. C’est une meilleure idée d’utiliser des guillemets. La commande echo fonctionne également avec des variables.
Comme vous pouvez le constater, les guillemets simples et doubles se comportent différemment. Pour plus d'informations, consultez Quelle est la différence entre des devis simples et doubles dans le shell Bash?
Comme vous pouvez le constater, les guillemets simples et doubles se comportent différemment. Pour plus d'informations, consultez Quelle est la différence entre des devis simples et doubles dans le shell Bash?

chat - Cette commande affiche le contenu des fichiers texte en sortie.

cat file_to_be_read

Disons que nous créons ce fichier texte en nano:

Lorsque nous utilisons la commande cat sur le fichier, nous pouvons voir sa sortie.
Lorsque nous utilisons la commande cat sur le fichier, nous pouvons voir sa sortie.
Image
Image

grep - C’est l’une des commandes les plus puissantes et les plus utiles à votre disposition sous Linux. Il s'agit de Global / Regular Expression Print. Il regarde à travers un fichier et imprime toute ligne correspondant à un motif particulier. Comme ce modèle est basé sur une "expression régulière", une ligne concise peut générer une multitude de modèles à faire correspondre. Pour ne pas, cependant, vous pouvez entrer une sterne pour la recherche.

grep pattern file

Je vous assure que grep peut en faire plus, mais pour l’instant, restons simples.
Je vous assure que grep peut en faire plus, mais pour l’instant, restons simples.

Redirection des sorties

Pour rediriger la sortie d'une commande vers un fichier, nous utilisons un caractère spécial, le symbole supérieur à (>).

Changeons notre liste, allons-nous? Entrez la commande suivante:

echo pepperoni > list

Vous pouvez voir que echo n’affiche plus la ligne et lorsque nous examinons le contenu du fichier «list», nous voyons ce que nous avons répercuté ici.
Vous pouvez voir que echo n’affiche plus la ligne et lorsque nous examinons le contenu du fichier «list», nous voyons ce que nous avons répercuté ici.

Notez également que le contenu précédent de «liste» a été supprimé. Essayez à nouveau:

Cela peut être utile lorsque vous souhaitez réutiliser un fichier, mais nous souhaitons souvent simplement ajouter à un fichier existant. Pour cela, nous utilisons deux symboles consécutifs supérieurs à:
Cela peut être utile lorsque vous souhaitez réutiliser un fichier, mais nous souhaitons souvent simplement ajouter à un fichier existant. Pour cela, nous utilisons deux symboles consécutifs supérieurs à:

echo yellow peppers >> list

Facile! Utilisons cette commande pour créer une liste plus longue, allons-nous?
Facile! Utilisons cette commande pour créer une liste plus longue, allons-nous?
Nous y voilà. Je pense que vous pouvez voir pourquoi tant de geeks utilisent la ligne de commande pour créer des listes de tâches, etc., mais cela s’améliore encore.
Nous y voilà. Je pense que vous pouvez voir pourquoi tant de geeks utilisent la ligne de commande pour créer des listes de tâches, etc., mais cela s’améliore encore.

Prenons le résultat d’une commande et le plaçons dans un fichier:

ls –al / > ~/rootlist

Faire des listes de fichiers, les éditer, puis exécuter des commandes sur ceux que vous voulez n'a jamais été aussi simple. Et, bien que nous effectuions ces fonctions de base dans la ligne de commande, celles-ci fonctionnent également bien dans les scripts.
Faire des listes de fichiers, les éditer, puis exécuter des commandes sur ceux que vous voulez n'a jamais été aussi simple. Et, bien que nous effectuions ces fonctions de base dans la ligne de commande, celles-ci fonctionnent également bien dans les scripts.

Tuyauterie ou chaînage

Piping est ainsi nommé car il utilise le tube (|; partagé avec la touche de la plupart des claviers). Essentiellement, il prend le résultat d'une commande et le transmet directement à une autre. Vous pouvez créer de longues chaînes de commandes pour obtenir de cette manière une sortie souhaitée très spécifique, ce qui est très pratique pour des commandes telles que grep.

Il ressemble beaucoup à «>», sauf qu’il peut être enchaîné plusieurs fois et que son effet est plus général en ce sens qu’il n’a pas besoin de passer par un fichier texte.
Il ressemble beaucoup à «>», sauf qu’il peut être enchaîné plusieurs fois et que son effet est plus général en ce sens qu’il n’a pas besoin de passer par un fichier texte.

Comme vous pouvez le constater, grep est sensible à la casse. Vous pouvez utiliser le drapeau “-i” pour qu’il ignore la casse.

Image
Image

Redirection des entrées

Vous pouvez également effectuer des entrées dans des fichiers pour des commandes en utilisant le symbole inférieur à (<).

cat < list

"Ce n’est pas différent d’utiliser un argument!", Pourriez-vous dire. Eh bien, vous seriez correct dans ce cas. Là où la redirection d’entrée est vraiment utile, c’est en enchaînant des commandes.
"Ce n’est pas différent d’utiliser un argument!", Pourriez-vous dire. Eh bien, vous seriez correct dans ce cas. Là où la redirection d’entrée est vraiment utile, c’est en enchaînant des commandes.

Disons que nous souhaitons filtrer tout mot contenant «pep» de notre fichier «liste» actuel dans un nouveau fichier appelé «révisions».

grep pep < list > revisions

Reprenons cette commande et ajoutons un peu de tri.
Reprenons cette commande et ajoutons un peu de tri.

grep pep < list | sort > revisions

Cela utilisera “pep” comme terme de recherche dans la “liste” du fichier d'entrée, triez-le par ordre alphabétique (tous les termes en majuscules suivis de tous les termes en minuscules), puis enregistrez-le dans le fichier “révisions”.
Cela utilisera “pep” comme terme de recherche dans la “liste” du fichier d'entrée, triez-le par ordre alphabétique (tous les termes en majuscules suivis de tous les termes en minuscules), puis enregistrez-le dans le fichier “révisions”.

Pour illustrer la commande de tri, examinons l’exemple suivant:

Comme vous pouvez le constater, l’ajout de l’indicateur «-f» à la commande de tri vous permet d’ignorer la casse. Cela nous permet d’alphabétiser des lignes dans des fichiers texte et d’ignorer la capitalisation lorsque cela n’a pas d’importance.
Comme vous pouvez le constater, l’ajout de l’indicateur «-f» à la commande de tri vous permet d’ignorer la casse. Cela nous permet d’alphabétiser des lignes dans des fichiers texte et d’ignorer la capitalisation lorsque cela n’a pas d’importance.

Un script simple

Créons un script au format suivant:

script searchterm listfile

Il faudra le terme et utiliser grep pour rechercher dans un fichier de liste, trier les résultats, puis les exporter dans un autre fichier.

Voici le répertoire dans lequel nous allons tester le script:
Voici le répertoire dans lequel nous allons tester le script:
Et, nous pouvons créer une liste de ce qui est ici, puis exécuter le script.
Et, nous pouvons créer une liste de ce qui est ici, puis exécuter le script.
Voilà! Plus vous apprenez les règles des expressions régulières, plus vous pouvez créer une commande de recherche avec précision. Et tout ce qui est valide entre guillemets peut être substitué à votre premier argument!
Voilà! Plus vous apprenez les règles des expressions régulières, plus vous pouvez créer une commande de recherche avec précision. Et tout ce qui est valide entre guillemets peut être substitué à votre premier argument!

En ce qui concerne le tri, vous pouvez faire plus que simplement trier par ordre alphabétique. Consultez la page de manuel pour connaître certaines des commandes suivantes:

  • tsort - une fonction de tri topologique plus avancée
  • tr - vous permet de mapper des caractères spécifiques avec d'autres caractères et de les transcrire entre eux.
  • uniq - supprime les non-uniques (lire: dupliquer)
  • awk - langage / fonction de traitement de texte vraiment avancé pouvant être utilisé pour séparer les champs dans les noms de fichiers
  • couper, coller / rejoindre - commandes utiles pour isoler les champs des fichiers texte et ajouter de nouvelles données dans des colonnes
  • look - recherche comme le fait grep, mais utilise un fichier de dictionnaire (qui peut être spécifié par l'utilisateur) pour la recherche
  • wc - vous permet d'obtenir le nombre de mots, le nombre de lignes, le nombre de caractères, etc.

Nous avons jeté un coup d’œil à quelques bases plus importantes aujourd’hui qui peuvent être aussi utiles sur la ligne de commande que dans les scripts. Les données textuelles sont souvent au cœur des choses que nous utilisons quotidiennement. Il est donc essentiel de pouvoir les utiliser, les rechercher et les manipuler.

Quels sont certains de vos scripts préférés? Avez-vous des scripts à usage spécial pour les fichiers texte? Partagez ce que vous savez dans les commentaires!

Conseillé: