Guide du débutant sur les scripts de shell 3 Commandes et chaînes de base
Vous avez appris à créer des scripts, à utiliser des arguments et à créer des boucles for. Voyons maintenant quelques commandes de base, 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 déjà manqué notre guide de script shell.
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 pour autre chose, 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 continuer, couvrons 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
écho argument avec des espaces
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 citations. La commande echo fonctionne aussi 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?
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.
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.
fichier de motif grep
Je vous assure que grep peut faire plus, mais pour le moment, restons sur les choses les plus faciles.
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> liste
Vous pouvez voir que echo n’affiche plus la ligne, et quand on regarde le contenu du fichier "list", on voit ce que nous avons fait écho.
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 à:
echo poivrons jaunes >> liste
Facile! Utilisons cette commande pour créer une liste plus longue.?
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 et autres, mais cela devient encore meilleur.
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, pendant que nous effectuons ces fonctions de base en ligne de commande, elles fonctionnent également bien dans les scripts..
Tuyauterie ou chaînage
Piping est nommé ainsi 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 une sortie très spécifique souhaitée de cette façon, et c'est très pratique pour des commandes telles que grep.
Cela ressemble beaucoup à ">" sauf qu'il peut être enchaîné plusieurs fois et 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 le faire ignorer la casse.
Redirection des entrées
Vous pouvez également prendre des entrées de fichiers pour les commandes en utilisant le symbole inférieur à (<).
chat < list
"Ce n'est pas différent d'utiliser un argument!" Pourriez-vous dire. Eh bien, vous auriez raison dans ce cas. Là où la redirection d’entrée est vraiment utile, c’est en enchaînant des commandes.
Supposons que nous souhaitons filtrer tout mot contenant «pep» de notre fichier «liste» actuel dans un nouveau fichier appelé «révisions»..
révisions de pep grep
Reprenons cette commande et ajoutons un peu de tri.
révisions de pep grep
Cela utilisera “pep” comme terme de recherche dans la “liste” du fichier d'entrée, triez-le par ordre alphabétique (tous les termes majuscules suivis de tous les termes minuscules), puis exportez-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..
Un script simple
Créons un script qui a la forme suivante:
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:
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 avec précision une commande de recherche. 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 d'associer des caractères spécifiques à 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!