Co robi „(pojedynczy cytat) w terminalu?


8

Jeśli wpiszesz „(pojedynczy cudzysłów, obok <enter>przycisku) w terminalu, a następnie naciśnij Enter, pojawi się komunikat >. Co to dokładnie jest, do czego służy i do jakiego rodzaju poleceń mogę tutaj wpisać?

Mogę <Ctrl-C>z tego wyjść, ale to wszystko, co mam.

Odpowiedzi:


6

Terminal akceptuje nie tylko kod jednowierszowy. W rzeczywistości możesz pisać kod (ponieważ skrypt bash jest językiem programowania) w wielu wierszach.

Na przykład, jeśli napiszesz:

while true; do <enter>

pokaże dokładnie to samo >, co pokazane w twojej sprawie. Pozwala wprowadzić więcej poleceń. Teraz, jeśli wpiszesz:

echo "Cake is a lie" <enter>
sleep 1              <enter>
done                 <enter>

zacznie działać twój kod (który w tym przypadku jest po prostu pętlą while, która wypisze ciąg co 1 sekundę). Pozwala to na budowanie małych programów bez konieczności pisania ich w kodzie jednowierszowym, jak poniżej:

while true; do echo "Cake is a lie"; sleep 1; done

co w tym przypadku nie jest takim problemem, ale może być przy innych okazjach (z większą ilością kodu do napisania).

Jest więc ogólnie używany do pisania wielu wierszy kodu. Przy okazji powłoka rozpoznaje, że 'w kodzie nie ma parzystej liczby , i to w żadnym wypadku nie może działać (to samo dotyczy "). Pozwól więc, że napiszesz więcej kodu, aby uzupełnić to, co zostało.

Na przykład jeśli podasz jako polecenie:

echo "Cake is a <enter>

to pozwoli ci kontynuować. I rzeczywiście możesz:

lie"            <enter>

Zwykle będzie generować:

Cake is a
lie

Rozumiem, więc zamiast wyświetlać komunikat o błędzie, daje mi to szansę inteligentnego zakończenia polecenia. Czy istnieje nazwa tego „trybu”?
Insperatus

2
Nie sądzę, że ma specjalną nazwę, zwykle nazywa się ją „wtórnym
monitem
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.