Master the command line, in one page
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 KiB

Meta

Αντικείμενο:

  • Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το εύρος (ό,τι είναι σημαντικό), η ακρίβεια (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις), και η συντομία (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές.
  • Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "Μόνο για OS X". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin).
  • Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash.
  • Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν.

Σημειώσεις:

  • Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε apt-get/yum/dnf/pacman/pip/brew (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα.
  • Χρησιμοποιήστε Explainshell για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ.

Τα βασικά

  • Μάθετε τα βασικά του φλοιού Bash. Πράγματι, πληκτρολογήστε man bash και τουλάχιστον ρίξτε μια ματιά σε αυτό που εμφανίζεται· είναι αρκετά εύκολο να το ακολουθήσετε κι όχι και τόσο μεγάλο. Άλλοι φλοιοί μπορεί να είναι μια χαρά, αλλά ο φλοιός Bash έχει πολλές δυνατότητες και είναι πάντα διαθέσιμος (το να μάθετε μόνο zsh, fish κλπ., αν και δελεαστικό στο δικό σας laptop, σας περιορίζει σε πολλές περιπτώσεις, όπως στην περίπτωση servers που ήδη υπάρχουν).

  • Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (vi), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE, ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο).

  • Να γνωρίζετε πως να διαβάζετε τεκμηρίωση με την εντολή man (για τον περίεργο, η man man εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. το 1 είναι "απλές" εντολές, το 5 αρχεία/συμβάσεις και το 8 είναι για διαχείριση). Αναζητήστε man σελίδες με την εντολή apropos. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με help και help -d.

  • Μάθετε για την ανακατεύθυνση της εξόδου και της εισόδου με χρήση των τελεστών > και < και για τις σωληνώσεις εντολών με χρήση του |. Να γνωρίζετε ότι ο τελεστής > αντικαθιστά το αρχείο εξόδου και ο >> προσθέτει στο τέλος του αρχείου. Μάθετε για τα stdout και stderr.

  • Μάθετε για την επέκταση αρχείων glob με * (και ίσως του ? και [...]) και τη χρήση εισαγωγικών και τη διαφορά ανάμεσα στα διπλά " και τα μονά ' εισαγωγικά. (Δείτε περισσότερα για την επέκταση μεταβλητών παρακάτω.)

  • Εξοικειωθείτε με τη διαχείριση εργασιών στον Bash: &, ctrl-z, ctrl-c, jobs, fg, bg, kill κλπ.

  • Να γνωρίζετε την εντολή ssh και τα βασικά της αυθεντικοποίησης χωρίς κωδικό με χρήση των ssh-agent, ssh-add κλπ.

  • Βασική διαχείριση αρχείων: ls και ls -l (συγκεκριμένα, μάθετε τι σημαίνει κάθε στήλη της ls -l), less, head, tail και tail -f (ή ακόμη καλύτερα, less +F), ln και ln -s (μάθετε τις διαφορές και τα πλεονεκτήματα των κανονικών συνδέσμων σε σύγκριση με τους συμβολικούς), chown, chmod, du (για μία γρήγορη περίληψη της χρήσης του δίσκου: du -hs *). Για διαχείριση του συστήματος αρχείων, df, mount, fdisk, mkfs, lsblk. Μάθετε τι είναι inode (ls -i ή df -i).

  • Βασική διαχείριση δικτύου: ip ή ifconfig, dig.

  • Μάθετε και χρησιμοποιήστε ένα σύστημα διαχείρισης και ελέγχου εκδόσεων, όπως το git.

  • Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις grep/egrep. Τις επιλογές -i, -o, -v, -A, -B, και -C αξίζει να τις γνωρίζετε.

  • Μάθετε να χρησιμοποιείτε τις apt-get, yum, dnf ή pacman (ανάλογα με τη διανομή) για να βρίσκετε και εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την pip για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με pip).

Καθημερινή χρήση

  • Στον Bash, χρησιμοποιήστε Tab για να ολοκληρώσετε ορίσματα ή να εμφανίσετε σε λίστα όλες τις διαθέσιμες εντολές, ctrl-r για να αναζητήσετε στο ιστορικό των εντολών (αφού πατήσετε, πληκτρολογήστε για να αναζητήσετε, πατήστε ctrl-r επαναλαμβανόμενα για να περιηγηθείτε σε περισσότερα αποτελέσματα αναζήτησης, πατήστε Enter για να εκτελέσετε την εντολή που βρήκατε ή πατήστε το δεξί βέλος για να μεταφέρετε το αποτέλεσμα στην τρέχουσα γραμμή ώστε να μπορείτε να το επεξεργαστείτε).

  • Στον Bash, χρησιμοποιήστε ctrl-w για να διαγράψετε την τελευταία λέξη και ctrl-u για να τα διαγράψετε όλα μέχρι την αρχή της γραμμής. Χρησιμοποιήστε alt-b και alt-f για να μετακινηθείτε κατά μια λέξη, ctrl-a για να μετακινήσετε τον δείκτη στην αρχή της γραμμής, ctrl-e για να μετακινήσετε τον δείκτη στο τέλος της γραμμής, ctrl-k για να διαγράψετε ως το τέλος της γραμμής, ctrl-l για να καθαρίσετε την οθόνη. Δείτε τη man readline για όλες τις συντομεύσεις πληκτρολογίου στον Bash. Υπάρχουν πολλές. Για παράδειγμα, η alt-. επαναλαμβάνει κυκλικά τα προηγούμενα ορίσματα και η alt- αναπτύσσει ένα glob.

  • Εναλλακτικά, αν σας αρέσουν οι συντομεύσεις τύπου vi, χρησιμοποιήστε set -o vi (και set -o emacs για να επαναφέρετε).

  • Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα export EDITOR=vim), με ctrl-x ctrl-e θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή όπως γίνεται με vi, escape-v.

  • Για να δείτε πρόσφατες εντολές, history. Επίσης, υπάρχουν πολλές συντομεύσεις όπως !$ (τελευταίο όρισμα) και !! (τελευταία εντολή), αν και συχνά αντικαθίστανται από ctrl-r και alt-..

  • Πηγαίνετε στον κατάλογο home με cd. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον home κατάλογό σας με το πρόθεμα ~ (π.χ. ~/.bashrc). Σε sh script μπορείτε να αναφέρεστε στον κατάλογο home ως $HOME.

  • Για να πάτε στον προηγούμενο κατάλογο όπου εργαζόσαστε: cd -.

  • Αν έχετε γράψει μέχρι τη μέση μία εντολή, αλλά αλλάξατε γνώμη, πατήστε alt-# για να προσθέσετε ένα# στην αρχή και να την προσθέσετε ως ένα σχόλιο (ή χρησιμοποιήστε ctrl-a, #, enter). Μπορείτε να επιστρέψετε σε αυτή αργότερα με το ιστορικό εντολών.

  • Χρησιμοποιήστε xargsparallel). Έχει πολλές δυνατότητες. Σημειώστε ότι μπορείτε να ελέγξετε πόσα στοιχεία θα εκτελέσετε ανά γραμμή (-L) καθώς και παράλληλη εκτέλεση εντολών (-P). Αν δεν είστε σίγουρος ότι θα κάνει το σωστό, χρησιμοποιήστε πρώτα xargs echo. Επίσης, η επιλογή -I{} είναι χρήσιμη. Παραδείγματα:

      find . -name '*.py' | xargs grep some_function
      cat hosts | xargs -I{} ssh root@{} hostname
  • pstree -p είναι μία χρήσιμη εμφάνιση του δέντρου διεργασιών.

  • Χρησιμοποιήστε pgrep και pkill για να αναζητήσετε ή να στείλετε σήμα σε διεργασίες με βάση το όνομά τους (η επιλογή -f είναι χρήσιμη).

  • Να γνωρίζετε τα διάφορα σήματα που μπορείτε να στείλετε σε διεργασίες. Για παράδειγμα, για να αναστείλετε μία διεργασία χρησιμοποιήστε kill -STOP [pid]. Για ολόκληρη τη λίστα, δείτε man 7 signal

  • Χρησιμοποιήστε nohup ή disown αν θέλετε μία διεργασία παρασκηνίου να συνεχίσει να εκτελείται για πάντα.

  • Ελέγξτε ποιες διεργασίες είναι σε αναμονή για κλήση listen με netstat -lntp ή ss -plat (για TCP· προσθέστε -u για UDP).

  • Δείτε επίσης lsof για ανοιχτά sockets και αρχεία.

  • Δείτε uptime ή w για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία.

  • Χρησιμοποιήστε alias για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η alias ll='ls -latr' δημιουργεί μία νέα συντόμευση ll.

  • Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο ~/.bashrc, και προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν. Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό.

  • Βάλτε τις ρυθμίσεις των μεταβλητών περιβάλλοντος καθώς και τις εντολές που χρειάζεται να εκτελεστούν με την είσοδό σας στο ~/.bash_profile. Ξεχωριστές ρυθμίσεις θα χρειαστούν για τους φλοιούς που εκτελούνται από είσοδο από γραφικό περιβάλλον και εργασίες cron.

  • Συγχρονίστε τα αρχεία με τις ρυθμίσεις σας (π.χ. .bashrc και .bash_profile) μεταξύ διαφορετικών υπολογιστών χρησιμοποιώντας Git.

  • Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. "$FOO". Προτιμήστε τις επιλογές -0 ή -print0 για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. locate -0 pattern | xargs -0 ls -al ή find / -print0 -type d | xargs -0 ls -al. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόγχο επανάληψης for, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας IFS=$'\n'.

  • Σε scripts για Bash, χρησιμοποιήστε set -x (ή την παραλλαγή set -v, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε set -e για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε set -u για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή set -o pipefail, για να εμφανίσετε τα σφάλματα που εμφανίζονται σε σωληνώσεις εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή trap για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα:

      set -euo pipefail
      trap "echo 'error: Script failed: see failed command above'" ERR
  • Σε scripts για Bash, οι υποφλοιοί (γραμμένοι μέσα σε παρενθέσεις) είναι βολικοί τρόποι ομαδοποίησης εντολών. Ένα συνηθισμένο παράδειγμα είναι η προσωρινή μετακίνηση σε διαφορετικό τρέχοντα κατάλογο, π.χ.
      # do something in current dir
      (cd /some/other/dir && other-command)
      # continue in original dir
  • Στον Bash, σημειώστε ότι υπάρχουν πολλοί τρόποι επέκτασης μιας μεταβλητής. Έλεγχος του αν μία μεταβλητή υπάρχει: ${name:?error message}. Για παράδειγμα, αν ένα Bash script παίρνει ένα μόνο όρισμα, απλά γράψτε input_file=${1:?usage: $0 input_file}. Αριθμητική επέκταση: i=$(( (i + 1) % 5 )). Ακολουθίες: {1..10}. Περικοπή αλφαριθμητικών: ${var%suffix} και ${var#prefix}. Για παράδειγμα, αν var=foo.pdf, τότε η echo ${var%.pdf}.txt τυπώνει foo.txt.

  • Η επέκταση με αγκύλες χρησιμοποιώντας {...} μπορεί να μειώσει τις φορές που χρειάζεται να πληκτρολογήσετε ξανά παρόμοιο κείμενο και να αυτοματοποιήσει συνδυασμούς στοιχείων. Αυτό είναι χρήσιμο σε παραδείγματα όπως mv foo.{txt,pdf} some-dir (που μετακινεί και τα δύο αρχεία), cp somefile{,.bak} (που επεκτείνεται σε cp somefile somefile.bak) ή mkdir -p test-{a,b,c}/subtest-{1,2,3} (που επεκτείνεται σε όλους τους πιθανούς συνδυασμούς και δημιουργεί ένα δέντρο καταλόγων).

  • Μπορείτε να χειριστείτε την έξοδο μίας εντολής ως αρχείο <(some command). Για παράδειγμα, συγκρίνετε το τοπικό /etc/hosts με ένα απομακρυσμένο:

      diff /etc/hosts <(ssh somehost cat /etc/hosts)
  • Να γνωρίζετε για το "here documents" στον Bash, όπως στην cat <<EOF ....

  • Στον Bash, ανακατευθύνετε τόσο την έξοδο όσο και την έξοδο σφαλμάτων ως εξής: some-command >logfile 2>&1 ή some-command &>logfile. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει έναν χειριστή αρχείου ανοιχτό στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε </dev/null.

  • Χρησιμοποιήστε man ascii για έναν καλό πίνακα ASCII, με δεξαεξαδικές και δεκαδικές τιμές. Για γενικές πληροφορίες που αφορούν την κωδικοποίηση, οι man unicode, man utf-8 και man latin1είναι χρήσιμες.

  • Χρησιμοποιήστε screen ή tmux για να ενεργοποιήσετε την πολυπλεξία των σημάτων της οθόνης, ιδιαίτερα χρήσιμο σε απομακρυσμένες ssh sessions και για να διακόψετε ή να επαναφέρετε ένα session. H byobu μπορεί να βελτιώσει την οθόνη ή tmux παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση sessions είναι η dtach.

  • Με ssh, το να γνωρίζετε πως να προωθήσετε μία θύρα με τις επιλογές -L ή -D (και καμιά φορά με την -R) είναι χρήσιμο, π.χ. για να έχετε πρόσβαση σε ιστοσελίδες από έναν απομακρυσμένο server.

  • Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό ~/.ssh/config περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που πέφτουν σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου:

      TCPKeepAlive=yes
      ServerAliveInterval=15
      ServerAliveCountMax=6
      Compression=yes
      ControlMaster auto
      ControlPath /tmp/%r@%h:%p
      ControlPersist yes
  • Μερικές άλλες επιλογές σχετικές με την ssh είναι ευαίσθητες όσον αφορά την ασφάλεια και θα πρέπει να ενεργοποιούνται με προσοχή, π.χ. ανά υποδίκτυο ή host ή σε έμπιστα δίκτυα: StrictHostKeyChecking=no, ForwardAgent=yes

  • ´Εχετε υπόψη σας την εντολή mosh ως μία εναλλακτική της ssh που χρησιμοποιεί UDP, αποφεύγοντας τις συνδέσεις που πέφτουν και διευκολύνοντας τη διαδικασία (απαιτεί ρύθμιση στον server).

  • Για να πάρετε τα δικαιώματα ενός αρχείου σε οκταδική μορφή, πράγμα που είναι χρήσιμο για την παραμετροποίηση του συστήματος αλλά δεν είναι διαθέσιμο με την ls και είναι εύκολο να γίνει άτσαλα, χρησιμοποιήστε κάτι όπως

      stat -c '%A %a %n' /etc/timezone
  • Για διαδραστική επιλογή τιμών από την έξοδο μίας άλλης εντολής, χρησιμοποιήστε percol ή fzf.

  • Για διάδραση με αρχεία με βάση την έξοδο μιας άλλη εντολής (όπως της git), χρησιμοποιήστε fpp (PathPicker).

  • Για έναν απλό web server και για όλα τα αρχεία στον τρέχοντα κατάλογο (και υποκαταλόγους) διαθέσιμα σε οποιονδήποτε στο δίκτυο, χρησιμοποιήστε: python -m SimpleHTTPServer 7777 (για τη θύρα 7777 και Python 2) και python -m http.server 7777 (για θύρα 7777 και Python 3).

  • Για την εκτέλεση μίας εντολής με δικαιώματα, χρησιμοποιήστε sudo (για root) ή sudo -u (για άλλον χρήστη). Χρησιμοποιήστε su ή sudo bash για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε su - για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης.

Εντολές σε μία γραμμή

Μερικά παραδείγματα σωλήνωσης εντολών:

  • Είναι εξαιρετικά βοηθητικό ορισμένες φορές το γεγονός ότι μπορείτε να εφαρμόσετε τις πράξεις της τομής, της ένωσης και της διαφοράς σε αρχεία κειμένου με τις εντολές sort/uniq. Έστωσαν a και b αρχεία κείμενου που καμία γραμμή τους δεν επαναλαμβάνεται. Αυτό είναι γρήγορο και δουλεύει σε αρχεία οποιουδήποτε μεγέθους έως πολλά gigabytes. (H Sort δεν περιορίζεται από τη μνήμη, αν και ίσως χρειαστεί να χρησιμοποιήσετε την επιλογή -T, αν ο /tmp βρίσκεται σε μικρό root διαμέρισμα. Επίσης, δείτε την παρατήρηση παραπάνω για τη μεταβλητή LC_ALL και την επιλογή -u της εντολής sort (παραλείπεται παρακάτω ώστε να είναι πιο ξεκάθαρο το παράδειγμα).
      cat a b | sort | uniq > c   # c is a union b
      cat a b | sort | uniq -d > c   # c is a intersect b
      cat a b b | sort | uniq -u > c   # c is set difference a - b
  • Χρησιμοποιήστε grep . * για να εξετάσετε γρήγορα το περιεχόμενο όλων των αρχείων ενός καταλόγου (έτσι κάθε γραμμή αρχείου εμφανίζεται σε ζεύγος με το όνομα του αρχείου), ή head -100 * (έτσι κάθε αρχείο έχει μια κεφαλίδα). Αυτό μπορεί να είναι χρήσιμο για καταλόγους γεμάτους με αρχεία ρυθμίσεων όπως αυτά στους καταλόγους /sys, /proc, /etc.

  • Η άθροιση όλων των αριθμών στην τρίτη στήλη ενός αρχείου κειμένου (αυτό είναι μάλλον 3X γρηγορότερο και απαιτεί 3X λιγότερο κώδικα από την αντίστοιχη υλοποίηση σε Python):

      awk '{ x += $3 } END { print x }' myfile
  • Για να δείτε μεγέθη/ημερομηνίες σε ένα δέντρο αρχείων, η παρακάτω είναι σα μια αναδρομική ls -l, αλλά είναι πιο ευανάγνωστη από ls -lR:
      find . -type f -ls
  • Έστω ότι έχετε ένα αρχείο κειμένου, όπως log ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος acct_id που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε acct_id:
      cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn
  • Για να παρακολουθείτε συνεχώς αλλαγές, χρησιμοποιήστε watch, π.χ. ελέγξτε αλλαγές σε αρχεία ενός καταλόγου με watch -d -n 2 'ls -rtlh | tail' ή σε ρυθμίσεις δικτύου ενώ επιδιορθώνετε τις ρυθμίσεις wifi με watch -d -n 2 ifconfig.

  • Εκτελέστε αυτή τη μέθοδο για να πάρετε μια τυχαία συμβουλή από αυτό το έγγραφο (αναλύει Markdown και εξάγει ένα στοιχείο):

      function taocl() {
        curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |
          pandoc -f markdown -t html |
          xmlstarlet fo --html --dropdtd |
          xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
          xmlstarlet unesc | fmt -80
      }