Giống như hầu hết các hệ điều hành, Linux hỗ trợ các tên tệp với không gian trong đó. Nhưng sử dụng các tên tệp này trên dòng lệnh không phải lúc nào cũng đơn giản. Dưới đây là một số cách bạn có thể xử lý các tên tệp chứa không gian.
Tên tệp khiêm tốn
Tại sao không gian trong tên tệp Linux là một nỗi đau
Cách trích dẫn và thoát khỏi không gian
Cách khắc phục sự cố không gian tại nguồn của nó
Mở rộng tab giúp đối phó với không gian dễ dàng
Cách sử dụng tên tệp với không gian trong tập lệnh bash
Cách xa nhau, nhưng không bong tróc
Tên tệp khiêm tốn
Mọi thứ được lưu trữ trên máy tính của bạn ổ cứng cần phải có một cái tên. Không có tên, không có tệp nào tồn tại. Tất cả các ứng dụng và daemon được ra mắt khi máy tính của bạn khởi động và tất cả phần mềm bạn sử dụng, phải được xác định và lưu trữ trong một hệ thống tệp. Nhận dạng đó là tên của tệp.
Điều tương tự áp dụng cho các tệp mà bạn tạo hoặc cài đặt. Tất cả các tài liệu, hình ảnh và âm nhạc của bạn cần tên tệp. Không có tên tệp, không có tài sản kỹ thuật số nào của bạn có thể tồn tại. Bởi vì tên tệp rất quan trọng, Linux cố gắng hết sức để áp đặt càng ít quy tắc về thành phần của chúng càng tốt.
Trên Linux, một tên tệp có thể chứa bất kỳ ký tự nào ngoài việc chém về phía trước
/
"Và nhân vật null,
0x00
. Ký tự null được sử dụng để đánh dấu phần cuối của một chuỗi, vì vậy nó có thể có mặt trong chính chuỗi hoặc Linux sẽ cắt tên tệp ở vị trí của ký tự null. Các "
/
Tiếng chém phía trước được sử dụng làm dấu phân cách trong các đường dẫn thư mục.
Tên tệp nhạy cảm với trường hợp, và có thể dài tới 255 byte , bao gồm cả nhân vật null. Các đường dẫn thư mục có thể dài tới 4096 byte, bao gồm cả ký tự null. Lưu ý rằng đây là chiều dài của họ trong Byte , có thể không tương đương trực tiếp với nhân vật . Ví dụ, các ký tự Unicode 16 bit, lấy hai byte mỗi byte.
Những người đam mê điện toán retro và những người có ký ức dài sẽ biết rằng trong những ngày đầu của máy tính cá nhân, Hệ điều hành đĩa Microsoft Microsoft , Dos, không nhạy cảm với trường hợp và có giới hạn tên tệp là tám ký tự, cộng với ba ký tự sự mở rộng .
Bạn phải rất chu đáo và đôi khi sáng tạo khi bạn đặt tên cho các tập tin. Để so sánh, sự tự do mà chúng ta có ngày nay có nghĩa là chúng ta có thể đặt tên cho các tệp bất cứ điều gì chúng ta muốn, với rất ít suy nghĩ cho bất cứ điều gì khác ngoài mô tả mà chúng ta tạo ra cho tệp đó.
Nhưng với tên tệp, những gì chúng ta thường xuyên lên đường là các nhân vật chúng ta gõ, đó là khoảng trống giữa chúng.
Tại sao không gian trong tên tệp Linux là một nỗi đau
Các shell như bash sẽ giải thích một chuỗi các từ được phân tách không gian như các đối số lệnh riêng lẻ, không phải là một đối số duy nhất. Đây là một ví dụ, sử dụng
chạm
ĐẾN
Tạo một tệp mới
Được gọi là tệp mới của tôi.txt.
Như chúng ta có thể thấy,
ls
Cho chúng ta thấy rằng có ba tệp được tạo ra, một tệp có tên là My My, một loại khác được gọi là New New, và một tệp nữa được gọi là File File.txt.
Lưu ý rằng
chạm
didn phàn nàn hoặc ném một lỗi. Nó thực hiện những gì nó nghĩ rằng chúng tôi yêu cầu nó làm. Vì vậy, nó âm thầm đưa chúng ta trở lại dòng lệnh. Nếu chúng tôi không có động lực để kiểm tra, chúng tôi đã giành chiến thắng biết những điều mà thiên đường đã đi theo kế hoạch.
Để tạo tập tin chúng tôi muốn, chúng tôi đã phải báo giá hoặc thoát.
Cách trích dẫn và thoát khỏi không gian
Nếu chúng ta trích dẫn toàn bộ tên tệp,
chạm
Biết nó cần coi văn bản được trích dẫn như một đối số duy nhất.
Lần này chúng tôi nhận được các tập tin duy nhất mà chúng tôi mong đợi.
Chúng ta có thể nhận được kết quả tương tự nếu chúng ta sử dụng ký tự dấu gạch chéo ngược
\
Để thoát khỏi không gian. Bằng cách thoát khỏi việc thoát khỏi các không gian mà họ không được đối xử như những nhân vật đặc biệt, đó là, các cuộc tranh luận, họ đã coi đó là những không gian cũ đơn giản.
Điều đó hoạt động, nhưng thoát khỏi không gian làm cho việc gõ tên tệp chậm hơn và dễ bị lỗi. Mọi thứ có thể trở nên thực sự xấu xí nếu bạn cũng có tên thư mục với không gian trong đó.
Lệnh đó sao chép một tệp văn bản duy nhất từ một thư mục có tên là Dir Dir One thành một thư mục có tên là Dir Dir Two, và lưu bản sao dưới dạng tệp BAK. Và nó là một ví dụ khá đơn giản.
Cách khắc phục sự cố không gian tại nguồn của nó
Nếu họ là các tệp của riêng bạn, bạn có thể đưa ra quyết định chính sách không bao giờ sử dụng không gian và tạo (hoặc Đổi tên số lượng lớn ) Tên tệp như thế này.
Phải thừa nhận rằng, đó là một giải pháp mạnh mẽ nhưng nó vẫn còn xấu xí. Có những tùy chọn tốt hơn, chẳng hạn như sử dụng dấu gạch ngang
-
"Hoặc nhấn mạnh"
_
"Để tách các từ của bạn.
Cả hai điều này sẽ vượt qua vấn đề, và họ có thể đọc được. Nếu bạn không muốn thêm ký tự vào tên tệp của mình, bạn có thể sử dụng Lạc đà Để làm cho tên tệp của bạn có thể đọc được, như thế này:
Mở rộng tab giúp đối phó với không gian dễ dàng
Tất nhiên, việc áp dụng một quy ước đặt tên và gắn bó với nó sẽ chỉ giúp ích khi bạn xử lý các tệp của riêng bạn. Các tập tin đến từ bất kỳ nơi nào khác không có khả năng tuân theo quy ước đặt tên được thông qua của bạn.
Bạn có thể sử dụng mở rộng tab để giúp bạn chính xác điền vào các tên tệp của chúng tôi. Hãy nói rằng chúng tôi muốn
xóa bỏ
Tệp BAK mà chúng tôi đã tạo trong “Dir Two”, sử dụng
RM
.
Chúng tôi bắt đầu bằng cách gõ vào RM RM Dirv vì chúng tôi sử dụng
RM
Lệnh và chúng tôi biết tên thư mục bắt đầu bằng trực tiếp.
Nhấn khóa tab tab Tab khiến bash quét các trận đấu trong thư mục hiện tại.
Có hai thư mục bắt đầu với dòng dir dir, và trong cả hai trường hợp, nhân vật tiếp theo là một không gian. Vì vậy, bash thêm nhân vật ngược
\
"Và một không gian. Bash sau đó đợi chúng tôi cung cấp nhân vật tiếp theo. Nó cần nhân vật tiếp theo để phân biệt giữa hai trận đấu có thể trong thư mục này.
Chúng tôi sẽ gõ một loại T, cho hai người khác, và sau đó nhấn Tab Tab, một lần nữa.
Bash hoàn thành tên thư mục cho chúng tôi và chờ chúng tôi gõ bắt đầu tên tệp.
Chúng tôi chỉ có một tệp trong thư mục này, vì vậy việc nhập chữ cái đầu tiên của tên tệp, là M M, là đủ để cho Bash biết tệp nào chúng tôi muốn sử dụng. Việc gõ vào m m và nhấn Tab Tab Tab hoàn thành tên tệp cho chúng tôi và và Enter Enter thực hiện toàn bộ lệnh.
Mở rộng tab giúp bạn dễ dàng đảm bảo bạn có được tên tệp đúng, và nó cũng tăng tốc điều hướng và gõ trên dòng lệnh nói chung.
CÓ LIÊN QUAN: Sử dụng hoàn thành tab để nhập các lệnh nhanh hơn trên bất kỳ hệ điều hành nào
Cách sử dụng tên tệp với không gian trong tập lệnh bash
Nó không có gì ngạc nhiên khi kịch bản Có chính xác các vấn đề tương tự với không gian trong tên tệp như dòng lệnh. Nếu bạn đang truyền một tên tệp như một biến, hãy chắc chắn rằng bạn trích dẫn tên biến.
Tập lệnh nhỏ này kiểm tra thư mục hiện tại cho các tệp phù hợp với mẫu tệp**.txt, và lưu trữ chúng trong một biến gọi là
file_list
.
MỘT
vì
vòng
được sử dụng để thực hiện một hành động đơn giản trên mỗi người.
Sao chép văn bản này vào một trình soạn thảo và lưu nó vào một tệp có tên là Files Files.sh. Sau đó sử dụng
các
Chmod
yêu cầu
để làm cho nó thực thi.
Chúng tôi đã có một số tập tin trong thư mục này. Một có tên tệp đơn giản và hai người còn lại sử dụng
_
"Hoặc Dashes"
-
Thay vì không gian. Đây là những gì chúng ta thấy khi chúng ta chạy kịch bản.
Điều đó dường như hoạt động độc đáo. Nhưng hãy để thay đổi các tệp trong thư mục cho các tệp có chứa khoảng trống trong tên của chúng.
Mỗi từ trong mỗi tên tệp được xử lý như thể nó là một tên tệp một mình, và vì vậy tập lệnh không thành công. Nhưng tất cả những gì chúng ta cần làm để làm cho tập lệnh xử lý các khoảng trắng trong tên tệp là để trích dẫn
Tệp $
biến bên trong
vì
vòng.
Lưu ý rằng dấu hiệu đô la
$
Đây là bên trong các trích dẫn. Chúng tôi đã thực hiện thay đổi đó và lưu nó vào tệp tập lệnh Files Files.sh. Lần này, tên tệp được xử lý chính xác.
CÓ LIÊN QUAN: Cách xử lý một dòng tệp từng dòng trong tập lệnh bash linux
Cách xa nhau, nhưng không bong tróc
Tránh không gian trong tên tệp của riêng bạn sẽ chỉ đưa bạn đến nay. Nó không thể tránh khỏi rằng bạn sẽ gặp các tệp từ các nguồn khác có tên có chứa khoảng trắng. Rất may, nếu bạn cần xử lý các tệp đó trên dòng lệnh hoặc trong các tập lệnh, có nhiều cách để làm điều đó.