Διαχειριστείτε τα αρχεία αποτελεσματικά χρησιμοποιώντας εντολές κεφαλιού, ουράς και γάτας στο 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. Μην ξεχάσετε να μας δώσετε τα πολύτιμα σχόλιά σας στην ενότητα σχολίων μας.