Προγραμματισμός Ruby. Το τερματικό του αρχάριου - μέρος 2
Damian Watroba
Software Engineer
Γεια σας! Αυτή τη φορά, έχουμε ετοιμάσει ένα άλλο σύνολο χρήσιμων εντολών για να σας βοηθήσουμε να εξοικειωθείτε με τη χρήση του τερματικού. Το πρώτο μέρος του σεμιναρίου μπορείτε να το βρείτε εδώ: Το τερματικό για αρχάριους - μέρος 1.
Τερματικό - Θεωρία
Πού βρίσκομαι;
ημερομηνία - Αν έχουμε τέτοια ανάγκη και επιθυμία, μπορούμε να ελέγξουμε την τρέχουσα ημερομηνία στο τερματικό.
damian@rubydev:~$ ημερομηνία
wto, 7 sty 2020,
Ένταξη και καταχώριση
cat (concatenate) - αυτή η εντολή έχει πολλές χρήσεις, αλλά η πιο δημοφιλής είναι η εμφάνιση των περιεχομένων των αρχείων.
Στο παρακάτω παράδειγμα, μπορείτε να δείτε δύο αρχεία - ruby_1.txt και ruby_2.txt - μαζί με το περιεχόμενό τους. Το cat [όνομα αρχείου] εμφανίζει τα περιεχόμενα ενός μόνο αρχείου, ενώ η εντολή cat [όνομα αρχείου 1] [όνομα αρχείου 2] εμφανίζει τα περιεχόμενα και των δύο αρχείων με τη σωστή σειρά.
Υπάρχει ένα ακόμη πράγμα που μπορούμε να κάνουμε με το cat εντολή - ανακατευθύνει την τυπική έξοδο σε ένα νέο αρχείο χρησιμοποιώντας την εντολή > σημάδι. Αυτό σημαίνει ότι το περιεχόμενο που εμφανίζεται στην οθόνη θα ανακατευθύνεται σε ένα δηλωμένο αρχείο. Εάν το δηλωμένο αρχείο δεν υπάρχει στην καθορισμένη θέση, θα δημιουργηθεί αυτόματα.
Τι έχουμε εδώ;
ps (κατάσταση διεργασιών) - εκτυπώνει βασικές πληροφορίες σχετικά με τις διεργασίες στο σύστημα. Αυτή η εντολή είναι συγκρίσιμη με τη Διαχείριση εργασιών των Windows, όπου έχετε μια λίστα όλων των εφαρμογών και διεργασιών που εκτελούνται. Κάθε εφαρμογή, πρόγραμμα ή εντολή που εκτελείται γίνεται διεργασία με το μοναδικό της αναγνωριστικό, το λεγόμενο PID (Process IDentifier).
Όπως μπορείτε να δείτε, η ps η διοίκηση δεν μας έδειξε πολλά. Για να ελέγξουμε όλες τις ενεργές διεργασίες, θα πρέπει να καλέσουμε την εντολή ps με ένα aux επιχείρημα.
Aby zobaczyc wszystkie procesy w systemie, uzywajac skladni BSD:
ps ax
ps axu
kill - μερικές φορές μια εφαρμογή ή ένα πρόγραμμα σταματά να ανταποκρίνεται. Σε αυτό το σημείο kill εντολή είναι χρήσιμη. Για να kill μια διαδικασία, το μόνο που χρειάζεται να κάνετε είναι να συμπληρώσετε το kill εντολή με το PID της.
Πώς βρίσκετε το PID αυτής της διεργασίας; Το καλύτερο είναι να χρησιμοποιήσετε το προαναφερθέν ps aux εντολή. Μπορεί να συμβεί ότι kill από μόνη της δεν είναι αρκετή, επειδή η διεργασία περιμένει το τέλος μιας άλλης εξαρτημένης διεργασίας. Επομένως, kill χρησιμοποιείται επίσης συχνά με το -9 επιλογή. Σημαίνει τον άμεσο τερματισμό της εκτελούμενης διαδικασίας, οπότε πριν χρησιμοποιήσετε αυτή την επιλογή, βεβαιωθείτε ότι όλες οι σημαντικές αλλαγές έχουν αποθηκευτεί. Ας δούμε ένα παράδειγμα μιας τέτοιας εντολής:
damian@rubydev:~$ kill -9 1234
Echo!
echo - αυτή είναι η εντολή που επιστρέφει το κείμενο που της έχει ανατεθεί. Ομοίως με την περίπτωση της cat, μπορείτε να κατευθύνετε το εισαγόμενο κείμενο σε ένα αρχείο με τη βοήθεια της εντολής echo εντολή.
Μπορεί να είναι χρήσιμο
Όταν θέλουμε να δούμε το ιστορικό των εντολών που έχουμε εισάγει προηγουμένως, μπορούμε να χρησιμοποιήσουμε την εντολή ιστορία εντολή.
Αν θέλετε να καθαρίσετε το παράθυρο του τερματικού, χρειάζεστε την εντολή σαφές εντολή.
Το έξοδος η εντολή, όπως υποδηλώνει το όνομα, κλείνει το τερματικό ή την τρέχουσα ανοιχτή καρτέλα.
Η αρχή και το τέλος
Το κεφάλι εμφανίζει την αρχή ενός αρχείου ή της τυπικής εξόδου. Η προεπιλεγμένη τιμή είναι οι δέκα πρώτες γραμμές. Μπορείτε να την προσαρμόσετε με την εντολή -n όπου μπορείτε να βάλετε οποιονδήποτε ακέραιο αριθμό κάτω από n. Για να το δείξω καλύτερα αυτό, θα χρησιμοποιήσω ένα παράδειγμα.
Θα χρειαστούμε ένα αρχείο κειμένου. Ας χρησιμοποιήσουμε το ήδη αναφερθέν ιστορία εντολή και την ανακατεύθυνση > χαρακτήρα.
damian@rubydev:~$ history > history.txt
Με αυτόν τον τρόπο δημιουργήθηκε ένα αρχείο με ολόκληρο το ιστορικό των εντολών. Στη συνέχεια, χρησιμοποιώντας head -15 history.txt, είναι δυνατόν να εμφανιστούν οι πρώτες δεκαπέντε εντολές που εισήχθησαν στο τερματικό.
Ομοίως, η ουρά θα μας δείξει τις τελευταίες γραμμές του επιλεγμένου αρχείου.
Αναζήτηση
grep (global regular expression print) χρησιμοποιείται για την αναζήτηση στο κείμενο μιας συμβολοσειράς που ταιριάζει με τη δεδομένη κανονική έκφραση (RegExp). Χρησιμοποιείται πολύ συχνά για την εύρεση μιας συγκεκριμένης έκφρασης σε ένα αρχείο ή για το "φιλτράρισμα" της επιστρεφόμενης εξόδου. Για το σκοπό αυτό, ας χρησιμοποιήσουμε την προηγουμένως δημιουργηθείσα history.txt αρχείο και ελέγξτε πόσο συχνά το ps εντολή χρησιμοποιήθηκε μέχρι στιγμής:
damian@rubydev:~$ grep ps history.txt
82 echo "Lorem ipsum rubydev 1" > ruby_1.txt
84 echo "Lorem ipsum rubydev 2" > ruby_2.txt
92 ps
93 ps aux
94 ps --help
95 man ps
96 ps -h
98 ps --help
99 ps -ejH
100 ps aux
101 man ps
102 ps -aux
103 ps aux
109 history | grep ps
113 echo "lorem ipsum rubydev" > rubydev.rb
Όπως μπορείτε να δείτε, grep βρέθηκαν επίσης λέξεις που περιέχουν τη φράση ps. Η έκφραση που χρησιμοποιήθηκε στο παράδειγμά μας ήταν ps μόνο. Σκοπεύω να γράψω ένα ξεχωριστό άρθρο για τις κανονικές εκφράσεις, αλλά προς το παρόν σας ενθαρρύνω να εξερευνήσετε το θέμα μόνοι σας. Οι βασικές γνώσεις αρκούν προς το παρόν.
Συνδυασμός εντολών
| (pipe) είναι ένα σύμβολο που μας επιτρέπει να συνδυάσουμε διάφορες εντολές (διεργασίες) και να τις εκκινήσουμε ταυτόχρονα. Συγκεκριμένα, μπορούμε να συνδυάσουμε την έξοδο (stdout) μιας εντολής με την είσοδο (stdin) της άλλης. Πρόκειται για ένα πολύ χρήσιμο χαρακτηριστικό.
Η έξοδος (stdout) του προγράμματος ιστορία θα αναζητηθεί από την εντολή grep εντολή και να επιστρέψει όλες τις συμβολοσειρές με την αντίστοιχη ps έκφραση.
history | tail -5
Σε αυτή την περίπτωση, χρησιμοποιώντας το ουρά με την εντολή -5 θα εμφανίσει τις πέντε τελευταίες γραμμές της εξόδου (stdout) του προγράμματος ιστορία εντολή.
Αυτός ο συνδυασμός είναι ιδιαίτερα χρήσιμος όταν αναζητάτε το PID της διεργασίας που θέλετε να τερματίσετε. Θυμηθείτε ότι η εκτέλεση της grep εντολή θα δημιουργήσει επίσης μια διεργασία, οπότε συνήθως θα βλέπετε το PID της grep διαδικασία στην τελευταία γραμμή.
Πρόσβαση σε αρχεία και καταλόγους
Πριν φτάσουμε στην εντολή αλλαγής του τύπου των αδειών πρόσβασης, αξίζει να αναφέρουμε ότι κάθε λειτουργικό σύστημα έχει τα λεγόμενα δικαιώματα πρόσβασης. Αυτό σημαίνει ότι κάθε κατάλογος ή αρχείο περιέχει μεταδεδομένα σχετικά με το ποιος έχει πρόσβαση σε αυτό. Η πρώτη στήλη της παρακάτω "εξόδου" μας τα λέει όλα (πληροφορίες εξόδου που εμφανίζονται στο παράθυρο του τερματικού):
history | tail -5
Η πρόσβαση σε αρχεία και καταλόγους ορίζεται από τρία στοιχεία. Το πρώτο (user) σημαίνει έναν μεμονωμένο χρήστη, το δεύτερο (group) σημαίνει μια ομάδα, ενώ το τρίτο (other) αφορά όλους τους άλλους χρήστες.
d - καθορίζει αν πρόκειται για κατάλογο ή αρχείο (d - κατάλογος, f - αρχείο)
rwx - δικαιώματα χρηστών
r-x - δικαιώματα για την ομάδα
r-x - εξουσιοδοτημένο για όλους τους άλλους χρήστες
Για να το απλοποιήσετε, μπορείτε να το χωρίσετε σε τρία μέρη:
Ας πάμε τώρα στο ίδιο το νόημα αυτών των δικαιωμάτων:
r (read) - σας επιτρέπει να διαβάσετε το περιεχόμενο
w (write) - σας επιτρέπει να τροποποιήσετε το περιεχόμενο
x (execute) - σας επιτρέπει να εκτελέσετε ένα αρχείο ή να ανοίξετε έναν κατάλογο
Τα δικαιώματα αρχείων ή καταλόγων μπορούν να αλλάξουν χρησιμοποιώντας την εντολή chmod (αλλαγή λειτουργίας). Ο ευκολότερος τρόπος για να αλλάξετε τα δικαιώματα είναι να χρησιμοποιήσετε το ενσωματωμένο σύστημα και να δώσετε τον αριθμό του δικαιώματος για τον χρήστη, την ομάδα και άλλους.
Για να εφαρμόσουμε αυτές τις γνώσεις στην πράξη, ας αλλάξουμε τα δικαιώματα για τα προαναφερθέντα βίντεο για ομάδες και άλλους χρήστες - αφαιρέστε όλα τα δικαιώματα για αυτούς τους δύο, αλλά αφήστε την πλήρη άδεια μόνο για τον μεμονωμένο χρήστη. Σύμφωνα με τον παραπάνω πίνακα, το "χωρίς δικαιώματα" υποδηλώνεται από τον αριθμό 0. Αμέσως μετά την chmod εντολή, πρέπει να εισάγετε τρία ψηφία, καθένα από τα οποία καθορίζει τα δικαιώματα για τη συγκεκριμένη κατηγορία (χρήστης - ομάδα - άλλοι). Στο τέλος, δώστε το όνομα του αρχείου ή του καταλόγου. Η εντολή θα πρέπει να μοιάζει ως εξής:
damian@rubydev:~$ chmod 700 Wideo
damian@rubydev:~$ ls -l | tail -1
drwx------ 2 damian damian 4096 sty 6 17:41 Wideo
Περίληψη
Υπάρχει ένα ολόκληρο σμήνος άλλων εντολών και ο ευκολότερος τρόπος για να τις κατακτήσετε όλες είναι να εξασκηθείτε στην επίλυση συγκεκριμένων προβλημάτων. Αν θέλετε να μάθετε περισσότερα γι' αυτές, Προτείνω το λεξικό εντολών του Linux τσέπης. Κατά τη γνώμη μου, είναι ένας ευχάριστος τρόπος για να σκοτώσει κανείς την ώρα του στα μέσα μαζικής μεταφοράς.