27Jun
Vous avez appris à créer des scripts, à utiliser des arguments et à créer des boucles. Maintenant, jetons un coup d'oeil à quelques commandes plus basiques, à la manipulation des fichiers texte, et à la redirection des entrées et sorties vers les fichiers et autres commandes.
Quelques commandes utiles de base
Nous vous avons déjà donné une description de base des scripts shell et un aperçu des boucles for basées sur un exemple, mais assurez-vous de vérifier ces articles si vous avez manqué notre guide de script shell jusqu'à présent.
La ligne de commande est merveilleuse pour plusieurs raisons, et la redirection est l'une des plus importantes. Si vous deviez noter et reproduire la sortie de chaque commande afin de prendre d'autres mesures ou de l'utiliser pour autre chose, nous serions tous devenus fous depuis longtemps. La redirection nous permet d'utiliser cette sortie et de l'enregistrer ou de l'utiliser immédiatement comme entrée pour 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 utilisées dans beaucoup d'endroits différents.
echo - Cette commande imprime simplement( affiche) l'intégralité de son argument sur la ligne de commande en tant que sortie
echo argument avec des espaces
Comme vous pouvez le voir, 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 personnage. C'est une meilleure idée d'utiliser des citations. La commande echo fonctionne également avec des variables.
Comme vous pouvez le voir, les guillemets simples et doubles se comportent différemment. Pour plus d'informations, consultez Quelle est la différence entre les citations simples et doubles dans le shell Bash?
cat - Cette commande affiche le contenu des fichiers texte en sortie.
cat file_to_be_read
Disons que nous créons ce fichier texte dans 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 qui s'offrent à vous sous Linux. Cela signifie Global / Regular Expression Print. Il regarde à travers un fichier et imprime toute ligne qui correspond à un modèle particulier. Parce que ce modèle est basé sur "l'expression régulière", une ligne concise peut produire une multitude de modèles à faire correspondre. Pour ne pas, cependant, vous pouvez entrer dans un sternum pour la recherche.
fichier de configuration grep
Je vous assure, grep peut faire plus, mais pour l'instant, nous allons nous en tenir à des choses 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( & gt;).
Changeons notre liste, allons-nous? Entrez la commande suivante:
echo pepperoni & gt;list
Vous pouvez voir que echo n'affiche plus la ligne, et quand nous regardons le contenu du fichier "list", nous voyons ce à quoi nous avons fait écho.
Prenez également note que le contenu précédent de "liste" ont été supprimés. Essayez à nouveau:
Cela peut être utile lorsque vous souhaitez réutiliser un fichier, mais souvent nous voulons juste ajouter à un fichier existant. Pour cela, nous utilisons deux symboles consécutifs plus grands que:
echo yellow peppers & gt; & gt;liste
Facile! Utilisons cette commande pour créer une liste plus grande, allons-nous?
On y va. Je pense que vous pouvez voir pourquoi tant de geeks utilisent la ligne de commande pour faire des listes de choses à faire, etc., mais cela devient encore meilleur.
Prenons la sortie d'une commande et la placons dans un fichier:
ls -al / & gt;~ / rootlist
Faire des listes de fichiers, les éditer, puis exécuter des commandes sur celles que vous voulez n'a jamais été aussi simple. Et, pendant que nous faisons ces fonctions de base dans la ligne de commande, celles-ci fonctionnent bien aussi dans les scripts.
Tuyauterie, ou Chaînage
La tuyauterie est ainsi appelée parce qu'elle utilise le tuyau,( |; partagé avec la touche \ sur la plupart des claviers).Essentiellement, il prend la sortie d'une commande et la transmet directement à une autre. Vous pouvez créer de longues chaînes de commandes pour obtenir une sortie très spécifique de cette façon, et c'est très pratique pour des commandes comme grep.
Cela ressemble beaucoup à "& gt;" 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 voir, grep est sensible à la casse. Vous pouvez utiliser le drapeau "-i" pour le faire ignorer.
Redirection des entrées
Vous pouvez également prendre les entrées des fichiers pour les commandes en utilisant le symbole inférieur( & lt;).
chat & lt;liste
"Ce n'est pas différent d'utiliser un argument!", Pourrait-on dire. Eh bien, vous auriez raison dans ce cas. Là où la redirection de l'entrée est vraiment pratique, c'est en enchaînant les commandes ensemble.
Disons que nous voulons filtrer n'importe quel mot qui a "pep" dans notre fichier "liste" actuel dans un nouveau fichier appelé "révisions".
grep pep & lt;liste & gt;
refaisons cette commande, et ajoutons un peu de tri.
grep pep & lt;liste |trier & gt;Révisions
Cela utilisera "pep" comme terme de recherche du fichier d'entrée "liste", le triera par ordre alphabétique( tous les termes majuscules suivis de tous les termes minuscules), puis le sortir dans le fichier "révisions".
Pour illustrer la commande de tri, regardons l'exemple suivant:
Comme vous pouvez le constater, ajouter l'indicateur "-f" à la commande de tri permet d'ignorer case. Cela nous permet d'alphabétiser facilement les lignes dans les 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 sortir dans un autre fichier.
Voici le répertoire dans lequel nous allons tester le script:
Et, nous pouvons créer une liste de quoi ici, puis lancer le script.
Voilà!Plus vous apprenez les règles des expressions régulières, plus vous pouvez assembler 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. Jetez un coup d'œil à la page man de certaines des commandes suivantes:
- tsort - une fonction de tri topologique plus avancée
- tr - vous permet de mapper des caractères spécifiques à d'autres caractères et de les transcrire entre eux.
- uniq - supprime tout non-unique( lire: dupliquer)
- awk - un langage / fonction de traitement de texte très avancé qui peut être utilisé pour séparer les champs dans les noms de fichiers
- couper, coller / joindre - commandes utiles pour isoler les champs des fichiers texte et ajouternouvelles données dans les colonnes look
- - recherche comme 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, nombre de lignes, nombre de caractères et plus
à certains basiques d'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 d'être capable de travailler avec, de faire des recherches et de les manipuler.
Quels sont vos scripts préférés? Avez-vous des scripts spéciaux pour les fichiers texte? Partagez ce que vous savez dans les commentaires!