Niedawno przeglądałem /bin
folder mojej Fedory i zauważyłem plik binarny o nazwie [
. Próbowałem przeszukać Internet, aby uzyskać więcej informacji na ten temat, ale nie znalazłem nic przydatnego. Przepuszczanie go strace
nie wydaje się również produkować niczego przydatnego do bliższej kontroli.
Co to jest? Czy powinienem się niepokoić? Czy może to wynik kompromisu systemowego? Czy powinienem to uruchomić? Czy należy do jakiejkolwiek paczki?
[ -f /bin/[ ] && printf "%s\n" "Don't panic"
man [
aby zobaczyć, jakie[
jest polecenie!bash
, i pomyślałem, że to może być coś innego. Nie jest to pierwsza rzecz, która przychodzi ci na myśl, gdy widzisz plik binarny o nazwie, której nigdy wcześniej nie widziałeś w systemie plików - lub inaczej mówiąc, musisz znaleźć coś bardziej konkretnego, aby rozwiać wątpliwości w twojej głowie .rpm -qif /bin/[
, aby dowiedzieć się, skąd pochodzi ...Odpowiedzi:
[
Binarny zamieszkały pod/bin
drzewem w wielu dystrybucjach GNU / Linux nie jest czymś, co należy niepokoić się. Przynajmniej w mojej Fedorze 19 jest to część pakietu coreutils, jak pokazano poniżej:i jest synonimem
test
pozwalającym na wyrażenia takie jak[ expression ]
pisanie w skryptach powłoki, a nawet użycie interaktywne.źródło
bash
mają wbudowanątest
i[
, a nie powoływać się na binarnym zewnętrznego.[
Ta specyfikacja wymaga polecenia testowego .[
polecenie. Te , które nie są podobne do Bourne'a, takie jak(t)csh
, na ogół nie ( jest to wyjątek).rc
es
fish
[
Komenda jest taka sama jak natest
komendę.Umożliwia pisanie raczej krótkich instrukcji warunkowych w skryptach powłoki. Ze strony podręcznika SunOS:
Jeśli go usuniesz, skrypty się zepsują!
źródło
[
wbudowanego polecenia, ulegną awarii. Większość pocisków ma. Nadal jednak nie polecam usuwania/bin/[
.[
wbudowane, to skrypty, które wykonują aplikacje inne niż powłoki , ulegną awarii[
. Likefind ... -exec [ -f {} ] \;
orenv LC_ALL=C [ -f bar ]
[
wbudowanego, ale nie sądzę, że[
była wbudowana w oryginał Skorupa Bourne'a. W każdym razie usunięcie/bin/[
byłoby złym pomysłem.test
i[
są prawie takie same.[
wymaga zamknięcia]
;test
nie pozwala na to (a raczej nie traktuje specjalnie argumentu]
).[Zawsze podaje się jako odpowiednik testu, ale nie widziałem wyraźnie wspomnianego], chociaż zawsze tam jest. Właśnie znalazłem to w http://ss64.com/bash/test.html :
co jest pocieszające - w końcu mam ukończenie, jak mówią.
źródło