Συναντάμε τακτικά αρχεία και ονόματα φακέλων. Στις περισσότερες περιπτώσεις το όνομα αρχείου/φακέλου σχετίζεται με το περιεχόμενο του αρχείου/φακέλου και ξεκινά με αριθμό και χαρακτήρες. Το όνομα αρχείου Alpha-Numeric είναι αρκετά κοινό και χρησιμοποιείται πολύ, αλλά αυτό δεν συμβαίνει όταν πρέπει να ασχοληθούμε με το όνομα αρχείου/φακέλου που περιέχει ειδικούς χαρακτήρες.
Σημείωση: Μπορούμε να έχουμε αρχεία οποιουδήποτε τύπου, αλλά για απλότητα και εύκολη εφαρμογή θα ασχοληθούμε με το αρχείο κειμένου (.κείμενο), σε όλο το άρθρο.
Παράδειγμα των πιο συνηθισμένων ονομάτων αρχείων είναι:
abc.txt avi.txt. debian.txt...
Παραδείγματα αριθμητικών ονομάτων αρχείων είναι:
121.txt. 3221.txt 674659.txt...
Παράδειγμα ονόματος αρχείων Alpha-Numeric είναι:
eg84235.txt. 3kf43nl2.txt. 2323ddw.txt...
Παραδείγματα ονομάτων αρχείων που έχουν ιδιαίτερο χαρακτήρα και δεν είναι πολύ συνηθισμένα:
#232.txt. #bkf.txt. #bjsd3469.txt. #121nkfd.txt. -2232.txt. -fbjdew.txt. -gi32kj.txt. --321.txt. --bk34.txt...
Μια από τις πιο προφανείς ερωτήσεις εδώ είναι - ποιοι δημιουργούν/αντιμετωπίζουν ονόματα αρχείων/φακέλων με Hash
(#)
, ημι-κόλον (;)
, μια παύλα (-)
ή οποιοδήποτε άλλο ιδιαίτερο χαρακτήρα.
Συμφωνώ μαζί σας, ότι τέτοια ονόματα αρχείων δεν είναι κοινά, αλλά το κέλυφός σας δεν πρέπει να σπάσει/εγκαταλείψει όταν πρέπει να αντιμετωπίσετε τέτοια ονόματα αρχείων. Επίσης, μιλώντας τεχνικά κάθε πράγμα είτε πρόκειται για φάκελο, πρόγραμμα οδήγησης ή οτιδήποτε άλλο αντιμετωπίζεται ως αρχείο στο Linux.
Δημιουργήστε ένα αρχείο που ξεκινά με παύλα (-)
, λένε -abx.txt.
$ touch -abc.txt.
touch: μη έγκυρη επιλογή - 'b' Δοκιμάστε το 'touch -help' για περισσότερες πληροφορίες.
Ο λόγος για το παραπάνω σφάλμα, αυτό το κέλυφος ερμηνεύει οτιδήποτε μετά από μια παύλα (-)
, ως επιλογή, και προφανώς δεν υπάρχει τέτοια επιλογή, επομένως είναι το σφάλμα.
Για να επιλύσουμε ένα τέτοιο σφάλμα, πρέπει να πούμε το κέλυφος Bash (ναι αυτό και τα περισσότερα από τα άλλα παραδείγματα του άρθρου είναι για ΚΤΥΠΩ ΔΥΝΑΤΑ) να μην ερμηνεύει τίποτα μετά από ειδικό χαρακτήρα (εδώ παύλα), ως επιλογή.
Υπάρχουν δύο τρόποι επίλυσης αυτού του σφάλματος, όπως:
$ touch --abc.txt [Επιλογή #1] $ touch ./-abc.txt [Επιλογή#2]
Μπορείτε να επαληθεύσετε το αρχείο που δημιουργήθηκε με τους δύο παραπάνω τρόπους εκτελώντας εντολές ls ή ls -l για μεγάλη λίστα.
$ ls -l συνολικά 0. -rw-r-r-- 1 avi avi 0 Ιουνίου 8 11:05 -abc.txt
Για να επεξεργαστείτε το παραπάνω αρχείο μπορείτε να κάνετε:
$ nano --abc.txt ή $ nano ./-abc.txt
Σημείωση: Μπορείτε να αντικαταστήσετε νανο με οποιονδήποτε άλλο εκδότη της επιλογής σας πείτε δύναμη όπως και:
$ vim --abc.txt ή $ vim ./-abc.txt
Ομοίως για να μετακινήσετε ένα τέτοιο αρχείο πρέπει να κάνετε:
$ mv --abc.txt -a.txt. ή. $ mv --a.txt -abc.txt.
και για να διαγράψετε αυτό το αρχείο, πρέπει να κάνετε:
$ rm --abc.txt. ή. $ rm ./-abc.txt
Εάν έχετε πολλά αρχεία σε ένα φάκελο, το όνομα του οποίου περιέχει παύλα και θέλετε να τα διαγράψετε όλα ταυτόχρονα, κάντε τα εξής:
$ rm ./-*
1. Ο ίδιος κανόνας όπως συζητήθηκε παραπάνω ακολουθεί για οποιονδήποτε αριθμό ενωτικών στο όνομα του αρχείου και την εμφάνισή τους. Δηλαδή., -a-b-c.txt, ab-c.txt, abc-.txt, και τα λοιπά.
2. Ακολουθεί ο ίδιος κανόνας όπως συζητήθηκε παραπάνω για το όνομα του φακέλου που έχει οποιοδήποτε αριθμό ενωτικών και την εμφάνισή τους, εκτός από το γεγονός ότι για τη διαγραφή του φακέλου πρέπει να χρησιμοποιήσετε "rm -rf' όπως και:
$ rm -rf --abc. ή. $ rm -rf ./-abc.
Το σύμβολο #
έχει πολύ διαφορετική σημασία στο BASH. Οτιδήποτε μετά από ένα #
ερμηνεύεται ως σχόλιο και ως εκ τούτου παραμελείται από το BASH.
δημιουργήστε ένα αρχείο #abc.txt.
$ touch #abc.txt.
αφής: λείπει ο τελεστής αρχείου. Δοκιμάστε το 'touch -help' για περισσότερες πληροφορίες.
Ο λόγος για το παραπάνω σφάλμα, που ερμηνεύει ο Bash #abc.txt ένα σχόλιο και συνεπώς αγνοώντας. Ετσι το εντολή αφής έχει περάσει χωρίς κανένα λειτουργικό αρχείο, και ως εκ τούτου είναι το σφάλμα.
Για να επιλύσετε ένα τέτοιο σφάλμα, μπορείτε να ζητήσετε από το BASH να μην ερμηνεύσει # ως σχόλιο.
$ touch ./#abc.txt ή. $ touch '#abc.txt'
και επαληθεύστε το αρχείο που μόλις δημιουργήθηκε ως:
$ ls -l συνολικά 0. -rw-r-r-- 1 avi avi 0 Ιουνίου 8 12:14 #abc.txt
Τώρα δημιουργήστε ένα αρχείο του οποίου το όνομα περιέχει #
οπουδήποτε εκτός από την επαιτεία.
$ touch ./a#bc.txt. $ touch ./abc#.txt ή. $ touch 'a#bc.txt' $ touch 'abc#.txt'
Τρέξιμο 'ls -l«Για να το επαληθεύσω:
$ ls -l συνολικά 0. -rw-r-r-- 1 avi avi 0 Ιουνίου 8 12:16 a#bc.txt -rw-r-r-- 1 avi avi 0 Ιουνίου 8 12:16 abc#.txt
Τι συμβαίνει όταν δημιουργείτε δύο αρχεία (ας πούμε ένα και #προ ΧΡΙΣΤΟΥ) με τη μία:
$ touch a.txt #bc.txt.
Επαληθεύστε το αρχείο που μόλις δημιουργήθηκε:
$ ls -l συνολικά 0. -rw-r-r-- 1 avi avi 0 Ιουνίου 8 12:18 a.txt
Προφανές από το παραπάνω παράδειγμα δημιούργησε μόνο το αρχείο "ένα«Και αρχείο»#προ ΧΡΙΣΤΟΥ‘Αγνοήθηκε. Για να εκτελέσουμε με επιτυχία την παραπάνω κατάσταση μπορούμε,
$ touch a.txt ./#bc.txt. ή. $ touch a.txt '#bc.txt'
και επαληθεύστε το ως εξής:
$ ls -l συνολικά 0. -rw-r-r-- 1 avi avi 0 Ιουνίου 8 12:20 a.txt -rw-r-r-- 1 avi avi 0 Ιουνίου 8 12:20 #bc.txt
Μπορείτε να μετακινήσετε το αρχείο ως:
$ mv ./#bc.txt ./#cd.txt ή. $ mv '#bc.txt' '#cd.txt'
Αντιγράψτε το ως εξής:
$ cp ./#cd.txt ./#de.txt ή. $ cp '#cd.txt' '#de.txt'
Μπορείτε να το επεξεργαστείτε χρησιμοποιώντας την επιλογή του επεξεργαστή ως εξής:
$ vi ./#cd.txt ή. $ vi '#cd.txt'
$ nano ./#cd.txt ή. $ nano '#cd.txt'
Και διαγράψτε το ως εξής:
$ rm ./#bc.txt ή. $ rm '#bc.txt'
Για να διαγράψετε όλα τα αρχεία που έχουν κατακερματισμό (#) στο όνομα αρχείου, μπορείτε να χρησιμοποιήσετε:
# σ.μ./#*
Σε περίπτωση που δεν γνωρίζετε, το ερωτηματικό λειτουργεί ως διαχωριστής εντολών στο BASH και ίσως και σε άλλο κέλυφος επίσης. Το ερωτηματικό σάς επιτρέπει να εκτελείτε πολλές εντολές με τη μία και λειτουργεί ως διαχωριστής. Έχετε ασχοληθεί ποτέ με οποιοδήποτε όνομα αρχείου με ερωτηματικό; Αν όχι εδώ θα το κάνετε.
Δημιουργήστε ένα αρχείο με ημι-άνω τελεία σε αυτό.
$ touch; abc.txt.
αφής: λείπει ο τελεστής αρχείου. Δοκιμάστε το 'touch -help' για περισσότερες πληροφορίες. bash: abc.txt: η εντολή δεν βρέθηκε.
Ο λόγος για το παραπάνω σφάλμα, ότι όταν εκτελείτε την παραπάνω εντολή BASH interpret αφή ως εντολή αλλά δεν μπόρεσε να βρει τελεστή αρχείου πριν από το ερωτηματικό και ως εκ τούτου αναφέρει σφάλμα. Αναφέρει επίσης ένα άλλο σφάλμα ότι "abc.txt"Η εντολή δεν βρέθηκε, μόνο επειδή μετά από ερωτηματικό ο BASH περίμενε άλλη εντολή και"abc.txt«, Δεν είναι εντολή.
Για να επιλύσετε ένα τέτοιο σφάλμα, πείτε στο BASH να μην ερμηνεύει το ερωτηματικό ως διαχωριστή εντολών, όπως:
$ touch ./';abc.txt ' ή. $ touch '; abc.txt'
Σημείωση: Έχουμε επισυνάψει το όνομα του αρχείου με ένα μόνο απόσπασμα ''
. Αυτό λέει στον BASH ;
είναι μέρος του ονόματος αρχείου και όχι διαχωριστής εντολών.
Η υπόλοιπη ενέργεια (δηλαδή, αντιγραφή, μετακίνηση, διαγραφή) στο αρχείο και το φάκελο που έχει ερωτηματικό στο όνομά του μπορεί να πραγματοποιηθεί κατ 'ευθείαν, περικλείοντας το όνομα σε ένα μόνο απόσπασμα.
Δεν απαιτεί τίποτα επιπλέον, απλώς κάντε το με τον συνηθισμένο τρόπο, με απλό όνομα αρχείου όπως φαίνεται παρακάτω.
$ touch +12.txt
Πρέπει να επισυνάψετε το όνομα του αρχείου σε ένα μόνο απόσπασμα, όπως κάναμε στην περίπτωση του ερωτηματικού. Τα υπόλοιπα είναι κατευθείαν ..
$ touch '$ 12.txt'
Δεν χρειάζεται να κάνετε κάτι διαφορετικό, αντιμετωπίστε το ως κανονικό αρχείο.
$ touch %12.txt.
Η κατοχή αστερίσκου στο όνομα αρχείου δεν αλλάζει τίποτα και μπορείτε να συνεχίσετε να το χρησιμοποιείτε ως κανονικό αρχείο.
$ touch *12.txt.
Σημείωση: Όταν πρέπει να διαγράψετε ένα αρχείο που ξεκινά με *
, Ποτέ μην χρησιμοποιείτε τις ακόλουθες εντολές για να διαγράψετε τέτοια αρχεία.
$ rm * ή. $ rm -rf *
Αντ 'αυτού χρησιμοποιήστε,
$ rm ./*.txt
Απλώς κλείστε το όνομα του αρχείου σε ένα απόσπασμα και τα υπόλοιπα πράγματα είναι ίδια.
$ touch '! 12.txt'
Τίποτα επιπλέον, μεταχειριστείτε ένα όνομα αρχείου που έχει At Sign ως μη θερμικό αρχείο.
$ touch '@12.txt'
Δεν απαιτείται επιπλέον προσοχή. Χρησιμοποιήστε ένα αρχείο που έχει ^
στο όνομα αρχείου ως κανονικό αρχείο.
$ touch ^12.txt.
Το όνομα αρχείου πρέπει να περικλείεται σε μεμονωμένα εισαγωγικά και είστε έτοιμοι.
$ touch '& 12.txt'
Εάν το όνομα αρχείου έχει παρένθεση, πρέπει να περικλείσετε το όνομα αρχείου με μεμονωμένα εισαγωγικά.
$ touch '(12.txt)'
Δεν απαιτείται επιπλέον φροντίδα. Αντιμετωπίστε το σαν ένα άλλο αρχείο.
$ touch {12.txt}
Ένα όνομα αρχείου που έχει Chevrons πρέπει να περικλείεται σε μεμονωμένα εισαγωγικά.
$ touch '<12.txt>'
Αντιμετωπίστε το όνομα αρχείου με τετράγωνες αγκύλες ως κανονικά αρχεία και δεν χρειάζεται να το φροντίζετε ιδιαίτερα.
$ touch [12.txt]
Είναι πολύ συνηθισμένα και δεν απαιτούν τίποτα επιπλέον. Απλώς κάντε αυτό που θα κάνατε με ένα κανονικό αρχείο.
$ touch _12.txt.
Έχοντας ένα σημάδι Equal-to δεν αλλάζετε τίποτα, μπορείτε να το χρησιμοποιήσετε ως κανονικό αρχείο.
$ touch = 12.txt.
Το Blashlash λέει στο shell να αγνοήσει τον επόμενο χαρακτήρα. Πρέπει να επισυνάψετε το όνομα του αρχείου σε ένα μόνο απόσπασμα, όπως κάναμε στην περίπτωση του ερωτηματικού. Τα υπόλοιπα πράγματα είναι ξεκάθαρα.
$ touch '.txt'
Δεν μπορείτε να δημιουργήσετε ένα αρχείο του οποίου το όνομα περιλαμβάνει μια κάθετο (/)
, μέχρι να έχει σφάλμα το σύστημα αρχείων σας. Δεν υπάρχει τρόπος να ξεφύγουμε από μια κάθετη γραμμή.
Αν μπορείτε λοιπόν να δημιουργήσετε ένα αρχείο όπως π.χ. ‘/12.txt’ ή «B/c.txt» τότε είτε το Σύστημά σας αρχείων έχει σφάλμα είτε έχετε υποστήριξη Unicode, το οποίο σας επιτρέπει να δημιουργήσετε ένα αρχείο με κάθετο. Σε αυτή την περίπτωση, η κάθετο προς τα εμπρός δεν είναι μια πραγματική κάθετη προς τα εμπρός αλλά ένας χαρακτήρας Unicode που μοιάζει με μια κάθετο προς τα εμπρός.
Και πάλι, ένα παράδειγμα όπου δεν χρειάζεται να κάνετε κάποια ιδιαίτερη προσπάθεια. Ένα όνομα αρχείου με ερωτηματικό μπορεί να αντιμετωπιστεί με τον πιο γενικό τρόπο.
$ touch; 12.txt.
Τα αρχεία ξεκινούν με τελεία (.)
είναι πολύ ειδικά στο Linux και ονομάζονται αρχεία dot. Είναι κρυφά αρχεία γενικά αρχεία διαμόρφωσης ή συστήματος. Πρέπει να χρησιμοποιήσετε διακόπτη "-ένα' ή '-ΕΝΑ' με η εντολή για προβολή τέτοιων αρχείων.
Η δημιουργία, επεξεργασία, μετονομασία και διαγραφή τέτοιων αρχείων είναι απλή.
$ touch .12.txt.
Σημείωση: Στο Linux μπορεί να έχετε τόσες πολλές τελείες (.)
όπως χρειάζεστε σε ένα όνομα αρχείου. Σε αντίθεση με άλλες τελείες συστήματος στο όνομα αρχείου δεν σημαίνει διαχωρισμός ονόματος και επέκτασης. Μπορείτε να δημιουργήσετε ένα αρχείο με πολλές τελείες ως:
$ touch 1.2.3.4.5.6.7.8.9.10.txt.
και ελέγξτε το ως εξής:
$ ls -l συνολικά 0. -rw-r-r-- 1 avi avi 0 Ιουνίου 8 14:32 1.2.3.4.5.6.7.8.9.10.txt
Μπορείτε να έχετε κόμμα σε ένα όνομα αρχείου, όσα θέλετε και δεν απαιτείτε τίποτα επιπλέον. Απλώς κάντε το κανονικά, με απλό όνομα αρχείου.
$ touch, 12.txt. ή. $ touch, 12, .txt
Μπορείτε να έχετε άνω και κάτω τελεία σε ένα όνομα αρχείου, όσα θέλετε και δεν απαιτείτε τίποτα επιπλέον. Απλώς κάντε το κανονικά, με απλό όνομα αρχείου.
$ touch: 12.txt. ή. $ touch: 12: .txt
Για να έχουμε εισαγωγικά στο όνομα αρχείου, πρέπει να χρησιμοποιήσουμε τον κανόνα ανταλλαγής. Δηλαδή, εάν πρέπει να έχετε ένα μόνο απόσπασμα στο όνομα αρχείου, επισυνάψτε το όνομα του αρχείου με διπλά εισαγωγικά και εάν πρέπει να έχετε διπλό απόσπασμα στο όνομα του αρχείου, επισυνάψτε το με ένα μόνο απόσπασμα.
$ touch "15'.txt" και $ touch "15" .txt "
Μερικοί συντάκτες στο Linux αρέσουν emacs δημιουργήστε ένα αντίγραφο ασφαλείας του αρχείου που επεξεργάζεστε. Το εφεδρικό αρχείο έχει το όνομα του αρχικού αρχείου συν μια tilde στο τέλος του ονόματος του αρχείου. Μπορείτε να έχετε ένα αρχείο του οποίου το όνομα περιλαμβάνει tilde, σε οποιαδήποτε τοποθεσία απλά ως εξής:
$ touch ~ 1a.txt. ή. $ touch 2b ~ .txt.
Δημιουργήστε ένα αρχείο του οποίου το όνομα έχει κενό μεταξύ χαρακτήρα/λέξης, πείτε "γεια με λένε avishek.txt”.
Δεν είναι καλή ιδέα να έχετε όνομα αρχείου με κενά και εάν πρέπει να διακρίνετε ευανάγνωστο όνομα, πρέπει να χρησιμοποιήσετε, υπογράμμιση ή παύλα. Ωστόσο, εάν πρέπει να δημιουργήσετε ένα τέτοιο αρχείο, πρέπει να χρησιμοποιήσετε παλιό πλάγια γραμμή που αγνοεί τον επόμενο χαρακτήρα σε αυτό. Για να δημιουργήσουμε το παραπάνω αρχείο πρέπει να το κάνουμε με αυτόν τον τρόπο ..
$ touch hi \ my \ name \ is \ avishek.txt γεια με λένε avishek.txt
Προσπάθησα να καλύψω όλο το σενάριο που μπορεί να συναντήσετε. Οι περισσότερες από τις παραπάνω εφαρμογές είναι ρητά για το BASH Shell και ενδέχεται να μην λειτουργούν σε άλλο κέλυφος.
Εάν αισθάνεστε ότι μου έλειψε κάτι (που είναι πολύ συνηθισμένο και ανθρώπινη φύση), μπορείτε να συμπεριλάβετε την πρότασή σας στα παρακάτω σχόλια. Διατηρήστε τη σύνδεση, συνεχίστε να σχολιάζετε. Μείνετε συντονισμένοι και συνδεδεμένοι! Κάντε like και κοινοποιήστε μας και βοηθήστε μας να διαδοθούμε!