Το υλικό, τη μετάφραση του οποίου δημοσιεύουμε σήμερα, προορίζεται για όσους θέλουν να κυριαρχήσουν στη γραμμή εντολών του Linux. Η δυνατότητα αποτελεσματικής χρήσης αυτού του εργαλείου μπορεί να εξοικονομήσει πολύ χρόνο. Συγκεκριμένα, θα μιλήσουμε για το κέλυφος Bash και 21 χρήσιμες εντολές εδώ. Θα μιλήσουμε επίσης για το πώς να χρησιμοποιήσετε σημαίες εντολών και ψευδώνυμα Bash για να επιταχύνετε την πληκτρολόγηση μεγάλων εντολών.
→
Όροι
Καθώς μαθαίνετε να εργάζεστε με τη γραμμή εντολών του Linux, θα συναντήσετε πολλές έννοιες που είναι χρήσιμες στην πλοήγηση. Μερικά από αυτά, όπως το "Linux" και το "Unix", ή το "shell" και το "terminal", μερικές φορές συγχέονται. Ας μιλήσουμε για αυτούς και άλλους σημαντικούς όρους.
Τώρα που καλύψαμε τους σημαντικούς όρους, θέλω να επισημάνω ότι θα χρησιμοποιήσω τους όρους "Bash", "shell" και "command line" εναλλακτικά εδώ, καθώς και τους όρους "κατάλογος" και "φάκελος".
Standard stdin
), τυπική έξοδος (τυπική έξοδος, stdout
) και τυπική έξοδος σφάλματος (τυπικό σφάλμα, stderr
).
Αν στο παράδειγμα εντολές που θα δοθούν παρακάτω, θα βρείτε κάτι σαν my_whatever
- αυτό σημαίνει ότι αυτό το κομμάτι πρέπει να αντικατασταθεί με κάτι δικό σας. Για παράδειγμα, το όνομα ενός αρχείου.
Τώρα, πριν προχωρήσουμε στην ανάλυση των εντολών στις οποίες είναι αφιερωμένο αυτό το υλικό, ας ρίξουμε μια ματιά στη λίστα τους και τις σύντομες περιγραφές τους.
21 Εντολές Bash
▍Λήψη πληροφοριών
man
: Εμφανίζει τον οδηγό χρήστη (βοήθεια) για την εντολή.pwd
: εμφανίζει πληροφορίες σχετικά με τον κατάλογο εργασίας.ls
: εμφανίζει τα περιεχόμενα ενός καταλόγου.ps
: Σας επιτρέπει να προβάλλετε πληροφορίες σχετικά με τις διεργασίες που εκτελούνται.
▍Χειρισμός συστήματος αρχείων
cd
: αλλαγή καταλόγου εργασίας.touch
: δημιουργία αρχείου.mkdir
: δημιουργία καταλόγου.cp
: Αντιγραφή αρχείου.mv
: Μετακίνηση ή διαγραφή αρχείου.ln
: δημιουργία συνδέσμου.
▍Ανακατεύθυνση I/O και αγωγοί
<
: ανακατεύθυνσηstdin
.>
: ανακατεύθυνσηstdout
.|
: διοχέτευσε την έξοδο μιας εντολής στην είσοδο μιας άλλης εντολής.
▍Ανάγνωση αρχείων
head
: διαβάστε την αρχή του αρχείου.tail
: ανάγνωση τέλους αρχείου.cat
: Διαβάστε ένα αρχείο και εκτυπώστε τα περιεχόμενά του στην οθόνη ή συνδέστε αρχεία.
▍Διαγραφή αρχείων, διακοπή διαδικασιών
rm
: Διαγραφή αρχείου.kill
: σταματήστε τη διαδικασία.
▍Αναζήτηση
grep
: αναζήτηση πληροφοριών.ag
: προηγμένη εντολή για αναζήτηση.
▍Αρχειοθέτηση
tar
: δημιουργία αρχείων και εργασία με αυτά.
Ας μιλήσουμε για αυτές τις εντολές με περισσότερες λεπτομέρειες.
Στοιχεία ομάδας
Αρχικά, ας ασχοληθούμε με τις εντολές, τα αποτελέσματα των οποίων εκδίδονται στη φόρμα stdout
. Συνήθως αυτά τα αποτελέσματα εμφανίζονται σε ένα παράθυρο τερματικού.
▍Λήψη πληροφοριών
man command_name
: εμφανίζει τον οδηγό εντολών, δηλαδή πληροφορίες βοήθειας.
pwd
: εμφάνιση της διαδρομής προς τον τρέχοντα κατάλογο εργασίας. Κατά τη διάρκεια της εργασίας με τη γραμμή εντολών, ο χρήστης συχνά χρειάζεται να ανακαλύψει πού ακριβώς βρίσκεται στο σύστημα.
ls
: εμφάνιση των περιεχομένων ενός καταλόγου. Αυτή η εντολή χρησιμοποιείται επίσης αρκετά συχνά.
ls -a
: εμφάνιση κρυφών αρχείων. η σημαία εφαρμόζεται εδώ -a
εντολές ls
. Η χρήση σημαιών βοηθά στην προσαρμογή της συμπεριφοράς των εντολών.
ls -l
: Εμφάνιση λεπτομερών πληροφοριών σχετικά με αρχεία.
Σημειώστε ότι οι σημαίες μπορούν να συνδυαστούν. Για παράδειγμα - όπως αυτό: ls -al
.
ps
: Προβολή διεργασιών που εκτελούνται.
ps -e
: Εμφάνιση πληροφοριών σχετικά με όλες τις διεργασίες που εκτελούνται, όχι μόνο αυτές που σχετίζονται με το τρέχον κέλυφος χρήστη. Αυτή η εντολή χρησιμοποιείται συχνά σε αυτή τη μορφή.
▍Χειρισμός συστήματος αρχείων
cd my_directory
: αλλαγή καταλόγου εργασίας σε my_directory
. Για να ανεβείτε ένα επίπεδο στο δέντρο καταλόγου, χρησιμοποιήστε το my_directory
σχετική διαδρομή ../
.
εντολή cd
touch my_file
: δημιουργία αρχείου my_file
κατά μήκος της δεδομένης διαδρομής.
mkdir my_directory
: δημιουργία φακέλου my_directory
κατά μήκος της δεδομένης διαδρομής.
mv my_file target_directory
: μετακίνηση αρχείου my_file
σε ένα φάκελο target_directory
. Όταν προσδιορίζετε τον κατάλογο προορισμού, πρέπει να χρησιμοποιήσετε την απόλυτη διαδρομή προς αυτόν (και όχι μια κατασκευή όπως ../
).
ομάδα mv
μπορεί επίσης να χρησιμοποιηθεί για μετονομασία αρχείων ή φακέλων. Για παράδειγμα, μπορεί να μοιάζει με αυτό:
mv my_old_file_name.jpg my_new_file_name.jpg
: δημιουργία αντιγράφου αρχείου
cp my_source_file target_directorymy_source_file
και βάλτε το σε ένα φάκελο target_directory
.
ln -s my_source_file my_target_file
: δημιουργία συμβολικού συνδέσμου my_target_file
ανά αρχείο my_source_file
. Εάν αλλάξετε τη σύνδεση, θα αλλάξει και το αρχικό αρχείο.
Αν το αρχείο my_source_file
τότε θα διαγραφεί my_target_file
θα παραμείνει. Σημαία -s
εντολές ln
σας επιτρέπει να δημιουργείτε συνδέσμους για καταλόγους.
Τώρα ας μιλήσουμε για την ανακατεύθυνση εισόδου/εξόδου και τους αγωγούς.
▍Ανακατεύθυνση I/O και αγωγοί
my_command < my_file
: αντικαθιστά την τυπική περιγραφή αρχείου εισόδου (stdin
) ανά αρχείο my_file
. Αυτό μπορεί να είναι χρήσιμο εάν η εντολή περιμένει κάποια είσοδο από το πληκτρολόγιο και αυτά τα δεδομένα είναι ήδη αποθηκευμένα σε ένα αρχείο.
my_command > my_file
: ανακατευθύνει τα αποτελέσματα της εντολής, δηλ. σε αυτό που κανονικά θα πήγαινε stdout
και έξοδο στην οθόνη, σε ένα αρχείο my_file
. Αν το αρχείο my_file
δεν υπάρχει - δημιουργείται. Εάν το αρχείο υπάρχει, αντικαθίσταται.
Για παράδειγμα, μετά την εκτέλεση της εντολής ls > my_folder_contents.txt
θα δημιουργηθεί ένα αρχείο κειμένου που περιέχει μια λίστα με αυτά που βρίσκονται στον τρέχοντα κατάλογο εργασίας.
Αν αντί για το σύμβολο >
χρησιμοποιήστε την κατασκευή >>
, λοιπόν, υπό την προϋπόθεση ότι υπάρχει το αρχείο στο οποίο ανακατευθύνεται η έξοδος της εντολής, αυτό το αρχείο δεν θα αντικατασταθεί. Τα δεδομένα θα προστεθούν στο τέλος αυτού του αρχείου.
Τώρα ας ρίξουμε μια ματιά στην επεξεργασία αγωγών δεδομένων.
Η έξοδος μιας εντολής τροφοδοτείται στην είσοδο μιας άλλης εντολής. Είναι σαν να συνδέεις έναν σωλήνα με τον άλλο
first_command | second_command
: σύμβολο μεταφορέα, |
, χρησιμοποιείται για την αποστολή της εξόδου μιας εντολής σε μια άλλη εντολή. Τι στέλνει η εντολή στην αριστερή πλευρά της περιγραφόμενης δομής stdout
, Πέφτω μέσα stdin
εντολή στα δεξιά του συμβόλου του αγωγού.
Στο Linux, τα δεδομένα μπορούν να διοχετευθούν χρησιμοποιώντας σχεδόν οποιαδήποτε καλά διαμορφωμένη εντολή. Λέγεται συχνά ότι τα πάντα στο Linux είναι μια σωλήνωση.
Μπορείτε να συνδέσετε πολλές εντολές χρησιμοποιώντας το σύμβολο του αγωγού. Μοιάζει με αυτό:
first_command | second_command | third_command
Ένας αγωγός πολλών εντολών μπορεί να συγκριθεί με έναν αγωγό
Σημειώστε ότι όταν η εντολή στα αριστερά του συμβόλου |
, βγάζει κάτι σε stdout
, αυτό που βγάζει είναι άμεσα διαθέσιμο ως stdin
δεύτερη ομάδα. Δηλαδή, αποδεικνύεται ότι, χρησιμοποιώντας το pipeline, έχουμε να κάνουμε με παράλληλη εκτέλεση εντολών. Μερικές φορές αυτό μπορεί να οδηγήσει σε απροσδόκητα αποτελέσματα. Μπορείτε να διαβάσετε λεπτομέρειες σχετικά με αυτό
Τώρα ας μιλήσουμε για την ανάγνωση δεδομένων από αρχεία και την εμφάνισή τους στην οθόνη.
▍Ανάγνωση αρχείων
head my_file
: διαβάζει γραμμές από την αρχή ενός αρχείου και τις εκτυπώνει στην οθόνη. Μπορείτε να διαβάσετε όχι μόνο τα περιεχόμενα των αρχείων, αλλά και τι βγάζουν οι εντολές stdin
χρησιμοποιώντας αυτήν την εντολή ως μέρος του pipeline.
tail my_file
: διαβάζει γραμμές από το τέλος του αρχείου. Αυτή η εντολή μπορεί επίσης να χρησιμοποιηθεί σε μια διοχέτευση.
Το κεφάλι (κεφάλι) είναι μπροστά και η ουρά (ουρά) είναι πίσω
Εάν εργάζεστε με δεδομένα χρησιμοποιώντας τη βιβλιοθήκη pandas, τότε οι εντολές head
и tail
θα πρέπει να σας είναι οικείο. Αν δεν συμβαίνει αυτό, ρίξτε μια ματιά στην παραπάνω εικόνα και θα τα θυμηθείτε εύκολα.
Εξετάστε άλλους τρόπους ανάγνωσης αρχείων, ας μιλήσουμε για την εντολή cat
.
Ομάδα cat
είτε εκτυπώνει τα περιεχόμενα ενός αρχείου στην οθόνη είτε συνενώνει πολλά αρχεία. Εξαρτάται από το πόσα αρχεία περνούν σε αυτήν την εντολή όταν καλείται.
εντολή γάτας
cat my_one_file.txt
: όταν ένα μεμονωμένο αρχείο μεταβιβάζεται σε αυτήν την εντολή, το εξάγει σε stdout
.
Εάν του δώσετε δύο ή περισσότερα αρχεία, τότε συμπεριφέρεται διαφορετικά.
cat my_file1.txt my_file2.txt
: έχοντας λάβει πολλά αρχεία ως είσοδο, αυτή η εντολή συνενώνει τα περιεχόμενά τους και εμφανίζει τι συνέβη stdout
.
Εάν το αποτέλεσμα της συνένωσης αρχείων πρέπει να αποθηκευτεί ως νέο αρχείο, μπορείτε να χρησιμοποιήσετε τον τελεστή >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Τώρα ας μιλήσουμε για το πώς να διαγράψετε αρχεία και να σταματήσετε τις διαδικασίες.
▍Διαγραφή αρχείων, διακοπή διαδικασιών
rm my_file
: διαγραφή φακέλου my_file
.
rm -r my_folder
: διαγράφει έναν φάκελο my_folder
και όλα τα αρχεία και τους φακέλους που περιέχει. Σημαία -r
υποδεικνύει ότι η εντολή θα εκτελεστεί σε αναδρομική λειτουργία.
Για να αποτρέψετε το σύστημα να ζητά επιβεβαίωση κάθε φορά που διαγράφεται ένα αρχείο ή φάκελος, χρησιμοποιήστε τη σημαία -f
.
kill 012345
: Διακόπτει την καθορισμένη διαδικασία εκτέλεσης, δίνοντάς της χρόνο να τερματιστεί με χάρη.
kill -9 012345
: Τερματίζει αναγκαστικά την καθορισμένη εκτελούμενη διαδικασία. Προβολή σημαίας -s SIGKILL
σημαίνει το ίδιο με τη σημαία -9
.
▍Αναζήτηση
Μπορείτε να χρησιμοποιήσετε διαφορετικές εντολές για την αναζήτηση δεδομένων. Συγκεκριμένα - grep
, ag
и ack
. Ας ξεκινήσουμε τη γνωριμία μας με αυτές τις εντολές με grep
. Αυτή είναι μια δοκιμασμένη στο χρόνο, αξιόπιστη εντολή, η οποία, ωστόσο, είναι πιο αργή από άλλες και δεν είναι τόσο βολική στη χρήση όσο αυτές.
εντολή grep
grep my_regex my_file
: αναζητήσεις my_regex
в my_file
. Εάν βρεθεί αντιστοιχία, επιστρέφεται ολόκληρη η συμβολοσειρά, για κάθε αντιστοιχία. Προκαθορισμένο my_regex
αντιμετωπίζεται ως κανονική έκφραση.
grep -i my_regex my_file
: Η αναζήτηση πραγματοποιείται με τρόπο χωρίς διάκριση πεζών-κεφαλαίων.
grep -v my_regex my_file
: επιστρέφει όλες τις σειρές που δεν περιέχουν my_regex
. Σημαία -v
σημαίνει αντιστροφή, μοιάζει με τον τελεστή NOT
, βρίσκεται σε πολλές γλώσσες προγραμματισμού.
grep -c my_regex my_file
: Επιστρέφει πληροφορίες σχετικά με τον αριθμό των αντιστοιχιών που βρέθηκαν στο αρχείο για το μοτίβο αναζήτησης.
grep -R my_regex my_folder
: εκτελεί μια αναδρομική αναζήτηση σε όλα τα αρχεία που βρίσκονται στον καθορισμένο φάκελο και στους φακέλους που είναι ένθετοι σε αυτόν.
Τώρα ας μιλήσουμε για την ομάδα ag
. Ήρθε αργότερα grep
, είναι πιο γρήγορο, είναι πιο βολικό να δουλεύεις μαζί του.
εντολή ag
ag my_regex my_file
: επιστρέφει πληροφορίες σχετικά με τους αριθμούς των γραμμών και τις ίδιες τις γραμμές, στις οποίες βρέθηκαν αντιστοιχίες my_regex
.
ag -i my_regex my_file
: Η αναζήτηση πραγματοποιείται με τρόπο χωρίς διάκριση πεζών-κεφαλαίων.
Ομάδα ag
αυτόματη επεξεργασία του αρχείου .gitignore
και αποκλείει από την έξοδο ό,τι βρίσκεται στους φακέλους ή τα αρχεία που παρατίθενται σε αυτό το αρχείο. Είναι πολύ άνετο.
ag my_regex my_file -- skip-vcs-ignores
: περιεχόμενα αρχείων αυτόματου ελέγχου έκδοσης (όπως .gitignore
) δεν λαμβάνεται υπόψη στην αναζήτηση.
Επιπλέον, για να το πει στην ομάδα ag
σε ποιες διαδρομές αρχείου θέλετε να εξαιρέσετε από την αναζήτηση, μπορείτε να δημιουργήσετε ένα αρχείο .agignore
.
Στην αρχή αυτής της ενότητας, αναφέραμε την εντολή ack
. Της ομάδας ack
и ag
πολύ παρόμοια, μπορούμε να πούμε ότι είναι 99% εναλλάξιμα. Ωστόσο, η ομάδα ag
λειτουργεί πιο γρήγορα, γι' αυτό το περιέγραψα.
Τώρα ας μιλήσουμε για την εργασία με τα αρχεία.
▍Αρχειοθέτηση
tar my_source_directory
: συνενώνει αρχεία από έναν φάκελο my_source_directory
σε ένα ενιαίο αρχείο tarball. Τέτοια αρχεία είναι χρήσιμα για τη μεταφορά μεγάλων συνόλων αρχείων σε κάποιον.
εντολή πίσσας
Τα αρχεία tarball που δημιουργούνται από αυτήν την εντολή είναι αρχεία με την επέκταση .tar
(Αρχείο Ταινιών). Το γεγονός ότι η λέξη "tape" (ταινία) είναι κρυμμένη στο όνομα της εντολής και στην επέκταση των ονομάτων των αρχείων που δημιουργεί δείχνει πόσο καιρό υπάρχει αυτή η εντολή.
tar -cf my_file.tar my_source_directory
: δημιουργεί ένα αρχείο tarball με το όνομα my_file.tar
με τα περιεχόμενα του φακέλου my_source_directory
. Σημαία -c
σημαίνει "δημιουργώ" (δημιουργία) και τη σημαία -f
ως "αρχείο" (αρχείο).
Για εξαγωγή αρχείων από .tar
-αρχείο, χρησιμοποιήστε την εντολή tar
με σημαίες -x
("εκχύλισμα", εξαγωγή) και -f
("αρχείο", αρχείο).
tar -xf my_file.tar
: εξάγει αρχεία από my_file.tar
στον τρέχοντα κατάλογο εργασίας.
Τώρα ας μιλήσουμε για τον τρόπο συμπίεσης και αποσυμπίεσης .tar
-αρχεία.
tar -cfz my_file.tar.gz my_source_directory
: εδώ χρησιμοποιώντας τη σημαία -z
("zip", αλγόριθμος συμπίεσης) υποδεικνύει ότι ο αλγόριθμος πρέπει να χρησιμοποιηθεί για τη συμπίεση αρχείων gzip
(GNUzip). Η συμπίεση αρχείων εξοικονομεί χώρο στο δίσκο κατά την αποθήκευση τέτοιων αρχείων. Εάν τα αρχεία προγραμματίζονται, για παράδειγμα, να μεταφερθούν σε άλλους χρήστες, αυτό συμβάλλει στην ταχύτερη λήψη τέτοιων αρχείων.
Αποσυμπιέστε το αρχείο .tar.gz
μπορείτε να προσθέσετε μια σημαία -z
στην εντολή εξαγωγής περιεχομένου .tar
-αρχεία, τα οποία συζητήσαμε παραπάνω. Μοιάζει με αυτό:
tar -xfz my_file.tar.gz
Να σημειωθεί ότι η ομάδα tar
Υπάρχουν πολλές ακόμη χρήσιμες σημαίες.
Ψευδώνυμα Bash
Τα ψευδώνυμα Bash (ονομάζονται επίσης ψευδώνυμα ή συντομογραφίες) έχουν σχεδιαστεί για να δημιουργούν συντομευμένα ονόματα εντολών ή τις ακολουθίες τους, η χρήση των οποίων αντί για κανονικές εντολές επιταχύνει την εργασία. Εάν έχετε ψευδώνυμο bu
, το οποίο κρύβει την εντολή python setup.py sdist bdist_wheel
, τότε για να καλέσετε αυτήν την εντολή, αρκεί να χρησιμοποιήσετε αυτό το ψευδώνυμο.
Για να δημιουργήσετε ένα τέτοιο ψευδώνυμο, απλώς προσθέστε την ακόλουθη εντολή στο αρχείο ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Εάν το σύστημά σας δεν έχει το αρχείο ~/.bash_profile
, τότε μπορείτε να το δημιουργήσετε μόνοι σας χρησιμοποιώντας την εντολή touch
. Αφού δημιουργήσετε το ψευδώνυμο, επανεκκινήστε το τερματικό και μετά μπορείτε να χρησιμοποιήσετε αυτό το ψευδώνυμο. Σε αυτήν την περίπτωση, η εισαγωγή δύο χαρακτήρων αντικαθιστά την εισαγωγή περισσότερων από τριών δωδεκάδων χαρακτήρων της εντολής, η οποία προορίζεται για
В ~/.bash_profile
μπορείτε να προσθέσετε ψευδώνυμα για τυχόν εντολές που χρησιμοποιούνται συχνά.
▍Αποτελέσματα
Σε αυτήν την ανάρτηση, καλύψαμε 21 δημοφιλείς εντολές του Bash και μιλήσαμε για τη δημιουργία ψευδωνύμων εντολών. Εάν ενδιαφέρεστε για αυτό το θέμα -
Αγαπητοί αναγνώστες! Ποιες εντολές που είναι χρήσιμες για αρχάριους θα προσθέτατε σε αυτές που συζητήθηκαν σε αυτό το άρθρο;
→
Πηγή: www.habr.com