Διαχειριστείτε τα αρχεία αποτελεσματικά χρησιμοποιώντας εντολές κεφαλιού, ουράς και γάτας στο Linux


Υπάρχουν πολλές εντολές και προγράμματα που παρέχονται από το Linux για την προβολή των περιεχομένων του αρχείου. Η εργασία με αρχεία είναι ένα από τα τρομακτικά καθήκοντα, οι περισσότεροι από τους χρήστες υπολογιστών είτε είναι αρχάριοι, τακτικός χρήστης, προχωρημένος χρήστης, προγραμματιστής, διαχειριστής κ.λπ. Η αποτελεσματική και αποδοτική εργασία με αρχεία είναι τέχνη.

Σήμερα, σε αυτό το άρθρο θα συζητήσουμε τις πιο δημοφιλείς εντολές που ονομάζονται head, tail και cat, οι περισσότεροι από εμάς γνωρίζουμε ήδη τέτοιες εντολές, αλλά πολύ λίγοι από εμάς το εφαρμόζουμε όταν χρειάζεται.

1. κεφαλή Εντολή

Η εντολή head διαβάζει τις πρώτες δέκα γραμμές ενός συγκεκριμένου ονόματος αρχείου. Η βασική σύνταξη της εντολής head είναι:

head [options] [file(s)]

Για παράδειγμα, η ακόλουθη εντολή θα εμφανίσει τις πρώτες δέκα γραμμές του αρχείου με το όνομα "/etc/passwd".

head /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mail:x:8:8:mail:/var/mail:/bin/sh 
news:x:9:9:news:/var/spool/news:/bin/sh

Εάν δίνονται περισσότερα από ένα αρχεία, το head θα εμφανίζει τις πρώτες δέκα γραμμές κάθε αρχείου ξεχωριστά. Για παράδειγμα, η ακόλουθη εντολή θα εμφανίσει δέκα γραμμές από κάθε αρχείο.

head /etc/passwd /etc/shadow

==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ==> /etc/shadow <==
root:$6$85e1:15740:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::

Εάν επιθυμείτε να ανακτήσετε περισσότερο αριθμό γραμμών από το προεπιλεγμένο δέκα, τότε η επιλογή «-n» χρησιμοποιείται μαζί με έναν ακέραιο που λέει τον αριθμό των γραμμών που πρέπει να ανακτηθούν. Για παράδειγμα, η ακόλουθη εντολή θα εμφανίσει τις πρώτες 5 γραμμές από το αρχείο αρχείου «/var/log/yum.log».

head -n5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

Στην πραγματικότητα, δεν χρειάζεται να χρησιμοποιήσετε την επιλογή «-n». Απλώς το παύλα και καθορίστε τον ακέραιο χωρίς κενά για να έχετε το ίδιο αποτέλεσμα με την παραπάνω εντολή.

head  -5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

Η εντολή head μπορεί επίσης να εμφανίσει οποιονδήποτε επιθυμητό αριθμό byte χρησιμοποιώντας την επιλογή '-c' ακολουθούμενη από τον αριθμό των byte που θα εμφανιστούν. Για παράδειγμα, η ακόλουθη εντολή θα εμφανίσει τα πρώτα 45 byte του δεδομένου αρχείου.

head -c45 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el

2. Εντολή ουράς

Η εντολή tail σας επιτρέπει να εμφανίσετε τις τελευταίες δέκα γραμμές οποιουδήποτε αρχείου κειμένου. Παρόμοια με την παραπάνω εντολή head, η εντολή tail υποστηρίζει επίσης επιλογές  ‘n’ αριθμός γραμμών και ‘n’ αριθμός χαρακτήρων.

Η βασική σύνταξη της εντολής ουράς είναι:

tail [options] [filenames]

Για παράδειγμα, η ακόλουθη εντολή θα εκτυπώσει τις τελευταίες δέκα γραμμές ενός αρχείου που ονομάζεται «access.log».

tail access.log 

1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html
1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html
1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 -
1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 
1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

Εάν παρέχονται περισσότερα από ένα αρχεία, το tail θα εκτυπώσει τις τελευταίες δέκα γραμμές κάθε αρχείου όπως φαίνεται παρακάτω.

tail access.log error.log

==> access.log <== 1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg  1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html ==> error_log <==
[Sun Mar 30 03:16:03 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Mar 30 03:16:03 2014] [notice] Digest: done
[Sun Mar 30 03:16:03 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations

Ομοίως, μπορείτε επίσης να εκτυπώσετε τις τελευταίες γραμμές χρησιμοποιώντας την επιλογή «-n», όπως φαίνεται παρακάτω.

tail -5 access.log

1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

Μπορείτε επίσης να εκτυπώσετε τον αριθμό των χαρακτήρων χρησιμοποιώντας το όρισμα «-c» όπως φαίνεται παρακάτω.

tail -c5 access.log

ymantec.com:443 - NONE/- text/html

3. cat Command

Η εντολή «cat» είναι το πιο ευρέως χρησιμοποιούμενο, καθολικό εργαλείο. Αντιγράφει την τυπική είσοδο στην τυπική έξοδο. Η εντολή υποστηρίζει κύλιση, εάν το αρχείο κειμένου δεν ταιριάζει στην τρέχουσα οθόνη.

Η βασική σύνταξη της εντολής cat είναι:

cat [options] [filenames] [-] [filenames]

Η πιο συχνή χρήση της γάτας είναι να διαβάζει τα περιεχόμενα των αρχείων. Το μόνο που απαιτείται για να ανοίξετε ένα αρχείο για ανάγνωση είναι να πληκτρολογήσετε cat ακολουθούμενο από ένα κενό διάστημα και το όνομα του αρχείου.

cat /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
…

Η εντολή cat χρησιμοποιήθηκε επίσης για τη συνένωση αριθμού αρχείων μεταξύ τους.

echo 'Hi Tecmint-Team' > 1 
echo 'Keep connected' > 2 
echo 'Share your thought' > 3 
echo 'connect us [email ' > 4
cat 1 2 3 4 > 5
cat 5 

Hi Tecmint-Team 
Keep connected 
Share your thought 
connect us [email 

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

cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Μπορούμε να έχουμε custom end maker για την εντολή «cat». Εδώ εφαρμόζεται.

cat > test.txt << end 

I am Avishek 
Here i am writing this post 
Hope your are enjoying 
end
# cat test.txt 

I am Avishek 
Here i am writing this post 
Hope your are enjoying

Μην υποτιμάτε ποτέ τη δύναμη της εντολής «γάτα» και μπορεί να είναι χρήσιμη για την αντιγραφή αρχείων.

cat avi.txt

I am a Programmer by birth and Admin by profession
cat avi.txt > avi1.txt
cat avi1.txt

I am a Programmer by birth and Admin by profession

Τώρα ποιο είναι το αντίθετο της γάτας; Ναι, είναι «tac». Το ‘tac’ είναι μια εντολή στο Linux. Είναι καλύτερο να δείξετε ένα παράδειγμα «tac» παρά να μιλήσετε για αυτό.

Δημιουργήστε ένα αρχείο κειμένου με τα ονόματα όλου του μήνα, έτσι ώστε μια λέξη να εμφανίζεται σε μια γραμμή.

cat month

January
February
March
April
May
June
July
August
September
October
November
December
tac month

December
November
October
September
August
July
June
May
April
March
February
January

Για περισσότερα παραδείγματα χρήσης εντολών cat, ανατρέξτε στο 13 cat Command Usage

Αυτα για τωρα. Θα είμαι ξανά εδώ με ένα άλλο ενδιαφέρον άρθρο, που αξίζει να το γνωρίζετε. Μέχρι τότε, μείνετε συντονισμένοι και συνδεδεμένοι στο Tecmint. Μην ξεχάσετε να μας δώσετε τα πολύτιμα σχόλιά σας στην ενότητα σχολίων μας.