Zastanawiałem się, jaka jest potrzeba umieszczenia poleceń wykonywalnych w .sh
pliku, aby utworzyć pojedynczy skrypt, ponieważ mogę to zrobić, umieszczając polecenia w .txt
pliku i umożliwiając jego wykonanie chmod
.
Zakładam, że można to zrobić za pomocą dowolnego rozszerzenia pliku. Jestem więc dość zdezorientowany co do potrzeby .sh
przedłużenia. Każda pomoc byłaby mile widziana.
.txt
Txt kończy się. .txt) zrozumienie.txt what.txt each.txt file.txt is.txt there.txt for.txt.Odpowiedzi:
Jak prawidłowo się przekonałeś, rozszerzenie pliku nie musi pasować do niczego konkretnego.
W systemach uniksopodobnych typy plików są zwykle wyprowadzane z zawartości pliku (tj. „Magicznej liczby” lub innych charakterystycznych struktur w pierwszych kilku bajtach), a nie z ich nazwy. Możesz także całkowicie pominąć rozszerzenie, które często jest wykonywane dla plików wykonywalnych.
Sprawdź
file
polecenie, pokazuje informacje, jakie może znaleźć na temat typu pliku na podstawie jego zawartości.W przypadku skryptu wykonywalnego system oczekuje w pierwszym wierszu tak zwanego „shebang”, który wygląda np.
i wskazuje, który program ma działać jako interpreter z plikiem skryptu jako argumentem. Jeśli wykonasz plik tekstowy bez takiego podziału, użyje on domyślnej powłoki, tj. Bash, aby spróbować go zinterpretować.
Tak więc w systemach Unix / Linux rozszerzenia nazw plików są w większości wskazówkami (ale nie są gwarancją) dla ludzkiego użytkownika, aby szybko rozpoznał, czego oczekiwać od określonego pliku. Jest to również konwencja, która może pomóc np. W szybszym wyszukiwaniu plików.
Zauważ jednak, że istnieją wyjątki, w których nazwa i rozszerzenie mają znaczenie (np. Niektóre systemowe pliki konfiguracyjne, które muszą być zgodne z konwencją nazewnictwa lub wiele przeglądarek i edytorów obrazów również wymaga rozszerzenia, aby wskazać typ pliku).
Możesz także spojrzeć na Czy rozszerzenia plików mają jakiś cel (dla systemu operacyjnego)?
źródło
W nazwie pliku UNIX / Linux nie ma czegoś takiego jak „rozszerzenie” lub „typ”.
Jak zauważyli inni, „typ” można znaleźć za pomocą polecenia file, zakładając, że odpowiednia magia jest dostępna w twoim systemie. Nazwy plików w systemie UNIX / Linux mogą zwykle zawierać dowolny dostępny znak, ale często pomocne jest użycie jakiejś formy konwencji dla tej nazwy, aby zarówno ludzie, jak i maszyny mogli oceniać zawartość (a tym samym wykorzystanie zawartości).
Jako przykład często używam przecinka jako pierwszego znaku nazwy pliku, aby wskazać plik tymczasowy, zamiast używać czegoś takiego jak ciąg „.tmp” na końcu nazwy pliku. Rezultat jest taki sam, plik zawierający dane, które są wymagane tylko przez krótki czas, ale nazwa nie musi zawierać „.” w nim ani ciąg „tmp”. Może to czasem mieć zalety, np. Podczas analizowania listy nazw plików. Ale to jest MOJA konwencja i ktoś może zdecydować się na inną, nawet używając „.tmp” jako swojej konwencji nazwy pliku tymczasowego.
Więc moja odpowiedź brzmi: nie ma czegoś takiego jak rozszerzenie pliku UNIX / Linux, a jedynie zestaw konwencji, które zwykle wyglądają jak rozszerzenia plików używane w innych systemach operacyjnych i ich systemach plików.
źródło
"."
, powinny być kropkowane przez powłokę (nie mogą działać sensownie w podpowłoce). Odpowiednio wyłączam domyślną konwencję „początkowa kropka = ukryty plik” w moich aliasach / skryptach, które używają,ls
aby widzieć wszystkie pliki, w tym te „ukryte”. Podobnie w systemie Windows wyłączam ustawienie „ukryj rozszerzenia plików”.