Cos’è la shell Rc e come installarla in Linux

Rc Shell 00 Featured Image
⏱️ 13 min read

La shell rc è un interprete di comandi semplice e innovativo creato per la famiglia di sistemi operativi Plan 9. Attualmente fa parte di plan9portche è una suite di software Plan 9 disponibile per Linux.

Rc mira a migliorare la shell UNIX predefinita e introduce una sintassi più pulita per la scrittura di script. È anche costruito per essere il più semplice possibile da capire. Questo rende rc un buon programma per chi vuole imparare come funziona una shell.

Cos’è il Piano 9?

In senso basilare, Piano 9 è il successore del sistema operativo UNIX. È stato sviluppato da Bell Labs come progetto sperimentale dall’inizio degli anni ’80 fino al 2015. Da allora, un gruppo di volontari ha mantenuto il sistema operativo e ancora oggi vede aggiornamenti occasionali.

Rc Shell 02 9Visualizzazione del sito Web legacy

Plan 9 mira a produrre un sistema semplice e accessibile sia per gli sviluppatori che per gli utenti. Lo fa implementando e migliorando il concetto di base di UNIX. In quanto tale, Plan 9 porta molti comandi simili a UNIX e altri simili a UNIX come cp, mv e rm.

Inoltre, aggiunge anche una serie di nuove utilità e funzionalità uniche per il sistema operativo. Ad esempio, sam è un potente editor di testo che puoi controllare completamente usando le espressioni regolari.

Rc Shell 03 Sam Editor Linux

Una delle caratteristiche più innovative di Plan 9 è la scocca rc. È un interprete di comandi simile a Bash e ti consente di creare script che puoi quindi utilizzare per automatizzare la tua macchina. rc mira anche a semplificare il modo in cui crei questi script rimuovendo tutte le funzionalità non necessarie e ridondanti.

Rc Shell 04 Rc Manpage 1

Installazione di Rc Shell

L’installazione della shell rc in Linux è relativamente semplice.

  1. Copia il repository Git degli strumenti Plan 9 sulla tua macchina. Puoi farlo installando Git ed eseguendo i seguenti comandi:
git clone https://github.com/9fans/plan9port.git /home/$USER/plan9port
cd plan9port
  1. Successivamente, esegui lo script di installazione fornito con il repository. Questo è un semplice script che compila un builder Plan 9 che, a sua volta, compila il resto delle utilità. Per fare ciò, è necessario eseguire quanto segue:
./INSTALL
Rc Shell 05 Compilazione Plan9port
  1. Una volta terminato, ora puoi utilizzare le utilità di Plan 9 andando nella directory bin del repository. Ad esempio, digiteremo ./bin/acme per eseguire un editor di testo grafico.
Rc Shell 06 Acme Editor
  1. Una cosa importante da notare è che questi comandi funzioneranno solo mentre ci si trova nella directory “bin” di plan9port. Per usarli altrove, devi aggiungere questa particolare directory alla tua variabile “PATH”. Per farlo, devi aprire il file “.bash_profile” nella tua home directory:
nano /home/$USER/.bash_profile
  1. Aggiungi la seguente stringa di testo alla fine della tua variabile “PATH”:
:/home/$USER/plan9port/bin/
Rc Shell 07 Variabile del percorso di modifica

Salva ed esci dal file e riavvia la shell rc.

Utilizzo e scrittura di script Rc di base

Fatto ciò, ora puoi iniziare a creare script in rc. Per accedere a questa shell, tutto ciò che devi fare è eseguire il seguente comando:

9 rc

In questo modo cambierà la richiesta del tuo terminale in “%”. Questo indica che ora sei all’interno della shell rc. Da qui, puoi ancora accedere a tutti i tuoi file e ai tradizionali comandi Linux. Ad esempio, digiteremo ls per ottenere un elenco della directory corrente.

Rc Shell 08 Ls Interno Rc

Variabili e operatori di file

Uno degli usi più comuni di un linguaggio shell è per la memorizzazione di valori arbitrari e per la manipolazione di file. A questo proposito, rc shell si comporta esattamente come Bash.

  1. Scriveremo quanto segue per creare una variabile con il nome “test” e assegnarle la parola “ciao”:
test=hello
  1. Da lì, digiteremo il seguente comando per aggiungere la variabile di test al file “world.txt”:
echo $test >> world.txt
  1. D’altra parte, è anche possibile indicare all’operatore di lettura di utilizzare il contenuto di un file come input per un programma:
cat < world.txt
Rc Shell 09 variabili e stampa

Utilizzo di UNIX Pipes in Rc Shell

Un’altra funzione comune nei linguaggi della shell è la capacità di creare pipe UNIX. Questo è un tipo speciale di operatore di file in cui è possibile passare l’output di un programma all’input di un programma diverso.

Simile alle funzioni precedenti, rc shell segue in gran parte la tradizionale sintassi Bash durante la creazione di pipe UNIX.

  1. Eseguiremo il seguente comando per passare il contenuto del file “world.txt” a un cercapersone di sistema:
cat world.txt | less
  1. Dovremmo notare qui che le pipe UNIX in rc non sono lineari. Ciò significa che è possibile trasferire l’uscita di due programmi attivi nell’ingresso di un unico programma. Ad esempio, possiamo eseguire il seguente comando per confrontare l’output di due programmi:
cmp <{echo hello} <{echo helloo}
Rc Shell 10 tubi di derivazione

Concatenamento di comandi in Rc Shell

Oltre a usare pipe UNIX, è anche possibile concatenare diversi comandi in rc shell. Ciò consente di eseguire programmi in sequenza senza la necessità di digitarli in righe separate. Dai un’occhiata a questo comando che ti consente di eseguire less dopo aver corso echo:

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

Inoltre, rc consente anche di controllare il codice di stato di un programma prima di passare a un comando adiacente. Questo può essere utile se il tuo programma dipende dal successo o dal fallimento di altri programmi.

A tal fine, rc fornisce due operatori: &&” e ||. Questi sono caratteri speciali che puoi usare per sostituire il punto e virgola.

  • Il && l’operatore dice a rc di concatenare ed eseguire programmi fintanto che il comando sul lato sinistro viene eseguito correttamente. Ciò è utile nelle situazioni in cui è necessario che l’intera catena funzioni correttamente.
  • Il || l’operatore dice a rc di concatenare ed eseguire i programmi se il comando sul lato sinistro non viene eseguito. A differenza dell’operatore precedente, questo è incredibilmente utile se stai cercando di risolvere problemi nei tuoi script e programmi.

Sapendo questo, puoi quindi utilizzare questi operatori per creare comandi in grado di accodare e controllare i programmi. Ad esempio, indicheremo a rc di eseguire solo touch Se mkdir funziona correttamente:

mkdir ./hello && touch ./hello/world
Rc Shell 11 comandi concatenati

Utilizzo di stringhe ed elenchi in Rc Shell

Una delle maggiori differenze tra Bash e la shell rc è l’attenzione di quest’ultima sulla semplificazione dell’uso del testo normale. Nella shell tradizionale, testo e stringhe sono spesso difficili da dichiarare in funzioni e variabili.

Questo problema è in parte dovuto al fatto che ci sono due modi per dichiarare una stringa in Bash. È possibile racchiudere il testo tra virgolette singole e doppie per trattare una parola come una stringa.

Rc Shell 12 virgolette multiple

In quanto tale, rc mira a ridurre questa complessità utilizzando solo virgolette singole quando dichiara le stringhe. In questo modo è possibile utilizzare caratteri speciali e di controllo senza problemi.

Usando questo comando trasformeremo una parentesi in una stringa senza caratteri di escape:

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

Inoltre, rc consente anche di manipolare queste variabili stringa e di compilarle direttamente come un elenco. Questo può essere particolarmente utile se vuoi creare uno script che memorizzi le variabili in un semplice array.

Per fare ciò, tutto ciò che devi fare è racchiudere un gruppo di stringhe tra parentesi. Pertanto, scriveremo quanto segue per creare una variabile con 5 elementi al suo interno:

shop=(eggs milk cheese rice beef)

Sapendo questo, puoi quindi utilizzare una varietà di comandi per estrarre i dati da un array. Ad esempio, questo comando estrarrà i primi tre elementi di un array:

echo $shop(1 2 3)
Rc Shell 13 Elenchi di base

Controllo di flusso di base in Rc Shell

Oltre ad essere una semplice shell, rc è anche un linguaggio di programmazione completo. Ciò significa che è in grado non solo di manipolare stringhe di base, ma anche di ramificazioni logiche simili a Python.

Rc Shell 14 Esempio di codice complesso

Rc ti consente di creare facilmente istruzioni if-then, cicli for e la possibilità di definire funzioni complesse. Questo può essere incredibilmente utile se hai appena iniziato con la programmazione.

Utilizzo di dichiarazioni condizionali

Una delle caratteristiche più basilari dei linguaggi di programmazione è la capacità di creare istruzioni condizionali. Queste sono strutture che dicono a un programma cosa fare a seconda della circostanza in cui si trova. Ad esempio, puoi dire a un programma di essere eseguito solo se ha un valore di 1.

Rc Shell 15 Visualizzazione istruzione condizionale di base

Puoi scrivere un’istruzione condizionale per rc in una singola riga:

if ( condition ) program
  • Il campo “condizione” è un elenco di comandi che rc tenterà di eseguire. Il modo in cui funziona è che qualsiasi programma che viene eseguito correttamente fornisce un valore di “vero”.
  • Il campo “programma”, d’altra parte, dipende dal valore “vero” del campo condizione per eseguire qualsiasi comando che gli dai.

A differenza di Bash, questo approccio consente di utilizzare quasi tutti i tipi di programmi per l’istruzione condizionale di uno script. Ad esempio, puoi dire a rc di eseguire questa istruzione solo se nella directory corrente esiste un file hello.world:

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

Creazione di loop semplici

Oltre a scrivere istruzioni condizionali, è anche possibile utilizzare rc per creare script ripetuti tramite loop. Un ciclo è una struttura che consente di ripetere un determinato comando per un determinato numero di volte.

Rc Shell 15 Visualizzazione istruzione condizionale di base

Simile alle istruzioni condizionali, puoi anche scrivere la sintassi di un ciclo in una singola riga:

for ( i in step ) program
  • Il campo “step” può essere una variabile o un programma che rc eseguirà uno per uno. Ad esempio, scrivere un elenco qui dirà a rc di scorrere ogni elemento dell’elenco.
  • Il campo “programma” è la riga di codice che vuoi che rc esegua ogni volta che passa attraverso il campo del passaggio.

Creazione di funzioni in Rc

Infine, è anche possibile creare una funzione generale in rc. Simile ad altri linguaggi di programmazione, questa è una struttura che puoi definire per eseguire un’attività personalizzata.

Rc Shell 17 Codice funzione di base

Ad esempio, quanto segue creerà una funzione che utilizza sia le istruzioni condizionali che i cicli for:

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

Anche se può sembrare complesso, scrivere una funzione è incredibilmente semplice. Al suo interno, la sintassi di base di una funzione rc è simile a questa:

fn name { function }
  • Il campo “nome” indica a rc l’etichetta di una particolare funzione. Questo può essere particolarmente utile se vuoi riutilizzare la stessa funzione per un comando successivo.
  • Il campo “funzione”, invece, contiene tutte le variabili ei comandi che vuoi che eseguano.

Domande frequenti

È possibile conoscere il numero di elementi in una lista in Rc?

Sì! È possibile controllare la quantità totale di variabili in una lista rc. Simile all’ottenimento di elementi di una lista, puoi farlo aggiungendo un simbolo di virgolette doppie (“) prima del nome della tua lista. Ad esempio, possiamo digitare echo $"shop per stampare il numero totale di elementi che abbiamo memorizzato nella variabile negozio.

È possibile creare loop infiniti in Rc?

Sì! È possibile creare loop in rc shell che non finiscono. Mentre gli esempi sopra mostrano cicli finiti, anche crearne di infiniti è altrettanto semplice. Per fare ciò, devi solo rimuovere qualsiasi condizione nel campo del passaggio. Una cosa importante da notare, tuttavia, è che è ancora necessario inserire una parentesi nel campo del passaggio per un ciclo infinito. Questo perché la shell rc è progettata per riconoscere solo funzioni con una particolare sintassi e struttura. Ad esempio, il comando for(i) echo hello dirà a rc di stampare la parola “ciao” a tempo indeterminato.

È possibile passare errori in Rc simili a >2 in Bash?

Sì! Per impostazione predefinita, rc fornisce un modo per separare qualsiasi output diagnostico da un programma. Questo può essere utile se stai cercando di risolvere un problema con uno script o un programma in esecuzione. Tenendo presente questo, puoi separare questo tipo di output utilizzando il pulsante “>[2=1]” operatore di file. Ad esempio, possiamo stampare eventuali errori nel nostro script eseguendo il seguente comando: ./script.rc >[2=1] ./error.log.

Crediti immagine: Spruzza Tutti gli screenshot di Ramces Red

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar di Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Potrebbero interessarti anche...

Subscribe
Notificami
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x