Le shell rc est un interpréteur de commandes simple et innovant conçu pour la famille de systèmes d’exploitation Plan 9. Il fait actuellement partie de plan9port qui est une suite de logiciels Plan 9 disponible pour Linux.

Rc vise à améliorer le shell UNIX par défaut et introduit une syntaxe plus propre pour l’écriture de scripts. Il est également conçu pour être aussi simple à comprendre que possible. Cela fait de rc un bon programme pour quelqu’un qui veut apprendre comment fonctionne un shell.

Qu’est-ce que Plan 9 ?

Dans un sens fondamental, Régime 9 est le successeur du système d’exploitation UNIX. Il a été développé par Bell Labs en tant que projet expérimental du début des années 1980 jusqu’en 2015. Depuis lors, un groupe de volontaires s’occupe de la maintenance du système d’exploitation et il voit encore des mises à jour occasionnelles à ce jour.

Rc Shell 02 9legacy Site Web

Plan 9 vise à produire un système simple et accessible à la fois pour les développeurs et les utilisateurs. Pour ce faire, il implémente et améliore le concept UNIX de base. En tant que tel, Plan 9 contient de nombreuses commandes similaires à UNIX et à d’autres UNIX similaires telles que cp, mv et rm.

En outre, il ajoute également un certain nombre de nouveaux utilitaires et fonctionnalités uniques au système d’exploitation. Par exemple, sam est un puissant éditeur de texte que vous pouvez entièrement contrôler à l’aide d’expressions régulières.

Rc Shell 03 Éditeur Sam Linux

L’une des caractéristiques les plus innovantes de Plan 9 est la coque rc. C’est un interpréteur de commandes similaire à Bash et il vous permet de créer des scripts que vous pouvez ensuite utiliser pour automatiser votre machine. rc vise également à simplifier la façon dont vous créez ces scripts en supprimant toutes les fonctionnalités inutiles et redondantes.

Rc Shell 04 Rc Manpage 1

Installation de la coque Rc

L’installation du shell rc sous Linux est relativement simple.

  1. Copiez le référentiel Git des outils Plan 9 sur votre machine. Vous pouvez le faire en installant Git et en exécutant les commandes suivantes :
git clone https://github.com/9fans/plan9port.git /home/$USER/plan9port
cd plan9port
  1. Ensuite, exécutez le script d’installation fourni avec le référentiel. Il s’agit d’un simple script qui compile un constructeur Plan 9 qui, à son tour, compile le reste des utilitaires. Pour ce faire, vous devez exécuter ce qui suit :
Rc Shell 05 Compilation Plan9port
  1. Une fois cela fait, vous pouvez maintenant utiliser les utilitaires de Plan 9 en vous rendant dans le répertoire bin du référentiel. Par exemple, nous taperons ./bin/acme pour exécuter un éditeur de texte graphique.
Rc Shell 06 Acme Éditeur
  1. Une chose importante à noter est que ces commandes ne fonctionneront que lorsque vous vous trouvez dans le répertoire « bin » de plan9port. Afin de les utiliser ailleurs, vous devez ajouter ce répertoire particulier à votre variable « PATH ». Pour ce faire, vous devez ouvrir le fichier « .bash_profile » dans votre répertoire personnel :
nano /home/$USER/.bash_profile
  1. Ajoutez la chaîne de texte suivante à la fin de votre variable « PATH » :
:/home/$USER/plan9port/bin/
Rc Shell 07 Modification de la variable de chemin

Enregistrez et quittez le fichier, puis redémarrez le shell rc.

Utilisation et écriture de scripts Rc de base

Cela fait, vous pouvez maintenant commencer à écrire des scripts dans rc. Pour accéder à ce shell, il vous suffit de lancer la commande suivante :

Cela changera l’invite de votre terminal en « % ». Cela indique que vous êtes maintenant à l’intérieur du shell rc. À partir de là, vous pouvez toujours accéder à tous vos fichiers ainsi qu’aux commandes Linux traditionnelles. Par exemple, nous taperons ls pour obtenir une liste du répertoire courant.

Rc Shell 08 Ls Intérieur Rc

Variables et opérateurs de fichiers

L’une des utilisations les plus courantes d’un langage shell est le stockage de valeurs arbitraires ainsi que la manipulation de fichiers. À cet égard, le shell rc se comporte exactement comme Bash.

  1. Nous allons écrire ce qui suit pour créer une variable avec le nom « test » et lui attribuer le mot « hello » :
  1. À partir de là, nous taperons la commande suivante pour ajouter la variable de test au fichier « world.txt » :
  1. D’autre part, il est également possible de demander à l’opérateur de lecture d’utiliser le contenu d’un fichier comme entrée pour un programme :
Rc Shell 09 Variables Et Impression

Utilisation de tubes UNIX dans Rc Shell

Une autre fonction courante dans les langages shell est la possibilité de créer des canaux UNIX. Il s’agit d’un type spécial d’opérateur de fichier dans lequel vous pouvez transmettre la sortie d’un programme à l’entrée d’un autre programme.

Semblable aux fonctions ci-dessus, le shell rc suit en grande partie la syntaxe traditionnelle de Bash lors de la création de canaux UNIX.

  1. Nous allons exécuter la commande suivante pour transmettre le contenu du fichier « world.txt » à un pager système :
  1. Il convient de noter ici que les canaux UNIX dans rc ne sont pas linéaires. Cela signifie qu’il est possible de passer la sortie de deux programmes actifs dans l’entrée d’un seul programme. Par exemple, nous pouvons exécuter la commande suivante pour comparer la sortie de deux programmes :
cmp <{echo hello} <{echo helloo}
Rc Shell 10 tuyaux de branchement

Chaînage des commandes dans Rc Shell

Outre l’utilisation de canaux UNIX, il est également possible de chaîner différentes commandes dans le shell rc. Cela vous permet d’exécuter des programmes en séquence sans avoir besoin de les taper sur des lignes séparées. Découvrez cette commande qui vous permet d’exécuter less après avoir couru echo:

echo hello-world >> hello.txt; less hello.txt

De plus, rc vous permet également de vérifier le code d’état d’un programme avant de passer à une commande adjacente. Cela peut être utile si votre programme dépend du succès ou de l’échec d’autres programmes.

A cette fin, rc fournit deux opérateurs : && » et ||. Ce sont des caractères spéciaux que vous pouvez utiliser pour remplacer le symbole point-virgule.

  • La && L’opérateur indique à rc de chaîner et d’exécuter des programmes tant que la commande sur le côté gauche s’exécute avec succès. Ceci est utile dans les situations où vous avez besoin que toute la chaîne fonctionne correctement.
  • La || L’opérateur indique à rc de chaîner et d’exécuter des programmes si la commande sur le côté gauche ne s’exécute pas. Contrairement à l’opérateur précédent, cela est extrêmement utile si vous essayez de résoudre des problèmes dans vos scripts et programmes.

Sachant cela, vous pouvez ensuite utiliser ces opérateurs pour créer des commandes qui peuvent mettre en file d’attente et vérifier des programmes. Par exemple, nous demanderons à rc de n’exécuter que touch si mkdir s’exécute avec succès :

mkdir ./hello && touch ./hello/world
Rc Shell 11 commandes enchaînées

Utilisation de chaînes et de listes dans Rc Shell

L’une des plus grandes différences entre Bash et le shell rc est l’accent mis par ce dernier sur la simplification de l’utilisation du texte brut. Dans le shell traditionnel, le texte et les chaînes sont souvent difficiles à déclarer dans les fonctions et les variables.

Ce problème est en partie dû au fait qu’il existe deux manières de déclarer une chaîne dans Bash. Il est possible de placer du texte entre guillemets simples et doubles pour traiter un mot comme une chaîne.

Rc Shell 12 citations de chaînes multiples

En tant que tel, rc vise à réduire cette complexité en n’utilisant que des guillemets simples lors de la déclaration de chaînes. Cela vous permet d’utiliser des caractères spéciaux et de contrôle sans aucun problème.

En utilisant cette commande, nous transformerons un crochet en une chaîne sans aucun caractère d’échappement :

# rc
hello='[world]'
# bash
hello='\[world\]'

De plus, rc vous permet également de manipuler ces variables de chaîne et de les compiler directement sous forme de liste. Cela peut être particulièrement utile si vous souhaitez créer un script qui stocke des variables dans un tableau simple.

Pour ce faire, il vous suffit de mettre un groupe de chaînes entre parenthèses. En tant que tel, nous allons écrire ce qui suit pour créer une variable avec 5 éléments à l’intérieur :

shop=(eggs milk cheese rice beef)

Sachant cela, vous pouvez ensuite utiliser diverses commandes pour extraire des données d’un tableau. Par exemple, cette commande extraira les trois premiers éléments d’un tableau :

Rc Shell 13 listes de base

Contrôle de flux de base dans Rc Shell

En plus d’être un simple shell, rc est également un langage de programmation complet. Cela signifie qu’il est capable non seulement de manipulation de chaîne de base, mais également de branchement logique similaire à Python.

Rc Shell 14 Exemple de code complexe

Rc vous permet de créer facilement des instructions if-then, des boucles for ainsi que la possibilité de définir des fonctions complexes. Cela peut être extrêmement utile si vous débutez avec la programmation.

Utilisation d’instructions conditionnelles

L’une des caractéristiques les plus fondamentales des langages de programmation est la possibilité de créer des instructions conditionnelles. Ce sont des structures qui indiquent à un programme quoi faire en fonction des circonstances dans lesquelles il se trouve. Par exemple, vous pouvez indiquer à un programme de ne s’exécuter que s’il a la valeur 1.

Rc Shell 15 Affichage conditionnel de base

Vous pouvez écrire une instruction conditionnelle pour rc sur une seule ligne :

  • Le champ « condition » est une liste de commandes que rc tentera d’exécuter. La façon dont cela fonctionne est que tout programme qui s’exécute avec succès fournit une valeur de « true ».
  • Le champ « programme », d’autre part, dépend de la valeur « true » du champ de condition pour exécuter toute commande que vous lui donnez.

Contrairement à Bash, cette approche vous permet d’utiliser presque n’importe quel type de programme pour l’instruction conditionnelle d’un script. Par exemple, vous pouvez indiquer à rc de n’exécuter cette instruction que si un fichier hello.world existe dans le répertoire courant :

if ( test -r hello.world ) echo "there is a hello world!"

Création de boucles for simples

Outre l’écriture d’instructions conditionnelles, il est également possible d’utiliser rc pour créer des scripts répétitifs via des boucles. Une boucle est une structure qui vous permet de répéter une commande particulière un certain nombre de fois.

Rc Shell 15 Affichage conditionnel de base

Comme pour les instructions conditionnelles, vous pouvez également écrire la syntaxe d’une boucle sur une seule ligne :

for ( i in step ) program
  • Le champ « step » peut être soit une variable, soit un programme que rc va parcourir un par un. Par exemple, écrire une liste ici indiquera à rc de parcourir chaque élément de la liste.
  • Le champ « program » est la ligne de code que vous voulez que rc exécute chaque fois qu’il passe par le champ step.

Créer des fonctions dans Rc

Enfin, il est également possible de créer une fonction générale dans rc. Semblable à d’autres langages de programmation, il s’agit d’une structure que vous pouvez définir pour effectuer une tâche personnalisée.

Rc Shell 17 Code de fonction de base

Par exemple, ce qui suit créera une fonction qui utilise à la fois des instructions conditionnelles et des boucles for :

fn hello {
    for (i in ./hello/) if(test -r ./hello/$i) echo "There is a file here!"
}

Bien que cela puisse sembler complexe, écrire une fonction est incroyablement simple. À la base, la syntaxe de base d’une fonction rc ressemble à ceci :

  • Le champ « nom » indique à rc l’étiquette d’une fonction particulière. Cela peut être particulièrement utile si vous souhaitez réutiliser la même fonction pour une commande ultérieure.
  • Le champ « fonction », quant à lui, contient toutes les variables et commandes que vous souhaitez qu’il exécute.

Questions fréquemment posées

Est-il possible de connaître le nombre d’éléments d’une liste dans Rc ?

Oui! Il est possible de vérifier le nombre total de variables dans une liste rc. Semblable à l’obtention d’éléments de liste, vous pouvez le faire en ajoutant un symbole de guillemet double (« ) avant le nom de votre liste. Par exemple, nous pouvons taper echo $"shop pour imprimer le nombre total d’éléments que nous avons stockés dans la variable shop.

Est-il possible de créer des boucles infinies en Rc ?

Oui! Il est possible de créer des boucles dans le shell rc qui ne se terminent pas. Alors que les exemples ci-dessus montrent des boucles finies, la création de boucles infinies est tout aussi simple. Pour ce faire, il vous suffit de supprimer toute condition dans le champ d’étape. Une chose importante à noter, cependant, est que vous devez toujours placer une parenthèse dans le champ step pour une boucle infinie. En effet, le shell rc est conçu pour ne reconnaître que les fonctions avec une syntaxe et une structure particulières. Par exemple, la commande for(i) echo hello dira à rc d’imprimer le mot « hello » indéfiniment.

Est-il possible de transmettre des erreurs dans Rc similaires à> 2 dans Bash?

Oui! Par défaut, rc fournit un moyen de séparer toute sortie de diagnostic d’un programme. Cela peut être utile si vous essayez de résoudre un problème avec un script ou un programme que vous exécutez. Dans cet esprit, vous pouvez séparer ce type de sortie en utilisant le « >[2=1]” opérateur de fichier. Par exemple, nous pouvons imprimer toutes les erreurs dans notre script en exécutant la commande suivante : ./script.rc >[2=1] ./error.log.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici