Co to jest polecenie „tak”?

29

Wydałem polecenie w terminalu Ubuntu, które wymagało ode mnie wpisania tak, ale odkryłem, że pyta mnie tylko za pierwszym razem, ale nacisnąłem klawisz Enter, zanim zdałem sobie sprawę. Spodziewałem się więc komunikatu „nie znaleziono polecenia”, ale zamiast tego otrzymałem niekończący się strumień „y”. Wydaje się, że to jedyna rzecz, która to robi, więc zastanawiam się, jaki jest sens tego polecenia i dlaczego wypisuje „y”? (Ubuntu 11.10)

Greg Treleaven
źródło

Odpowiedzi:

14

Z wikipedii :

Sama komenda tak wyprowadza „y” lub cokolwiek podanego jako argument, po którym wielokrotnie pojawia się nowa linia, aż zostanie zatrzymana przez użytkownika lub w inny sposób zabita; po przekazaniu do komendy będzie kontynuowane aż do przerwania potoku (tzn. program zakończy wykonywanie).

Można go również użyć do przetestowania, jak dobrze system radzi sobie z dużymi obciążeniami, ponieważ użycie tak powoduje 100% wykorzystanie procesora, w systemach z jednym procesorem (w przypadku systemu wieloprocesorowego proces musi być uruchomiony dla każdego procesora). Może to być przydatne na przykład do sprawdzenia, czy system chłodzenia systemu będzie skuteczny, gdy procesor będzie działał na 100%.

DavidEG
źródło
30

Dawno, dawno temu (dni SySV i wcześniejsze) fsckpolecenie nie miało opcji -yani -nopcji. Polecenie to interaktywnie prosi o zmianę setek lub tysięcy przedmiotów, oczekując „y” lub „n”. yesKomenda została stworzona do rury fsck, a niektóre inne programy, aby móc odpowiedzieć na powtarzające się pytania interaktywne (ponownie, to było SysV dzień, na długo przed Tcl i Expect). yesProgram pasuje bardzo dobrze z filozofią UNIX: małe programy, które robią konkretne rzeczy bardzo dobrze i praca z innymi programami.

Arcege
źródło
4

Na podstawie dostarczonych informacji tutaj: http://linux.about.com/library/cmd/blcmdl1_yes.htm

Polecenie Linux / Unix: tak

Biblioteka poleceń

IMIĘ

tak - wypisuje ciąg wielokrotnie aż do zabicia

STRESZCZENIE

tak [STRING] ... tak OPCJA

OPIS

Wielokrotnie wypisuj wiersz ze wszystkimi określonymi STRING (ami) lub `y '.

--help wyświetla tę pomoc i wychodzi z - wersja informacji o wersji wyjściowej i wychodzi
ZOBACZ TAKŻE

Pełna dokumentacja „tak” jest utrzymywana jako podręcznik Texinfo. Jeśli programy informacyjne i tak są poprawnie zainstalowane w Twojej witrynie, polecenie

info yes

powinien dać ci dostęp do pełnej instrukcji.

Moim skromnym zdaniem użycie polecenia „tak” brzmi logicznie, gdy trzeba wielokrotnie autoryzować coś w procesie / skrypcie, naciskając klawisz „y”. Można to kontrolować, anulując wykonanie programu.

W każdym razie ktoś inny może mieć doświadczenie w korzystaniu z tego polecenia.

Geppettvs D'Constanzo
źródło
Nie mam dużego doświadczenia z Linuksem. Jak możesz użyć polecenia „tak” w procesie / skrypcie?
Greg Treleaven
1

Polecenie yes wypisze swój argument lub „y”, jeśli jest ono puste, aż do zakończenia programu lub zamknięcia potoku wyjściowego. Można go używać z programami, które oczekują powtarzających się danych wejściowych, takich jak rm -i.

Daniel Kullmann
źródło
1
dlaczego miałbyś robić iteracyjny rm, jeśli użyjesz yes, aby usunąć wszystko?
fromnaboo
@fromnaboo Wiem, że to zły przykład. Ale czasami nie masz dostępu do wewnętrznego działania programu, z którego musisz korzystać, a więc tak może pomóc uniknąć nieskończonego powtarzania tego samego wejścia.
Daniel Kullmann
@fromnaboo Aby zwiększyć dodatnią wartość netto maszyny.
Walf