by: Cerebrux
Δεν είμαστε όλοι μας System Administrators. Εγώ σίγουρα όχι. Είμαστε όμως όλοι μας χρήστες Linux και κατ’ επέκταση χρήστες τερματικού. Στο παρόν άρθρο θα δούμε μερικές μικρές καλές συνήθειες που πραγματικά μας λύνουν τα χέρια στην καθημερινή αλληλεπίδραση μας με το τερματικό. Ανοίξτε το τερματικό σας και αρχίζουμε!
Είχαμε ξεκινήσει μια σειρά άρθρων με τις μικρές καλές συνήθειες στην χρήση του τερματικού, για να κάνουμε πιο ευχάριστη και πιο εύχρηστη την χρήση των εντολών στην καθημερινή μας χρήση του Linux. Σήμερα θα δούμε μερικές περιπτώσεις οι οποίες μπορεί να έχουν διαφύγει της προσοχής μας.
Πατήστε enter μεταξύ των εντολών
Όσο περίεργη και να ακούγεται αυτή η συνήθεια, αποδεικνύεται ιδιαίτερα χρήσιμη. Δε χρειάζεται να εξηγήσουμε το γιατί. Απλά δείτε τα ακόλουθα terminal sessions με και χωρίς πάτημα του πλήκτρου enter ενδιάμεσα
Πρώτα χωρίς enter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
root@server:~ # apt-get update Hit:1 http: //mirror .memset.com /ubuntu xenial InRelease Get:2 http: //mirror .memset.com /ubuntu xenial-updates InRelease [102 kB] Get:3 http: //mirror .memset.com /ubuntu xenial-security InRelease [102 kB] Fetched 204 kB in 0s (433 kB /s ) Reading package lists... Done root@server:~ # apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: libgl1-mesa-dri sysstat 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded. root@server:~ # apt-get install openvpn Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libgd3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.1-0 libtiff5 libvpx3 libxslt1.1 nginx-common nginx-core Use 'apt autoremove' to remove them. Suggested packages: easy-rsa The following NEW packages will be installed: openvpn 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Need to get 0 B /421 kB of archives. After this operation, 1026 kB of additional disk space will be used. Preconfiguring packages ... Selecting previously unselected package openvpn. (Reading database ... 22196 files and directories currently installed.) Preparing to unpack ... /openvpn_2 .3.10-1ubuntu2.1_amd64.deb ... Unpacking openvpn (2.3.10-1ubuntu2.1) ... Processing triggers for libc-bin (2.23-0ubuntu9) ... Processing triggers for systemd (229-4ubuntu21) ... Processing triggers for ureadahead (0.100.0-19) ... Processing triggers for man -db (2.7.5-1) ... Setting up openvpn (2.3.10-1ubuntu2.1) ... Processing triggers for libc-bin (2.23-0ubuntu9) ... root@server:~ # cd /etc/openvpn/ root@server: /etc/openvpn # ls update-resolv-conf |
Με enter μεταξύ των εντολών
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
root@server:~ # root@server:~ # root@server:~ # apt-get update Hit:1 http: //mirror .memset.com /ubuntu xenial InRelease Get:2 http: //mirror .memset.com /ubuntu xenial-updates InRelease [102 kB] Get:3 http: //mirror .memset.com /ubuntu xenial-security InRelease [102 kB] Fetched 204 kB in 0s (433 kB /s ) Reading package lists... Done root@server:~ # root@server:~ # root@server:~ # root@server:~ # apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: libgl1-mesa-dri sysstat 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded. root@server:~ # root@server:~ # root@server:~ # root@server:~ # root@server:~ # apt-get install openvpn Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libgd3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.1-0 libtiff5 libvpx3 libxslt1.1 nginx-common nginx-core Use 'apt autoremove' to remove them. Suggested packages: easy-rsa The following NEW packages will be installed: openvpn 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Need to get 0 B /421 kB of archives. After this operation, 1026 kB of additional disk space will be used. Preconfiguring packages ... Selecting previously unselected package openvpn. (Reading database ... 22196 files and directories currently installed.) Preparing to unpack ... /openvpn_2 .3.10-1ubuntu2.1_amd64.deb ... Unpacking openvpn (2.3.10-1ubuntu2.1) ... Processing triggers for libc-bin (2.23-0ubuntu9) ... Processing triggers for systemd (229-4ubuntu21) ... Processing triggers for ureadahead (0.100.0-19) ... Processing triggers for man -db (2.7.5-1) ... Setting up openvpn (2.3.10-1ubuntu2.1) ... Processing triggers for libc-bin (2.23-0ubuntu9) ... root@server:~ # root@server:~ # root@server:~ # cd /etc/openvpn/ root@server: /etc/openvpn # root@server: /etc/openvpn # root@server: /etc/openvpn # root@server: /etc/openvpn # ls update-resolv-conf |
Είναι προφανές ότι ο διαχωρισμός των εντολών με κενές γραμμές κάνει το διάβασμα τους αρκετά ευκολότερο σε περίπτωση που θέλουμε να δούμε τι είχαμε τρέξει πριν λίγο. Για τον ίδιο λόγο δε χρησιμοποιούμε ποτέ την εντολή clear στο κάτω μέρος της σελίδας του τερματικού. Συνηθίστε να δουλεύετε στο κάτω μέρος του τερματικού.
Έχοντας το ιστορικό όχι μόνο των εντολών αλλά και των output και error messages είναι μια ανεκτίμητη πηγή πληροφοριών όπου θα ανατρέχουμε συχνά.
Μόλις ξεκινήσετε να πατάτε το enter από ένα σημείο και μετά θα γίνεται αυθόρμητα τόσο που δε θα το παρατηρήσετε.
Χρησιμοποιείστε το Bash Complete για όλα
Αν και είναι προτιμότερο να έχετε αντικαταστήσει το Bash με το πιο μοντέρνο και με πρόσθετες δυνατότητες Zsh, παρόλα αυτά όσοι χρησιμοποιείτε ακόμα το Bash το Bash Complete (συχνά αναφερόμενο ως tab-complete) είναι μια λειτουργία του Bash που προσπαθεί να συμπληρώσει μια εντολή, διαδρομή ή όνομα αρχείου που έχει εισαχθεί μερικώς.
Χρησιμοποιήστε το για όλα, μιας και το Bash complete σας εξοικονομεί πολύ χρόνο. Δεν αυξάνει μόνο την ταχύτητα της εργασίας με τη μείωση του χρόνου πληκτρολόγησης, βοηθά επίσης στην αποφυγή τυπογραφικών/ορθογραφικών λαθών.
Στα ακόλουθα παραδείγματα υποθέτουμε ότι έχετε εγκατεστημένο το πακέτο bash-completion
Αυτές είναι οι πιο γνωστές χρήσεις του Bash Complete:
Συμπλήρωση διαδρομής(path)
Κάθε Linux Sysadmin έχει ακούσει το tab complete αλλά οι περισσότεροι εξ αυτών δεν το χρησιμοποιούν όσο θα έπρεπε. Αν η σημασία μιας εντολής κρίνονταν από τον αριθμό των χρήσεων της, τότε το tab complete θα ήταν ο απόλυτος νικητής. Η πληκτρολόγηση διαδρομής γίνεται από:
1
|
cd /var/www/cerebrux |
σε
1
|
cd /v [TAB] w [TAB] c [TAB] |
Οι γνωστές τοποθεσίες πχ /etc/, /home/, /var/log/ περνούν στη μυική μνήμη καθιστώντας ταχύτατη την περιήγηση.
Να θυμάστε ότι αν το [TAB] δε βγάλει αμέσως την εντολή, ξαναπατήστε το [TAB] για να δείτε όλες τις διαθέσιμες επιλογές, στη συνέχεια προσθέστε ένα γράμμα ακόμη. Στο ακόλουθο παράδειγμα έχουμε δυο directories. το/var/www/cerebrux
και το /var/www/cerebrux-code
. Για να μπούμε στο /var/www/cerebrux-code
πρέπει να κάνουμε τα ακόλουθα.
1
|
root@server:~ # cd /v[TAB] /w[TAB] /m[TAB] [TAB] |
Η εντολή θα συμπληρωθεί μέχρι το σημείο
1
|
root@server:~ # cd /var/www/cerebrux |
Με 2πλό πάτημα του [ΤΑΒ] θα δούμε τους καταλόγους που ταιριάζουν με αυτό το μοτίβο. Στη συνέχεια πατούμε το n και ξανά [ΤΑΒ] να συμπληρώσουμε τη διαδρομή και να δώσουμε την εντολή:
1
2
3
4
5
6
|
root@server:~ # cd /var/www/c[TAB] root@server:~ # cd /var/www/cerebrux[TAB][TAB] cerebrux/ cerebrux-code/ root@server:~ # cd /var/www/cerebrux-[TAB] root@server:~ # cd /var/www/cerebrux-code/[ENTER] root@server: /var/www/cerebrux-code # |
Συμπλήρωση ονόματος
Αυτός ο τρόπος είναι επέκταση της συμπλήρωσης διαδρομής. Στο ίδιο μοτίβο με πριν, το bash θα συμπληρώσει το όνομα του αρχείου που θα ξεκινήσουμε να πληκτρολογούμε. Έτσι περιορίζουμε τα τυπογραφικά και αυξάνουμε την ταχύτητα πληκτρολόγησης.
Αν υπάρχει μόνο ένας φάκελος ή αρχείο το bash δε χρειάζεται καν αρχικό χαρακτήρα, απλά με το πλήκτρο [ΤΑΒ] συμπληρώνει μόνο του τους χαρακτήρες.
Συμπλήρωση εντολών και επιλογών αυτών
Το bash complete θα ελέγξει αυτόματα όποια εντολή ξεκινήσουμε ελέγχοντας το $PATH
για τις εντολές που ταιριάζουν. Το μόνο που χρειάζεται είναι να ξεκινήσουμε την εντολή και το bash θα την ολοκληρώσει για μας. Δε χρειάζεται να θυμόμαστε ολόκληρη την εντολή, απλά πατάμε [ΤΑΒ] και βλέπουμε τις εντολές που ταιριάζουν.
Επιπροσθέτως το bash complete,για τις περισσότερες από τις πιο γνωστές εντολές, θα συμπληρώσει και τις παραμέτρους για μας.
Για παράδειγμα στην διαχείριση του συστήματος μας με το systemd η πληκτρολόγηση της εντολής systemctl reload apache2.service
μπορεί να γίνει
1
|
root@server:~ # systemc[TAB] rel[TAB] apa[TAB] |
Όσο περισσότερο χρησιμοποιούμε αυτές τις συνήθειες τόσο αυτές περνούν στη μυική μας μνήμη, κάνοντας τις εξαιρετικά εύκολο να τις πληκτρολογήσουμε.
Πηγή άρθρου: https://cerebrux.net/