Οι διάφοροι φλοιοί (shell ή αλλιώς κέλυφος) είναι μαζί μας εδώ και πολλές δεκαετίες. Τι είναι φλοιός κατ αρχήν; Είναι το πρόγραμμα που τρέχει αυτό που λέμε τερματικό. Το παρακάτω άρθρο εξηγεί τι είναι. Όταν γράφουμε εντολές στο τερματικό στην πραγματικότητα χρησιμοποιούμε το Bash, αν και κάποιοι ποιο ψαγμένοι έχουν το zsh.
Η αρχική φιλοσοφία του UNIX λέει πως αν έχεις μικρά προγράμματα που τα συνδέεις με διοχετεύσεις (pipes) μπορείς να κάνεις πολύπλοκες εργασίες. Με απλές εντολές όπως ή ls
και η cat
σε συνδυασμό με φίλτρα όπως την εντολή grep ή υπερφίλτρα όπως το awk και ένα καλό κέλυφος να τα συνδέσει μπορείς να φτιάξεις μικρά προγράμματα είτε στην γραμμή εντολών, είτε να φτιάξεις μικρές εντολές.
Αλλά υπάρχουν δυο μικρά προβλήματα σε αυτή την προσέγγιση. Το ένα είναι πως οι εντολές είναι αρχαίες, και δεν μοιράζονται μεταξύ τους πολλά, οπότε θα πρέπει να τις μάθεις διαβάζοντας το manual
Υπάρχει κάποιος που ξέρει απέξω και τις 58 επιλογές της εντολής ls
; τις 82 επιλογές της εντολής find; εγώ πάντως όχι. Και σαν να μην έφτανε αυτό οι διάφορες εκδόσεις του UNIX είναι ασύμβατες μεταξύ τους, οπότε είτε γράφεις στις περιορισμένες δυνατότητες της προδιαγραφής POSIX και ελπίζεις να μην πέσεις σε κάποια ασυμβατότητα, είτε χρησιμοποιείς τα GNU Coreutils και ξεμπέρδεψες.
Το άλλο πρόβλημα είναι πως αυτό που περνάει από εντολή σε εντολή είναι απλό κείμενο χωρίς δομή, κάτι που κάνει τα πράγματα δύσκολα. Πρέπει να μείνουμε όμως για πάντα στο παρελθόν; Η απάντηση είναι πως δεν μπορείς να αντικαταστήσεις τα GNU Coreutils, τα πάντα θα παύσουν να λειτουργούν. Μπορείς όμως να φτιάξεις κάτι καλύτερο. Και εδώ δυο προγραμματιστές πολύ γνωστοί, ο τεράστιος Yehuda Katz και ο Jonathan Turner έχουν να μας δώσουν μια ενδιαφέρουσα πρόταση. Το όνομα αυτής NuShell, ένα καινούργιο σύστημα γραμμένο σε Rust.
Μπορείς να το κατεβάσεις από το αποθετήριο σαν αρχείο zip, δεν υπάρχουν έτοιμα πακέτα αυτή την στιγμή, αλλά υπάρχει όμως ένα docker image. Εγώ ακολούθησα τον δρόμο του cargo και το πέρασα με το χέρι, και 855 crates αργότερα (θα το μετανιώσω αυτό στο μέλλον είμαι σίγουρος) ήρθε ή ώρα να δώσω την πρώτη εντολή ls
Δεν βλέπουμε μόνο τα αρχεία με ένα διαφορετικό τρόπο, αλλά έχουμε κάτι που μοιάζει με ένα λογιστικό φύλο. Και μπορούμε εύκολα να τα δούμε και κάπως αλλιώς
με αντίστροφή ταξινόμηση ως προς το μέγεθος. Είμαι σίγουρος πως θα μπορούσα να κάνω το ίδιο και με την “απλή” εντολή ls
αν ήξερα εκ μνήμης και τις 58 επιλογές της, ή μήπως θα ήθελα και την εντολή sort
;
Αν ήθελα μόνο τα αρχεία μεγαλύτερα από ένα συγκεκριμένο μέγεθος;
ls | where size > 1GB
Η εντολή ps
μου δείχνει τις διεργασίες(προγράμματα) που τρέχουν. Αλλά ποιες από αυτές χρησιμοποιούν πολύ μνήμη; Με αυτά που είδαμε μέχρι τώρα είναι εύκολο να το βρούμε
Τόσο απλά σαν να κλέβεις εκκλησία. Ας δούμε πως μπορείς να βρεις πληροφορίες για το σύστημα:
Εδώ έχουμε μια ποιο πολύπλοκη δομή, αλλά μπορούμε να μπούμε μέσα στις υποδομές ή τους πίνακες και να δούμε τις πληροφορίες
Δομημένα δεδομένα μπορούμε να πάρουμε εκτός από εντολές και απευθείας από κάποια αρχεία, όπως για παράδειγμα αχρεία json (το λιγουρεύεστε ή όχι ακόμα;) Για παράδειγμα απο ένα αρχείο *.desktop
.
ή ακόμα και απο το internet (δυστυχώς όχι RSS feeds ακόμα)
fetch https://www.jonathanturner.org/feed.xml
Ωραία όλλα αυτά, αλλά αν απλά θέλω την παλία καλή εντολή ls
;
/home/talos> ^ls Builds Desktop eBooks Music Public Videos CLionProjects Documents Games notes.txt Steam croc_completed.odt Downloads java_error_in_clion_215865.log Pictures Templates
Μπορεί να αντικαταστήσει Shell που χρησιμοποιώ;
Κάποιες γεναίες ψυχές το χρησιμοποιούν ήδη, και ναι μπορεί να χρησιμοποιήθει, αλλά οι χρήστες του Bash, είδικά αυτοί που ξέρουν πάνω απο 10 όρισματα της εντολής ls
θα πρέπει να ξεχάσουν την μυική μνήμη. Εδώ θα βρείτε μια αντιστοιχία εντολών του nu και το bash. Πιστεύω πως είναι ευκολότερο να το μάθεις απο την παραδοσιακή γραμμή εντολών, αλλά είναι νωρίς ακόμα και δεν θα βρείς βιβλία ή οδηγούς. Αλλά είναι νωρίς ακόμα. Αυτή την στιγμή είναι όμως ένα χρήσιμο εργαλείο, ειδικά αν δουλεύεις με αρχεία json. Αλλά σε 2-3 χρόνια ίσως να γίνει η καλύτερη λύση. Θα δείξει. Εσάς ποια είναι η γνώμη σας; Το λιγουρεύεστε να το δοκιμάσετε σήμερα;
Δείτε και διαβάστε
Επίσης την κεντρική σελίδα του Nushell, το πολύ καλό βιβλίο του ή ενα demo χωρίς να το εγκαταστήσετε.