Phong cách / thực hành tốt cho các dấu phân cách trong tên tệp (hoặc thư mục) [đã đóng]


16

Tôi không chắc chắn chính xác nếu đây là một câu hỏi "đúng" để đăng ở đây. Có lẽ tôi đang hỏi nhiều hơn về "ý kiến" hơn là câu trả lời phân loại thực tế (trong số những câu hỏi có hiệu quả hoặc không, và đó là điều đó).

Tôi đã tự hỏi phân tách tên nào sẽ thân thiện với linux nhất (hay cụ thể hơn là Bash thân thiện ) và thân thiện với con người cùng một lúc.

Giả sử tôi muốn tạo một thư mục chứa thứ gì đó liên quan đến Mr. Foo Bar ( Foo là tên đầu tiên, Bar là tên cuối cùng)

Có tên " Foo-Bar/" rất thuận tiện. -là một nhân vật "thông thường", nó không cần phải trốn thoát, nó cho thấy rõ điều đó FooBarlà hai điều riêng biệt ... Tốt đẹp.

Bây giờ, " Foo.Bar" là một chút phức tạp hơn. Ai đó có thể nghĩ rằng đó Foo.Barthực sự là một tệp (thoạt nhìn, đặc biệt nếu bạn không có thiết bị đầu cuối có bật màu) trong đó " Foo" là tên tệp và " Bar" phần mở rộng.

Tôi cũng có thể sử dụng " Foo Bar", nhưng sau đó tôi cần thoát khỏi khoảng trắng khi tôi muốn truy cập thư mục và, nếu tôi muốn liệt kê nội dung của thư mục mẹ ( Foo Barnằm ở đâu) và đặt danh sách đã nói trong một mảng bash, không gian màu trắng sẽ gây rắc rối (rất nhiều). Không hay.

Chân đế ()cũng gây ra rất nhiều vấn đề. Họ cũng cần phải được trốn thoát, sau đó gây rắc rối với các lệnh như scp... Không hay.

Vì vậy, ... câu hỏi (cuối cùng) là: Nếu bạn cần làm cho tên của một tệp rõ ràng và có ý nghĩa trong nháy mắt, và bạn cần sử dụng dấu phân cách, bạn sẽ sử dụng cái gì?


5
Để tham khảo: bộ ký tự tên tệp di động POSIX .
jw013

Tôi thường sử dụng dấu gạch ngang, nhưng nó phụ thuộc vào những gì tôi đang làm. Một số có thể xem xét trường hợp lạc đà là thích hợp như FooBar.
klapaucius

Câu trả lời:


14

Câu trả lời ngắn gọn: "Foo _-_ Bar"

Câu trả lời dài:

Để làm cho mọi thứ dễ dàng phát hiện ra, tôi có xu hướng sử dụng một chuỗi các ký tự trong các khu vực cần thiết, ý tưởng là sử dụng thứ gì đó dễ phát hiện để bạn biết rằng đây là dấu phân cách có thể là "_-_" hoặc " ___ ".

Một ví dụ thực tế nơi tôi sử dụng đây là bộ sưu tập mp3 của tôi trong đó tên tệp chứa tên ca sĩ và bài hát, và đôi khi là số thứ tự. Và nếu bạn sử dụng một chuỗi ma thuật để phân tách chúng thì thật dễ dàng cho cả mắt lẫn kịch bản. Ví dụ mp3 có thể trông giống như thế này.

  • 01_Blue_Man_group _-_ Trên.mp3
  • 02_Blue_Man_group _-_ Time_to_Start.mp3
  • 03_Blue_Man_group _-_ Sing_Along.mp3

Bây giờ điều này có thể được dịch sang ví dụ của bạn nếu Foo và Bar là hai thứ logic không nên trộn lẫn và đó có thể là Foo _-_ Bar.


2
Và bằng cách này, bạn cũng có thể phân biệt các tên đã có dấu gạch ngang (hoặc dấu phân cách nói chung).
lynxlynxlynx

1
Cũng thực sự tốt đẹp để reg parse! : ^ (. +) _-_ (. +) \. mp3 $
DanDan

Cho rằng con người sẽ xem các tập tin này, đây là một câu trả lời tốt; Về bản chất tôi sẽ coi đây là một chuỗi phân tách; Một dấu phân cách độc đáo đa ký tự. Trong Vagrant, tôi đã nhận thấy nó sử dụng chuỗi VAGRANTSLASHtrong tên tệp có phân tách.
ThorSummoner

9

Với rất nhiều nhân vật mà bạn có thể không nghĩ là đặc biệt, thực tế là đặc biệt, tôi chỉ sử dụng các ký tự đặc biệt. Điều này cũng đặt tôi vào những thói quen tốt khi sử dụng hoàn thành bash, nơi nó sẽ tự động thoát tất cả các ký tự đặc biệt trong một tên tệp. Nhưng nó cũng đặt tôi vào những thói quen tốt để thoát / trích dẫn MỌI THỨ trong các kịch bản và nhiều phần 1 trong bash.

Ví dụ, chỉ trong 1-liner đơn giản:

for file in *.txt; do something.sh "$file"; done

Theo cách đó, ngay cả khi một trong các tệp có khoảng trắng hoặc một số ký tự khác, domột phần của vòng lặp vẫn sẽ hoạt động trên đó và không bỏ lỡ 2 hoặc nhiều phần tên tệp, có thể gây ra tác dụng phụ ngoài ý muốn.

Vì tôi không thể kiểm soát việc đặt tên không gian / không gian của MỌI tệp mà tôi gặp phải và nếu tôi đã thử, nó có thể sẽ phá vỡ một số liên kết tượng trưng ở đâu đó, gây ra nhiều hậu quả ngoài ý muốn, tôi chỉ mong rằng tất cả tên tệp / directoryname có thể có khoảng trắng trong đó, và chỉ trích dẫn / thoát tất cả các biến để bù.

Vì vậy, sau đó tôi chỉ sử dụng bất kỳ ký tự nào tôi muốn (thường là khoảng trắng) trong tên tệp.

Tôi thậm chí còn sử dụng khoảng trắng trong tên tập dữ liệu ZFS mà tôi phải thừa nhận đã gây ra một số lượng khá lớn trong số các nhà phát triển viết phần mềm cho NAS tôi sử dụng.

Tổng hợp: Dấu cách không phải là ký tự không hợp lệ , vì vậy không có lý do gì để không sử dụng chúng.


6

Tôi sử dụng dấu gạch ngang -, vì những lý do bạn đề cập ở trên. Tôi tránh dấu gạch dưới vì chúng yêu cầu sử dụng phím shift, do đó, phải mất ít nhất hai lần thời gian để gõ (đồng thời, tôi nghĩ chúng xấu xí)

Tôi có xu hướng làm điều này cho tên tập lệnh hơn bất kỳ điều gì khác - tôi đoán điều quan trọng hơn đối với tôi là xác định rõ ràng kịch bản đó dùng để làm gì. Các tệp tài liệu chỉ là dữ liệu trơ, nhưng các tập lệnh có khả năng gây nguy hiểm nếu sử dụng sai.


5

Tôi sử dụng dấu gạch dưới ( _). Trực quan chúng biến mất, và dễ gõ và không đặc biệt.


4
tôi thấy chúng xấu hơn -và khó gõ hơn (người ta phải sử dụng phím shift)
tshepang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.