Mam wątpliwości dotyczące * nix.
Nie wiem
ls
, jaki jest typ pliku wykonywalnego , czy to jest .sh, .ksh, czy jakikolwiek inny systemowy plik wykonywalny, jeśli tak jest, co to jest?kiedy próbowałem zobaczyć
ls
, jak wygląda kod źródłowy polecenia, pokazuje coś nieczytelnego, jakiej metody używa * nix do tworzenia tego rodzaju nieczytelnych plików i czy mogę sprawić, by moje pliki były podobne do tych plików (np.ls
- nieczytelne).
shell
executable
architecture
Jeyanthinath
źródło
źródło
Odpowiedzi:
Możesz określić charakter pliku wykonywalnego w Uniksie za pomocą
file
polecenia itype
polecenia.rodzaj
Służy
type
do określania lokalizacji pliku wykonywalnego na dysku w następujący sposób:Teraz wiem, że
ls
znajduje się tutaj w moim systemie w 2 lokalizacjach:/usr/bin/ls
i/bin/ls
. Patrząc na te pliki wykonywalne, widzę, że są identyczne:UWAGA: Możesz potwierdzić, że są identyczne poza swoimi rozmiarami, używając
z różnicą z cmpcmp
lubdiff
.Korzystanie z pliku
Jeśli zapytam je za pomocą
file
polecenia:Byłyby to więc rzeczywiste programy fizyczne skompilowane z C / C ++. Gdyby były to skrypty powłoki, zwykle prezentowałyby się tak
file
:Co to jest ELF?
ELF jest formatem pliku , jest to wynik kompilatora takiego jak
gcc
, który jest używany do kompilacji programów C / C ++ takich jakls
.Zwykle będzie miał jedno z następujących rozszerzeń w nazwie pliku: none, .o, .so, .elf, .prx, .puff, .bin
źródło
type
wszędzie tam, gdzie masz ochotę użyćwhich
lubwhereis
.md5sum
lubsha1sum
, nie tylko sprawdzenie rozmiary i czasy plików.coreutils-8.21-13.fc19.x86_64
i po prostu wiem, że są identyczni z 20 lat zajmowania się wydaniami Red Hat.Jest to binarny plik wykonywalny (skompilowany do kodu maszynowego, jak większość systemu). Skrypty powłoki są bardziej jak „klej” do łączenia części w celu szybkiego i elastycznego tworzenia rozwiązań z istniejących elementów. To jest moc * nix.
Potrzebujesz kodu źródłowego (c, czasem c ++, są najczęstszymi językami w * nix), a nie tylko skompilowanego pliku wykonywalnego. Ponieważ jest to oprogramowanie typu open source, możesz uzyskać kod do wszystkiego z repozytoriów online (podstawowe narzędzia są zwykle z projektu GNU). Jest to jednak trochę trudne, jeśli nie wiesz, jak korzystać z git lub innych systemów śledzenia wersji.
Oto plik ls.c, jeśli pomaga: http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
źródło