J una nuova utility vecchia di 30+ anni

Avvertenza: questo post può avere effetti collaterali per chi è allergico al terminale. Avvisati, nèh! :mrgreen:

keep-calm-and-bin-bash-7Quando io ero piccolo il mio ‘puter era il PR1ME 550, un mini.
Adesso dovrei raccontarvi che il mini era un armadio quattro due stagioni, aveva 512 KB di RAM, un disco da 80 MB e –OK, altri tempi.
Anche il sistema operativo era diverso Primos, derivato da Pick, derivato da Multics (forse, la Wiki non lo dice). Ma era già nuovo, mica c’erano più le schede perforate che al Poli gli studenti continuavano a usare.

Allora qualcuno di noi (Ugo? Piergiorgio?) aveva semplificato il comando ATTACH, l’equivalente Linux di cd. Ogni comando era abbreviabile, dovevi digitarne solo la parte iniziale, nel nostro caso A; ma poi dovevi –dopo il nome della UFD (directory)– digitare la modalità d’accesso, p.es. per accedere a LAB sottodirectory di JUHAN directory di MFD, vale a dire  Master File Directory potevi fare:

A JUHAN>LAB 1 2

o anche in due tempi:

A JUHAN 1 2
A *>LAB 1 2

Non vi dico cosa sono quei numeri –è un segreto– oppure me lo sono dimenticato, è passato un po’ di tempo.
Allora qualcuno dei nostri aveva creato J. Dapprima era molto semplice, poi si era evoluto, potenza del CPL (Command Process language) un linguaggio di scripting che suppliva la non programmabilità della shell (che non si chiamava shell ma COMMAND, la richiamavi con R (run)). OK, per andare alla directory— UFD LAB digitavi J L. Ah! di solito scrivevi tutto maiuscolo ma era indifferente.
Io il comando j l’ho rifatto subito per DOS quando sono passato ai PC IBM compatibili, quelli di Micro$oft. Non ero invece riuscito a farlo con Unix, non avevo abbastanza tempo e non m’era venuto subito, anzi… :mrgreen:
joelPoi ho provato a rifarlo con Linux, ne ho anche parlato in passato, qui sul blog. Ma mi hanno detto di autojump che funziona benissimo. Bravo Joel Schaerer (joelthelion).
Quindi niente? No, fino a questa mattina. Poi l’ho rifatto. È molto facile, semplicissimo. OK, l’ho copiato.
È andata che l’altro giorno ho googlato per non ricordo esattamente cosa ma c’erano di mezzo bash, function e non so cos’altro (non riesco a ritrovarlo). E ho scoperto le funzioni che si possono definire per bash, una cosa che avevo sempre saltato o trascurato o –OK, colpa mia.

Siccome j è già usato (a volte) per j, ovvio (no, non quello di joelthelion, quell’altro da matematici) il nuovo J l’ho chiamato J (d’ho!) maiuscolo; come sul Pr1me.

È tutto qui:

function J {
    case $1 in
        j) cd ~/lab/APPs/J/ ;;
        sca) cd ~/Scaricati ;;
        T) cd ~/tmp ;;
        -e) gedit ~/.Jd ;;
        -l) cat ~/.Jd ;;
        -u) source ~/.Jd ;;
        *) cd ~/lab ;;
    esac
}

J
È il file ~/.Jd. Per attivarlo automaticamente basta aggiungere a ~/.bashrc la riga:

. ~/.Jd

Che ne dite?
Ah! ‘na roba: non ditelo a quelli che sono convinti che su Linux si lavora solo con il terminale, sapete com’è 🙄

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • Man from Mars  Il 2 marzo 2015 alle 10:03

    Carino autojump, lo butterò su qualche VM di battaglia per pasticciarci un po’. Un modo simile (“ortodosso”, direi) è quello di definire gli alias di comandi e funzioni direttamente in ~/.bashrc oppure in ~/.bash_aliases, che viene processato come il tuo file .Jd.
    Ti segnalo, se non la conosci, zsh come shell alternativa (ma pienamente compatibile) con bash. Ha delle funzioni di autocompletamento più avanzate rispetto a bash. La sto provando ogni tanto per farla diventare la mia shell di default.

    • juhan  Il 2 marzo 2015 alle 10:10

      Quante cose in un commento 😀
      Il passo degli alias l’ho fatto da tempo, superato (non ricordo se ne ho parlato).
      Su autojump invece trovi parecchio nel blog –e funziona. Il mio J è solo per ragioni di nostalgia. Ma funziona e se non trovo controindicazioni lo uso; p.es. adesso ho aggiunto CL che mi fa saltare a ~/lab/lisp/ e *segreto-qui*
      zsh l’ho provata ma per ragioni di compatibilità non la uso; forse ne ho parlato ma non ricordo.

      • Man from Mars  Il 2 marzo 2015 alle 10:47

        Eh Juhan, non si finisce mai di smanettare e poi una roba tira l’altra!

Trackback

  • Corso Lua & … | Ok, panico su 12 marzo 2015 alle 05:16

    […] come neppure –forse– che ho aggiornato J, lo script di cui avevo raccontato qui: J una nuova utility vecchia di 30+ anni. La nuova versione –proprio come faceva su Pr1me– permette di accedere a una […]

  • Linux e Windows (e me) | Ok, panico su 24 marzo 2016 alle 17:01

    […] continuo con l’evoluzione di J, roba vecchia di un anno ormai, ne avevo raccontato qui. Ecco basta una funzione e da terminale si può lanciare praticamente tutto. Per la cronaca dopo J […]

  • Alias o funzione o script? | Ok, panico su 14 ottobre 2016 alle 15:34

    […] Ma il post non sarebbe completo se non lo personalizzassi. La funzione di cui sono più orgoglioso l’ho raccontata qui: J una nuova utility vecchia di 30+ anni. […]

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: