ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Νέα από τον πλανήτη…planet.ellak.gr: Υιοθετήστε μικρές καλές συνήθειες των έμπειρων Sysadmins

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/

Leave a Comment

Social Media Auto Publish Powered By : XYZScripts.com