Όπως και τα περισσότερα λειτουργικά συστήματα, το Linux υποστηρίζει ονόματα αρχείων με χώρους σε αυτά. Αλλά η χρήση αυτών των ονομάτων αρχείων στη γραμμή εντολών δεν είναι πάντα απλή. Εδώ είναι διάφοροι τρόποι με τους οποίους μπορείτε να χειριστείτε τα ονόματα αρχείων που περιέχουν χώρους.
Το ταπεινό όνομα αρχείου
Γιατί οι χώροι σε ονόματα αρχείων Linux είναι πόνος
Πώς να παραθέσετε και να ξεφύγετε από τους χώρους
Πώς να διορθώσετε το πρόβλημα του χώρου στην πηγή του
Η επέκταση της καρτέλας διευκολύνει την αντιμετώπιση των χώρων εύκολη
Πώς να χρησιμοποιήσετε ονόματα αρχείων με χώρους σε σενάρια bash
Σε απόσταση, αλλά όχι νιφάδα
Το ταπεινό όνομα αρχείου
Όλα αποθηκευμένα στον υπολογιστή σας σκληρός δίσκος πρέπει να έχει ένα όνομα. Χωρίς όνομα, δεν θα υπήρχαν αρχεία. Όλες οι εφαρμογές και οι δαίμονες που ξεκινούν όταν ο υπολογιστής σας εκτοξεύεται και όλο το λογισμικό που χρησιμοποιείτε, πρέπει να ταυτοποιηθεί και να αποθηκευτεί σε ένα σύστημα αρχείων. Αυτή η αναγνώριση είναι το όνομα του αρχείου. "
Το ίδιο ισχύει και για τα αρχεία που δημιουργείτε ή εγκαταστήστε. Όλα τα έγγραφα, οι εικόνες και η μουσική σας χρειάζονται ονόματα αρχείων. Χωρίς ονόματα αρχείων, κανένα από τα ψηφιακά σας περιουσιακά στοιχεία δεν μπορεί να υπάρχει. Επειδή τα ονόματα αρχείων είναι τόσο σημαντικά, το Linux προσπαθεί να επιβάλει τόσο λίγους κανόνες σχετικά με τη σύνθεσή τους όσο μπορεί.
Στο Linux, ένα όνομα αρχείου μπορεί να περιέχει οποιοδήποτε χαρακτήρα εκτός από το προς τα εμπρός "
/
"Και ο μηδενικός χαρακτήρας,
0x00
. Ο μηδενικός χαρακτήρας χρησιμοποιείται για να σηματοδοτήσει το τέλος μιας συμβολοσειράς, οπότε δεν μπορεί να υπάρχει στην ίδια τη συμβολοσειρά ή το Linux θα περικοπεί το όνομα αρχείου στη θέση του μηδενικού χαρακτήρα. Ο "
/
"Το Forward Slash χρησιμοποιείται ως διαχωριστικός σε διαδρομές καταλόγου.
Τα ονόματα αρχείων είναι ευαίσθητα σε περιπτώσεις, και μπορεί να έχει μήκος 255 bytes , συμπεριλαμβανομένου του μηδενικού χαρακτήρα. Οι διαδρομές καταλόγου μπορούν να έχουν μήκος έως 4096 bytes, συμπεριλαμβανομένου του μηδενικού χαρακτήρα. Σημειώστε ότι αυτό είναι το μήκος τους bytes , που μπορεί να μην ισοδυναμεί άμεσα με χαρακτήρες . Οι χαρακτήρες Unicode 16-bit, για παράδειγμα, παίρνουν δύο bytes το καθένα.
Οι λάτρεις των αναδρομικών υπολογιστών και εκείνοι με μεγάλες αναμνήσεις θα γνωρίζουν ότι στις πρώτες μέρες των προσωπικών υπολογιστών, Το λειτουργικό σύστημα δίσκου της Microsoft , DOS, ήταν ευαίσθητο σε περιπτώσεις και είχε ένα όριο αρχείου οκτώ χαρακτήρων, καθώς και τριών χαρακτήρων επέκταση .
Πρέπει να είστε πολύ προσεκτικοί και μερικές φορές δημιουργικοί όταν ονομάσατε αρχεία. Συγκριτικά, η ελευθερία που έχουμε σήμερα σημαίνει ότι μπορούμε να ονομάσουμε αρχεία ό, τι θέλουμε, με ελάχιστη σκέψη σε τίποτα άλλο από την περιγραφή που δημιουργούμε για αυτό το αρχείο.
Αλλά με ονόματα αρχείων, αυτό που μας ταξιδεύει πιο συχνά δεν είναι οι χαρακτήρες που πληκτρολογούμε, είναι οι χώροι μεταξύ τους.
Γιατί οι χώροι σε ονόματα αρχείων Linux είναι πόνος
Τα κελύφη όπως το Bash θα ερμηνεύσουν μια διαχωρισμένη σειρά λέξεων ως μεμονωμένα επιχειρήματα εντολών, ούτε ένα επιχείρημα. Ακολουθεί ένα παράδειγμα, χρησιμοποιώντας
αφή
προς την
Δημιουργήστε ένα νέο αρχείο
που ονομάζεται "Το νέο μου αρχείο.txt."
Οπως μπορούμε να δούμε,
LS
μας δείχνει ότι υπάρχουν τρία αρχεία που δημιουργήθηκαν, ένα που ονομάζεται "My", ένα άλλο που ονομάζεται "νέο", και ένα ακόμη ονομάζεται "file.txt".
Σημειώστε ότι
αφή
Δεν παραπονέθηκε ή δεν έριξε λάθος. Εκτελεί τι πιστεύει ότι ζητάμε να το κάνουμε. Έτσι, μας επιστρέφει σιωπηλά στη γραμμή εντολών. Εάν δεν έχουμε κίνητρο να ελέγξουμε, δεν θα γνωρίζουμε ότι τα πράγματα δεν έχουν πάει σύμφωνα με το σχέδιο.
Για να δημιουργήσουμε το αρχείο που θέλαμε, πρέπει να παραθέσουμε ή να ξεφύγουμε.
Πώς να παραθέσετε και να ξεφύγετε από τους χώρους
Αν αναφέρουμε ολόκληρο το όνομα αρχείου,
αφή
ξέρει ότι πρέπει να αντιμετωπίσει το αναφερόμενο κείμενο ως ένα μόνο επιχείρημα.
Αυτή τη φορά παίρνουμε το ενιαίο αρχείο που περιμένουμε.
Μπορούμε να πάρουμε το ίδιο αποτέλεσμα αν χρησιμοποιήσουμε τον χαρακτήρα backslash "
\
"Για να ξεφύγετε από τους χώρους. Με την "διαφυγή" των χώρων που δεν αντιμετωπίζονται ως ειδικοί χαρακτήρες - δηλαδή οι διαχωριστές των επιχειρημάτων - θεωρούνται ότι είναι απλοί παλιοί χώροι.
Αυτό λειτουργεί, αλλά η διαφυγή χώρων καθιστά την πληκτρολόγηση ονόματα αρχείων πιο αργή και επιρρεπή σε σφάλματα. Τα πράγματα μπορούν να γίνουν πραγματικά άσχημα εάν έχετε ονόματα καταλόγων με κενά και σε αυτά.
Αυτή η εντολή αντιγράφει ένα αρχείο κειμένου από έναν κατάλογο που ονομάζεται "Dir One" σε έναν κατάλογο που ονομάζεται "Dir Twous" και αποθηκεύει το αντίγραφο ως αρχείο BAK. Και είναι ένα αρκετά απλό παράδειγμα.
Πώς να διορθώσετε το πρόβλημα του χώρου στην πηγή του
Εάν είναι τα δικά σας αρχεία, θα μπορούσατε να λάβετε την απόφαση πολιτικής να μην χρησιμοποιήσετε ποτέ χώρους και να δημιουργήσετε (ή Μετονομασία όγκου ) Ονόματα αρχείων όπως αυτό.
Βεβαίως, αυτή είναι μια ισχυρή λύση, αλλά είναι ακόμα άσχημο. Υπάρχουν καλύτερες επιλογές, όπως η χρήση παύλων "
-
"Ή υπογραμμίζει"
_
"Για να διαχωρίσετε τα λόγια σας.
Και τα δύο αυτά θα παρακάμψουν το πρόβλημα και είναι ευανάγνωστες. Εάν δεν θέλετε να προσθέσετε επιπλέον χαρακτήρες στα ονόματα αρχείων σας, μπορείτε να χρησιμοποιήσετε Καμλάση Για να κάνετε τα ονόματα αρχείων σας ευανάγνωστα, όπως αυτό:
Η επέκταση της καρτέλας διευκολύνει την αντιμετώπιση των χώρων εύκολη
Φυσικά, η υιοθέτηση μιας σύμβασης ονομασίας και η προσκόλληση σε αυτήν θα βοηθήσει μόνο όταν ασχολείστε με τα δικά σας αρχεία. Τα αρχεία που προέρχονται από οπουδήποτε αλλού είναι απίθανο να ακολουθήσουν την υιοθετημένη σύμβαση ονομασίας σας.
Μπορείτε να χρησιμοποιήσετε την επέκταση της καρτέλας για να σας βοηθήσουμε να "συμπληρώσετε" τα ονόματα αρχείων για εμάς. Ας πούμε ότι θέλουμε
διαγράφω
Το αρχείο bak που δημιουργήσαμε στο "Dir Twous", χρησιμοποιώντας
rm
.
Ξεκινάμε πληκτρολογώντας "RM DIR" επειδή χρησιμοποιούμε το
rm
εντολή και γνωρίζουμε ότι το όνομα του καταλόγου ξεκινά με "dir".
Πατώντας το πλήκτρο "TAB" προκαλεί τη σάρωση του Bash για αγώνες στον τρέχοντα κατάλογο.
Υπάρχουν δύο κατάλογοι που ξεκινούν με το "Dir", και και στις δύο περιπτώσεις ο επόμενος χαρακτήρας είναι ένας χώρος. Έτσι ο Bash προσθέτει τον χαρακτήρα backslash "
\
"Και ένας χώρος. Ο Bash μας περιμένει να παρέχουμε τον επόμενο χαρακτήρα. Χρειάζεται τον επόμενο χαρακτήρα για να διαφοροποιήσει μεταξύ των δύο πιθανών αγώνων σε αυτόν τον κατάλογο.
Θα πληκτρολογήσουμε ένα "t", για "δύο", και στη συνέχεια πατήστε "Tab" για άλλη μια φορά.
Το Bash ολοκληρώνει το όνομα του καταλόγου για εμάς και μας περιμένει να πληκτρολογήσουμε την έναρξη του ονόματος αρχείου.
Έχουμε μόνο ένα αρχείο σε αυτόν τον κατάλογο, οπότε πληκτρολογώντας το πρώτο γράμμα του ονόματος αρχείου, "M", αρκεί για να ενημερώσει το Bash ποιο αρχείο θέλουμε να χρησιμοποιήσουμε. Η πληκτρολόγηση "M" και η παροχή "καρτέλας" ολοκληρώνει το όνομα αρχείου για εμάς και "εισάγετε" εκτελεί ολόκληρη την εντολή.
Η επέκταση της καρτέλας διευκολύνει την εξασφάλιση της σωστής αρχείων και επιταχύνει επίσης την πλοήγηση και την πληκτρολόγηση στη γραμμή εντολών γενικά.
ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Χρησιμοποιήστε την ολοκλήρωση της καρτέλας για να πληκτρολογήσετε τις εντολές γρηγορότερα σε οποιοδήποτε λειτουργικό σύστημα
Πώς να χρησιμοποιήσετε ονόματα αρχείων με χώρους σε σενάρια bash
Δεν αποτελεί έκπληξη ότι σενάρια Έχετε ακριβώς τα ίδια προβλήματα με τους χώρους στα ονόματα αρχείων όπως κάνει η γραμμή εντολών. Εάν περνάτε ένα όνομα αρχείου ως μεταβλητή, βεβαιωθείτε ότι έχετε αναφέρει το όνομα της μεταβλητής.
Αυτό το μικρό σενάριο ελέγχει τον τρέχοντα κατάλογο για αρχεία που ταιριάζουν με το μοτίβο αρχείου "*.txt" και τα αποθηκεύει σε μια μεταβλητή που ονομάζεται
αρχειοθεραπεία
.
ΕΝΑ
Για
βρόχος
Χρησιμοποιείται για να εκτελέσει μια απλή ενέργεια σε κάθε μία.
Αντιγράψτε αυτό το κείμενο σε έναν επεξεργαστή και αποθηκεύστε το σε ένα αρχείο που ονομάζεται "Files.sh." Τότε χρησιμοποιήστε
ο
chmod
εντολή
Για να το κάνετε εκτελέσιμο.
Έχουμε κάποια αρχεία σε αυτόν τον κατάλογο. Κάποιος έχει ένα απλό όνομα αρχείου, και οι άλλες δύο χρησιμοποιούν υπογραμμίζει "
_
"Ή παύλες"
-
"Αντί για χώρους. Αυτό βλέπουμε όταν τρέχουμε το σενάριο.
Αυτό φαίνεται να λειτουργεί ωραία. Αλλά ας αλλάξουμε τα αρχεία στον κατάλογο για αρχεία που περιέχουν χώρους στα ονόματά τους.
Κάθε λέξη σε κάθε όνομα αρχείου χειρίζεται σαν να ήταν ένα όνομα αρχείου από μόνο του, και έτσι το σενάριο αποτυγχάνει. Αλλά το μόνο που πρέπει να κάνουμε για να φτιάξουμε τους χώρους χειρισμού σεναρίου στα ονόματα αρχείων είναι να αναφέρουμε το
$ αρχείο
μεταβλητή μέσα στο
Για
βρόχος.
Σημειώστε ότι το σύμβολο του δολαρίου "
$
"Είναι μέσα στα αποσπάσματα. Κάναμε αυτή την αλλαγή και την αποθηκεύσαμε στο αρχείο script "files.sh". Αυτή τη φορά, τα ονόματα αρχείων αντιμετωπίζονται σωστά.
ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να επεξεργαστείτε μια γραμμή αρχείου ανά γραμμή σε ένα σενάριο Bash Linux
Σε απόσταση, αλλά όχι νιφάδα
Η αποφυγή χώρων στα δικά σας ονόματα αρχείων θα σας πάρει μόνο μέχρι τώρα. Είναι αναπόφευκτο ότι θα συναντήσετε αρχεία από άλλες πηγές με ονόματα που περιέχουν χώρους. Ευτυχώς, εάν πρέπει να χειριστείτε αυτά τα αρχεία στη γραμμή εντολών ή σε σενάρια, υπάρχουν εύκολοι τρόποι για να το κάνετε.