Jak wykonać polecenie systemu Linux, używając polecenia mniej lub na stronach podręcznika?

9

Zazwyczaj potokuję polecenie za lspomocą lessi chciałbym wykonać polecenie podczas stronicowania, np. Napotykam plik, który chciałbym usunąć, więc chciałbym wykonać polecenie rm {filename}podczas stronicowania. Chciałbym również mieć nadzieję, że będę mógł użyć tej samej metody podczas przeglądania stron podręcznika. Jeśli nie, jak to się różni?

PeanutsMonkey
źródło

Odpowiedzi:

8

Możesz uzyskać dostęp do wiersza poleceń za pomocą bang ( !) w ciągu mniej.

Na przykład, jeśli wpiszesz:

touch temp.txt
ls | less
!rm temp.txt

I temp.txt powinien zniknąć.

Edycja: Domyślnie wydaje się, że człowiek używa teraz mniej do przeglądania stron (z jakiegoś powodu myślałem, że używał more, może w przeszłości tak robił). Możesz użyć tej samej sztuczki, ale wymaga ona pełnej ścieżki (np. / Home / user / ...), aby mogła działać.

Wynika to z faktu, że wywołanie man zmienia bieżący katalog roboczy. Na mojej maszynie (Xubuntu, za pomocą xfce-terminal) idzie do /usr/share/man. Jeśli twoja konsola wyświetla CWD, możesz zobaczyć, jak się zmienia, lub możesz zobaczyć go od wewnątrz man, wpisując:

!pwd
Popiół
źródło
man faktycznie zmienia CWD, więc musisz użyć pełnej ścieżki.
Rob
@Rob - co masz na myśli man actually changes CWD?
PeanutsMonkey,
Mam skonfigurowane tmux, aby wyświetlać moją CWD na pasku stanu. Robienie man man(lub cokolwiek) zmieni moje CWD, gdy człowiek jest otwarty. Moja maszyna do linuksa nie jest w tej chwili dostępna i nie jestem pewien, czy mogę sprawdzić CWD w inny sposób, ale wydaje mi się, że tak właśnie działa.
Rob
@Rob - Chcesz powiedzieć, że tylko dlatego, że używasz tmux, zmienia on bieżący katalog roboczy po uruchomieniu polecenia man {command}z powiedz /home/{user}do lokalizacji polecenia man?
PeanutsMonkey,
To by wyjaśniało zachowanie, które widziałem. Teraz, dlaczego to zmieniając CWD, to już inna kwestia ...
Ash
4

Ogólnym sposobem na to jest zawieszenie bieżącego zadania, wykonanie polecenia i wznowienie starego zadania.

ls | less (przeczytaj tekst, zwróć uwagę na nazwę pliku),
Control-zaby zawiesić bieżące aktywne polecenie

Powinieneś otrzymać wiersz podobny do tego: [1]+ Stopped ls | less
([1] to numer zadania.)

rm testfile

fglub fg %1 (1 to numer zadania)

Możesz zawiesić wiele procesów jednocześnie. Eg
ls | less
Control-z (output: [1]+ Stopped ls | less)
man rm
Control-z (output: [2]+ Stopped man rm)
rm -i testfile*

fg %1aby wznowić pracę 1 (pozostawiając stronę podręcznika otwartą w tle) lub
fg %2wznowić pracę 2 (man rm)

Jeśli masz wiele zawieszonych procesów, możesz je wymienić jobs.

Hennes
źródło