Πώς να αποθηκεύσετε την έξοδο μιας εντολής σε ένα αρχείο στο Linux
Σε συστήματα Linux υπάρχουν αρκετοί τρόποι για να αποθηκεύσετε την έξοδο γραμμής εντολών σε αρχεία. Ο καθένας λειτουργεί διαφορετικά και σώζει διαφορετικά πράγματα.
Αυτές οι εντολές είναι χρήσιμες σε όλες τις διανομές Linux και μπορούν ακόμη και να χρησιμοποιηθούν σε Mac και BSD. Το μόνο πράγμα που πρέπει να σκεφτείτε είναι ποια εντολή είναι καλύτερο να κάνει τη δουλειά.
Unix και σωληνώσεις
Πριν βουτήξετε στις εντολές, πρέπει να γνωρίζετε μια μικρή ιστορία. Κανένα από αυτά δεν είναι συγκεκριμένο για το Linux. Στην πραγματικότητα προέρχεται από το παλιό λειτουργικό σύστημα Unix που αναπτύχθηκε από την Bell Labs. Τα Linux, Mac και BSD είναι όλα τα λειτουργικά συστήματα που μοιάζουν με Unix και μπορούν να ανιχνεύσουν το οικογενειακό τους δέντρο στο Unix.
Μία από τις βασικές ιδέες πίσω από το Unix ήταν να κάνει τα πάντα από μικρά προγράμματα που μπορείτε να συνεργαστείτε για να κάνετε μεγαλύτερα και πιο περίπλοκα πράγματα. Αυτός είναι ο λόγος για τον οποίο μπορείτε να συνδυάσετε τις εντολές του Linux για να τους κάνετε να συνεργαστούν.
Υπάρχουν μερικοί τρόποι για να τραβήξετε μαζί τις εντολές Linux (και Unix) και να τους κάνετε να συνεργαστούν. Ο συνηθέστερος που θα συναντήσετε είναι ο |
χαρακτήρας. Το μοναδικό pip, όπως ονομάζεται, περνάει την έξοδο μιας εντολής στην άλλη.
Θα συναντήσετε επίσης τον τελεστή |&
. Διαβιβάζει την έξοδο και τα σφάλματα στην επόμενη εντολή.
Κάθε μέθοδος σε αυτόν τον οδηγό είναι ουσιαστικά απλά ένας τρόπος για τις εντολές Unix να περάσουν γύρω από πληροφορίες. Αντί των δεδομένων σωληνώσεων μεταξύ των εντολών, κατευθύνουν τα δεδομένα στην έξοδο. Στην περίπτωση αυτή, αυτή η έξοδος είναι ένα αρχείο.
Ρύθμιση
Πριν προχωρήσετε, υπάρχουν μερικά πράγματα που πρέπει να ρυθμίσετε για να διευκολύνετε τον έλεγχο. Ως χρήστης root, δημιουργήστε ένα ζευγάρι φακέλων στον οικείο κατάλογο του κανονικού χρήστη. Αλλάξτε τα δικαιώματα τους για να τα κάνετε μη αναγνώσιμα.
sudo mkdir Αποτυχία1 sudo mkdir Αποτυχία2 sudo chmod000 Αποτυχία1 sudo chmod000 Αποτυχία2
Θα χρησιμοποιήσετε την εντολή du
για να δοκιμάσετε και θα αυξήσει τα σφάλματα όταν συναντήσει αυτά τα αρχεία.
Ανακατεύθυνση εξόδου χωρίς σφάλματα
Ο πιο κοινός και βασικός τρόπος για να ανακατευθύνετε την έξοδο από το τερματικό σε ένα αρχείο είναι να χρησιμοποιήσετε τους χειριστές >
και >>
. Οδηγούν μόνο την έξοδο σε ένα συγκεκριμένο αρχείο κειμένου. Δεν ανακατευθύνουν σφάλματα. Αυτά θα εξακολουθούν να εμφανίζονται στο τερματικό.
Ο χειριστής >
ανακατευθύνει την έξοδο σε ένα αρχείο και αντικαθιστά τα περιεχόμενα του αρχείου.
du -h ./*> φάκελο-μέγεθος.txt
Αντίθετα, ο χειριστής >>
λειτουργεί με τον ίδιο τρόπο αλλά προσαρμόζει την έξοδο στο τέλος του αρχείου.
du -h ./* >> φάκελο-μέγεθος.txt
Αποθήκευση μόνο σφαλμάτων
Αυτοί οι δύο επόμενοι χειριστές είναι ακριβώς το αντίθετο από τους πρώτους. Εξοικονομούν μόνο σφάλματα, ενώ εμφανίζουν την έξοδο στο τερματικό.
Με τη χρήση του χειριστή 2>
στέλνει τα σφάλματα από μια εντολή σε ένα αρχείο καταγραφής, αντικαθιστώντας το. Η κανονική έξοδος θα εξακολουθεί να εμφανίζεται στο τερματικό.
du -h ./* 2> errors.log
Για να επιτύχετε τα ίδια αποτελέσματα χωρίς την αντικατάσταση, χρησιμοποιήστε 2>>
.
du -h ./* 2 >> errors.log
Αποθήκευση όλων, Εμφάνιση τίποτα
Αν ενδιαφέρεστε να καταγράψετε τα πάντα, το επόμενο σύνολο φορέων σας καλύπτεται. Ανακατευθύνουν όλες τις εξόδους σε αρχεία χωρίς να εμφανίζουν τίποτα στο τερματικό.
Ο &>
χειριστής ανακατευθύνει την έξοδο και τα σφάλματα σε ένα αρχείο και το αντικαθιστά.
du -h ./* &> disk_use.log
Όπως και οι άλλοι, αν δεν θέλετε να αντικαταστήσετε, υπάρχει ένας συνοδευτικός φορέας για αυτό.
du -h ./* & >> disk_use.log
Εμφάνιση όλων, Αποθήκευση εξόδου
Μπορείτε επίσης να εμφανίσετε τα πάντα στο τερματικό και να καταγράψετε μόνο την έξοδο. Αυτό μπορείτε να το επιτύχετε με τη διοχέτευση της εντολής σας στην εντολή tee
.
tee
λειτουργεί σαν ένας διαχωριστής T σε υδραυλικά. Κατευθύνει τη ροή προς δύο κατευθύνσεις. Δεδομένου ότι |
ο χειριστής μόλις περάσει την έξοδο, το αρχείο που προκύπτει θα περιέχει επίσης εξόδου και όχι λάθη.
du -h ./* | tee output.txt
Από προεπιλογή, το tee
αντικαθιστά. Για να διατηρήσετε το υπάρχον αρχείο, προσθέστε τη σημαία -a
.
du -h ./* | tee -a output.txt
Εμφάνιση και αποθήκευση όλων
Τέλος, μπορείτε να ανακατευθύνετε με την εντολή |&
στην εντολή tee
για να εμφανίσετε τα πάντα και να την καταγράψετε επίσης.
du -h ./* | & tee output.txt
Για να αποφύγετε την αντικατάσταση, προσθέστε τη σημαία -a
στο tee
.
du -h ./* | & tee -a output.txt
Τύλιξε
Είναι σαφές ότι υπάρχει ένας τόνος επιλογών όσον αφορά την ανακατεύθυνση και την αποθήκευση της εξόδου των εντολών τερματικού Linux σε ένα αρχείο. Ορισμένες από αυτές είναι πιο χρήσιμες από άλλες, αλλά όλοι μπορούν να χρησιμοποιηθούν σε ένα ευρύ φάσμα σεναρίων για να ελέγξουν τη ροή των πληροφοριών με τον πιο δυνατό Unix τρόπο.