Dobry styl / praktyki dotyczące separatorów w nazwach plików (lub katalogów) [zamknięte]

16

Nie jestem do końca pewien, czy jest to „właściwe” pytanie do opublikowania tutaj. Prawdopodobnie pytam więcej o „opinie” niż o rzeczywiste odpowiedzi kategoryczne (tych, które działają albo nie, i to wszystko).

Zastanawiałem się, jakie separatory nazw będą najbardziej przyjazne dla systemu Linux (a dokładniej Bash ) i jednocześnie przyjazne dla ludzi .

Powiedzmy, że chcę utworzyć katalog, który zawiera coś związanego z Mr. Foo Bar ( Foo to imię, Bar to nazwisko)

Posiadanie nazwy „ Foo-Bar/” jest bardzo wygodne. -jest „zwykłą” postacią, nie trzeba jej uciekać, wyraźnie to pokazuje Fooi Barsą dwiema osobnymi rzeczami ... Fajnie.

Teraz „ Foo.Bar” jest nieco trudniejsze. Ktoś może pomyśleć, że Foo.Bartak naprawdę jest to plik (na pierwszy rzut oka, zwłaszcza jeśli nie masz włączonych terminali z kolorowaniem), gdzie „ Foo” to nazwa pliku, a Barrozszerzenie „ ”.

Mógłbym również użyć „ Foo Bar”, ale potem muszę uciec od białych znaków, gdy chcę uzyskać dostęp do katalogu, a jeśli chcę wyświetlić zawartość katalogu nadrzędnego (gdzie się Foo Barznajduje) i umieścić tę listę w tablicy bash, białe miejsca będą powodować problemy (bardzo często). Niemiły.

Nawiasy ()powodują również wiele problemów. Trzeba też ich uciec, a następnie spowodować kłopoty z poleceniami, ponieważ scp... Niezbyt przyjemnie.

Więc ... pytanie (w końcu) brzmi: jeśli potrzebujesz, aby nazwa pliku była jasna i znacząca na pierwszy rzut oka, i musisz użyć separatorów, czego używasz?

BorrajaX
źródło
5
Dla odniesienia: zestaw znaków POSIX Portable Filename .
jw013
Często używam myślników, ale zależy to od tego, co robię. Niektórzy mogą uważać futerał na wielbłądy za odpowiedni, jak FooBar.
klapaucius

Odpowiedzi:

14

Krótka odpowiedź: „Foo _-_ Bar”

Długa odpowiedź:

Aby ułatwić wykrycie rzeczy, zwykle używam sekwencji znaków w obszarach, w których jest to potrzebne, chodzi o użycie czegoś, co jest łatwe do wykrycia, aby uzyskać separator, np. „_-_” Lub „ ___ ”.

Praktycznym przykładem, w którym go używam, jest moja kolekcja mp3, w której nazwy plików zawierają wykonawcę i tytuł utworu, a czasem numer porządkowy. A jeśli używasz magicznej sekwencji do ich rozdzielenia, jest to łatwe zarówno dla oka, jak i dla skryptów. Przykład mp3 może wyglądać mniej więcej tak.

  • 01_Blue_Man_Group _-_ Above.mp3
  • 02_Blue_Man_Group _-_ Time_to_Start.mp3
  • 03_Blue_Man_Group _-_ Sing_Along.mp3

Teraz można to przełożyć na przykład, jeśli Foo i Bar to dwie logiczne rzeczy, które nie powinny się mieszać, a może to być Foo _-_ Bar.

Johan
źródło
2
W ten sposób możesz także rozróżnić nazwy, które już zawierają myślniki (lub ogólnie separatory).
lynxlynxlynx
1
Również naprawdę miło jest reg ex parse! : ^ (. +) _-_ (. +) \. mp3 $
DanDan
Biorąc pod uwagę, że ludzie oglądają te pliki, jest to dobra odpowiedź; Zasadniczo uważałbym to za ciąg separatora; Wieloznakowy unikalny separator. W Vagrant zauważyłem, że używa ciągów VAGRANTSLASHw nazwach plików, w których występuje separacja.
ThorSummoner,
9

Przy tak wielu postaciach, które według ciebie nie powinny być wyjątkowe, w rzeczywistości będąc wyjątkowymi, po prostu i tak używam znaków specjalnych. To również wprawia mnie w dobre nawyki korzystania z uzupełniania basha, gdzie automatycznie unika wszystkich znaków specjalnych w nazwie pliku. Ale wprawia mnie to również w dobre nawyki ucieczki / cytowania WSZYSTKIEGO w skryptach i wieloczęściowych 1-liniowych wersjach bash.

Na przykład w prostej 1-liniowej linijce:

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

W ten sposób, nawet jeśli jeden z plików ma spację lub inny znak, doczęść pętli nadal będzie na niego oddziaływać i nie pominie 2 lub więcej części nazwy pliku, prawdopodobnie powodując niezamierzone skutki uboczne.

Ponieważ nie mogę kontrolować nazewnictwa spacji / spacji KAŻDEGO pliku, który napotkam, a gdybym spróbował, prawdopodobnie zepsułby gdzieś niektóre dowiązania symboliczne, powodując jeszcze bardziej niezamierzone konsekwencje, po prostu oczekuję, że wszystkie nazwy plików / katalogów mogą zawierać spacje, i po prostu zacytuj / usuń wszystkie zmienne, aby to skompensować.

Więc używam tylko dowolnych znaków (często spacji) w nazwach plików.

Używam nawet spacji w nazwach zestawów danych ZFS, co muszę przyznać, że wywołało spore zamieszanie wśród programistów, którzy piszą oprogramowanie dla NAS, którego używam.

Podsumowanie: spacje nie są nieprawidłowymi postaciami, więc nie ma powodu, aby ich nie używać.

killermist
źródło
6

Używam myślników -z powodów, o których wspomniałeś powyżej. Unikam podkreśleń, ponieważ wymagają użycia klawisza Shift, więc wpisanie zajmuje co najmniej dwa razy więcej (myślę, że są brzydkie)

Jestem bardziej skłonny to zrobić dla nazw plików skryptów niż cokolwiek innego - wydaje mi się, że ważniejsze jest dla mnie jasne określenie, do czego służy skrypt. Pliki dokumentów to tylko obojętne dane, ale skrypty są potencjalnie niebezpieczne, jeśli zostaną niewłaściwie użyte.

cas
źródło
5

Używam podkreślników ( _). Wizualnie znikają i są łatwe do pisania, a nie wyjątkowe.

bahamat
źródło
4
ja je znaleźć brzydsze niż -, i trudniejsze do typu (trzeba użyć klawisza SHIFT)
tshepang