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?

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

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.

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.