Korzystam z script
polecenia, aby zapisać wszystkie dane wyjściowe z terminala w pliku o nazwie typescript
. Lub script foo
zapisać w pliku foo
.
Teraz powiedzmy, że idę wpisywać polecenie po poleceniu i zapominam, czy jestem na maszynie, czy nie.
Jak mogę się dowiedzieć, czy jestem w maszynie do pisania, czy nie?
typescript
Rob Avery IV
źródło
źródło
script
i ma otwarte tty, również spowoduje fałszywy alarm.script
uruchomiła).script
, ale także inne sytuacje, jaksu -l
,ssh
konsola i Linux być może inni i dostarczają (poprzez inne argumentyps
) znacznie więcej informacji.Ciekawy problem. Zauważyłem, że mały skrypt bash mógłby wykonać tę pracę całkiem niezawodnie:
Myślę, że jest to nieco inne niż zaproponowane przez Stephane Chazelas, ponieważ mój skrypt działa w górę nadrzędny: relacja potomna zachodząca w procesach Linux / Unix do momentu znalezienia PID 1 lub znalezienia „skryptu” jako procesu.
źródło
xterm
sesję skryptu, skrypt sprawi, że powłoka w Xterm działa pod skryptem. Cóż, jest to w pewien sposób, ale dane wyjściowe nie trafiają do maszynopisu. Moje podejście sprawdza terminal związany z bieżącą sesją, aby nie mieć tego problemu.Jeśli masz osobisty katalog bin / na swojej ścieżce (np. / Home / user / bin, umieść tam skrypt powłoki o nazwie „skrypt” (taka sama jak nazwa pliku binarnego), o następującej treści:
Teraz, w ramach uruchomionego skryptu, możesz przetestować zmienną środowiskową SCRIPT_RUNNING i na tej podstawie zrobić wszystko, co chcesz.
EDYTOWAĆ:
W rzeczywistości jest o wiele łatwiejszy sposób. Poniższe słowa mówią wszystko, utwórz trzy pliki: ~ / bin / script, ~ / bin / script-shell i ~ / .scriptrc:
Jeśli twoja bieżąca powłoka jest bash, nie zapomnij uruchomić
hash -r
po utworzeniu tych plików, aby upewnić się, że ~ / bin / script jest uruchamiany, gdy „skrypt” zostanie wprowadzony jako polecenie (sprawdź za pomocąwhich script
).Tak jak poprzednio, pamiętaj, że musisz mieć ~ / bin w ŚCIEŻCE, poprzedzającej standardową ścieżkę, aby to zadziałało.
źródło