Mọi người nói rằng bạn không nên sử dụng khoảng trắng trong đặt tên tệp Unix. Có lý do chính đáng để không sử dụng chữ in hoa trong tên tệp (nghĩa là File_Name.txt
so với file_name.txt
) không? Hay đây chỉ là vấn đề sở thích cá nhân?
Mọi người nói rằng bạn không nên sử dụng khoảng trắng trong đặt tên tệp Unix. Có lý do chính đáng để không sử dụng chữ in hoa trong tên tệp (nghĩa là File_Name.txt
so với file_name.txt
) không? Hay đây chỉ là vấn đề sở thích cá nhân?
Câu trả lời:
Mọi người nói rằng bạn không nên có khoảng trắng trong việc đặt tên tệp Unix.
Mọi người nói rất nhiều điều. Có một số công cụ có thể làm hỏng, nhưng hy vọng chúng có số lượng ít tại thời điểm này, vì không gian là một loại virus được phổ biến bởi các tập đoàn hệ điều hành độc quyền tiêu dùng khổng lồ và bây giờ không thể tránh được.
Spaces làm cho việc chỉ định tên tệp trên dòng lệnh, v.v., thật khó xử. Đó là về nó. Các ký tự bị cấm phân loại duy nhất trên các hệ thống * nix là NUL (đừng lo lắng, nó không có trên bàn phím của bạn hoặc của bất kỳ ai khác) và /
, vì đó là dấu phân cách đường dẫn. 1 Khác hơn bất cứ điều gì đi. Các thành phần đường dẫn riêng lẻ (tên tệp) được giới hạn ở 255 byte (một sự phức tạp có thể xảy ra nếu bạn đang sử dụng các bộ ký tự mở rộng) và hoàn thành các đường dẫn tới 4 KiB.
Hay đây chỉ là vấn đề sở thích cá nhân
Tôi sẽ nói rằng nó là. Của hầu hết DE dường như để tạo ra một loạt các thư mục vốn tại của bạn $HOME
( Downloads
, Desktop
, Documents
- các D
là rất phổ biến), vì vậy không có gì kỳ lạ về nó. Ngoài ra còn có các tệp truyền thống rất phổ biến với chữ hoa trong đó, chẳng hạn như .Xclients
và .Xauthority
.
Một giá trị của việc viết hoa ngay từ đầu là khi được liệt kê theo từ vựng, chúng sẽ đến trước những thứ viết thường - ít nhất, với nhiều công cụ và tùy thuộc vào ngôn ngữ.
Tôi là một fan hâm mộ của vỏ lạc đà (còn gọi là camelCase) và sử dụng nó với tên tệp, ví dụ: /home/goldilocks/blueSuedeShoes
- đừng bận tâm đến những gì trong đó. Chắc chắn là một vấn đề sở thích cá nhân nhưng nó vẫn chưa khiến tôi đau buồn.
Các tệp lớp Java có xu hướng chứa thủ đô theo bản chất, vì các tên lớp Java có. Và tất nhiên, chúng ta đừng quên NetworkManager
, ngay cả khi một số người trong chúng ta thích.
1. Có một nhiều hơn phân, khuyến cáo của POSIX "Portable Tên tập Character Set" mà không bao gồm các không gian - nhưng nó không bao gồm chữ hoa! POSIX cũng chỉ định các hạn chế chung hơn về "ký tự gạch chéo và byte rỗng" ở nơi khác trong cùng một tài liệu . Điều này phản ánh, hoặc được phản ánh trong, thực tiễn thông thường lâu đời .
README
s và Makefile
s của bạn và như vậy.
Một lý do để tránh giới hạn trong tên tệp là thứ tự sắp xếp trong Unix rất phân biệt chữ hoa chữ thường, vì vậy các tệp bắt đầu bằng chữ in hoa sẽ xuất hiện không theo thứ tự. Đó là lý do tại sao Makefile
thường được đặt tên bằng cách sử dụng vốn M
- đó là một trong những tệp bạn muốn xem đầu tiên, mà không cuộn / bỏ qua máng a-l
.
Điều này nói rằng, bạn có thể làm tồi tệ hơn nhiều về tên tệp:
-
có thể gây ra vấn đề vì nhiều chương trình sẽ xem nó dưới dạng tùy chọn dòng lệnh thay vì tên tệp (ví dụ: rm -r
sẽ không xóa tệp có tên -r
)..
ý chí sẽ ẩn nó khỏi nhiều tiện ích và shell shellbing (ví dụ: rm *
sẽ không xóa các tệp như .config
)|<>*?
và thậm chí các ký tự không in được như newline
kỹ thuật là có thể, nhưng có thể phá vỡ các tập lệnh / chương trình tương tự như ký tự không gian. Sự khác biệt là nhân vật không gian thường được sử dụng, vì vậy các lập trình viên có xu hướng kiểm tra chương trình của họ chống lại nó, trong khi các nhân vật ít phổ biến hơn vẫn chưa được kiểm tra.rm *
sẽ không xóa các tập tin như thế .config
nào?
Makefile
và README
là ví dụ hoàn hảo về điều đó. Cũng lưu ý rằng hiệu ứng này là không đáng kể nếu chữ cái không phải là chữ cái đầu tiên trong tên, vì vậy nó không phải là vấn đề lớn nếu bạn sử dụng camelCase. Chắc chắn, bạn có thể ngạc nhiên khi thấy anOctagon
trước đây angle
, nhưng ít nhất họ sẽ ở cùng nhau trong danh sách.
Nếu bạn định giao diện với môi trường Windows, bạn nên tránh viết hoa vì Windows sẽ viết thường mọi thứ. Đây thường là một vấn đề đi theo cách khác; một liên kết đến Page_2.html
sẽ tìm thấy page_2.html
trong Windows, nhưng sẽ thất bại trong Unix.
NUL
và /
bị cấm.
cat > Foo
sẽ ghi đè lên tệp foo
. Hành vi này có thể gây bất ngờ và khó hiểu nếu bạn đã quen với các hệ thống tập tin phân biệt chữ hoa chữ thường và chữ hoa chữ thường như ext *.
\0
và phân /
biệt chữ hoa chữ thường). Ít nhất đó là cách tôi nhớ nó. Nhưng tôi đồng ý rằng đó là một mớ hỗn độn. Có những hạn chế hơn nữa trong trận đấu
Một lý do để tránh giới hạn là tính năng bash
tab của nó phân biệt chữ hoa chữ thường (ít nhất là theo mặc định) .ththth vẫn tiếp tục gặp tôi mỗi khi tôi kết thúc trước một bash
cấu hình mặc định. Chắc chắn, có các shell phổ biến khác, nhưng điều này kết hợp với thực tế bash
là shell đăng nhập mặc định trên nhiều hệ điều hành có nghĩa là mặc định là hoàn thành phân biệt chữ hoa chữ thường. Sử dụng tên tệp chữ thường thay vì đơn giản hóa mọi thứ ở đây.
echo set completion-ignore-case On >> ~/.inputrc
có thể giúp một chút, ít nhất là trên hệ thống của riêng bạn.
Foo
và loại mới hơn cat f
(Tab), nó sẽ thất bại. Nhưng điều tương tự cũng xảy ra nếu bạn nhập cat foo
, cat Foobar
hoặc cat Fu
- thực tế là bạn sẽ gặp khó khăn khi truy cập một tệp có tên mà bạn không nhớ chính xác không thực sự có liên quan đến tự động hoàn tất.
Vì NL_Derek đã mở hộp giun này, nhưng không nói rõ nó, tôi sẽ nói điều này:
Bạn có thể sử dụng chữ in hoa, nhưng bạn nên tránh tạo các tệp (trong cùng thư mục) chỉ khác nhau theo từng trường hợp , ví dụ, File_Name.txt
và file_name.txt
, bởi vì
FILENA~1.TXT
và FILENA~2.TXT
- dir /x
để xem tên ngắn (nếu có) đi với tên dài nào.)cmd1 > foo
cmd2 > Foo
cmd2
Ngoài lý do kỹ thuật, tôi có một khía cạnh thực tế cho việc này. Bám sát các chữ cái viết thường sẽ đảm bảo rằng các tìm kiếm dễ dàng hơn trừ khi người ta quá thích sử dụng grep -i hoặc định vị -i. Đôi khi, ngay cả camelCase cũng có thể gây nhầm lẫn nếu người ta phải sử dụng một chuỗi các từ giống như trường hợp lưu trữNYCDCPrimary. Vì vậy, tôi thấy tốt nhất là bám vào chữ thường và tiêu chúng bằng dấu gạch dưới hoặc dấu gạch nối để dễ đọc, như Storage_nyc_dc_primary.
storageNycDcPrimary
và StorageNycDcPrimary
cả hai đều lạ khi đọc.
Tôi nghĩ rằng đó là cách tốt nhất để tránh sử dụng chữ hoa và khoảng trắng trong tên tệp.
Một số người sẽ nói rằng họ không đồng ý nhưng đó là vấn đề hoặc điều mà tôi gọi là niềm tin tôn giáo : khó thảo luận và đồng ý. Những người không đồng ý nói rằng hầu hết các công cụ hiện đã được cố định là thủ đô và không gian thân thiện: chúng đúng nhưng đây không phải là câu hỏi.
Câu hỏi đúng là bạn cần bao nhiêu để sử dụng chữ hoa và khoảng trắng trong tên tệp. Đối với câu hỏi này, ngoại trừ khi tôi đang lập trình bằng Java, câu trả lời chủ yếu là mọi lúc: Tôi không cần chữ hoa và khoảng trắng trong tên tệp của mình . Tất cả các khoảng trắng tôi thay thế bằng dấu gạch dưới ( _
) hoặc dấu trừ ( -
) và do đó tôi không sử dụng trường hợp lạc đà (còn gọi là camelCase) trái với một số tôn giáo khác.
Nhiều người gọi tôi là nhảm nhí vì đã làm và dạy rằng - một số trong số họ vẫn làm - một số trong số họ vấp phải một công cụ không thân thiện với vốn / không gian và nói với tôi rằng tôi đã đúng và họ nên lắng nghe tôi. Làm bất cứ điều gì bạn muốn , và nếu bạn sử dụng chữ hoa và khoảng trắng trong tên tệp, tôi hy vọng bạn sẽ không bao giờ vấp phải một công cụ viết kém. Tuy nhiên, nếu bạn truy cập vào công cụ như vậy, hy vọng một lần nữa, sẽ không khó để sửa chữa và sẽ không tốn chi phí cho doanh nghiệp của bạn và / hoặc bạn rất nhiều tiền và / hoặc thời gian. Nhưng nếu cuối cùng nó có hậu quả xấu, bạn sẽ nhớ rằng một số người đã nói với bạn trong quá khứ rằng sử dụng chữ viết hoa và khoảng trắng trong tên tệp là thông lệ xấu.
Và một điều cuối cùng, nếu bạn muốn tránh tất cả các vấn đề , không có ký tự đặc biệt nào trong tên tệp (chỉ có chữ in thường, chữ số, dấu gạch dưới và dấu trừ [1]). Danh sách nhân vật không mong muốn này cũng bao gồm tất cả các nhân vật không phải ascii (vâng, người Pháp và những người không phải tiếng Anh khác - và tôi là một trong số họ - không ai trong số họ: à, â, ä, ç, é, ..., ö, æ, , ...). Điều này cũng mở rộng cho nhiều thứ khác, bao gồm cả đăng nhập và mật khẩu . Tôi sẽ cho bạn đoán điều gì xảy ra khi bạn đặt một trích dẫn hoặc trích dẫn kép ( '
hoặc "
) trong một thông tin đăng nhập hoặc mật khẩu được xử lý bởi một tập lệnh bash không được viết bởi một sysadmin đã xác nhận ....
[1]: có lẽ chúng ta có thể mở rộng đến ~
, @
, #
và một số người khác, nhưng điều này đang tìm kiếm rắc rối (và vâng tôi biết về các tập tin emacs ...).