Mógłbym (1) przygotować plik z wpisanymi poleceniami oddzielonymi linią końcową, (2) uczynić go wykonywalnym, (3) uruchomić go z menedżera systemu plików lub terminala.
Jest to jednak niedorzeczne, jeśli zestaw poleceń nie jest powtarzalny i za każdym razem.
Czy zamiast tego mogę wpisać te polecenia do terminala w jednym żądaniu?
Nie znam znaku końca linii dla terminala - Ctrl, Shift lub Alt z Enter nie działa.
gnome-terminal
command-line
Esamo
źródło
źródło
Odpowiedzi:
Możesz rozdzielić polecenia za pomocą
&&
lub;
.&&
uruchamia następne polecenie tylko wtedy, gdy poprzednie zakończyło się statusem 0 (powiodło się):;
uruchamia wszystkie polecenia, nawet jeśli poprzednie kończy działanie ze statusem niezerowym:Możesz łączyć te separatory według własnego uznania.
źródło
command1 && command2
polecenia 2 zostanie wykonane tylko wtedy, gdy polecenie 1 zakończy się powodzeniem.sudo apt upgrade
isudo systemctl reboot
, czy musielibyście dodać „sudo” dwa razy, czy też „zapamięta” sudo dla drugiego polecenia?Jeśli chcesz wpisać każde polecenie w osobnym wierszu w jednym żądaniu, możesz użyć następującej metody:
Rozpocznij swoją prośbę (pierwszy wiersz) od
if :; then
(to znaczy: jeśli prawda, to zrób) i naciśnij Enter; twój monit zmieni się teraz>
i nic nie zostanie wykonane.Wpisz swoje polecenia, a następnie każde Enter
Zakończ żądanie za pomocą
fi
(koniec powyższegoif
warunku) i naciśnij Enter. Teraz wszystkie twoje polecenia będą wykonywane w podanej kolejności.Przykład:
źródło
if true; then
może być bardziej czytelny, jeśli jest to pożądane. na pierwszy rzut oka:
można pomylić;
.Najpierw umieść
{
na własnej linii.Następnie wstaw swoje polecenia.
Następnie wstaw
}
nowy wiersz i naciśnij Enter. Twoje polecenia zostaną wykonane.Przykład:
który wydrukuje (wszystkie naraz, bez monitu pomiędzy):
Na marginesie,
{ .. }
jest składnia grupowania poleceń Bash. Jest to często przydatne w połączeniu z&&
lub||
(odpowiednio „i” oraz „lub”)źródło
if :; then
już wspomniano? Czy jest to nieco inne?if :
uruchamia test na komendzie null, która zawsze zwróci true.{ .. }
po prostu grupuje polecenia razem. Osobiście uważam, że{ .. }
łatwiej zapamiętać.