Jak skopiować tekst wielostronicowy z terminala do schowka?
13
Byłem przeglądania człowiek aktualizacja oprogramowania na moim komputerze i musiałem skopiować i wkleić część tego tekstu, ale tekst był o wiele więcej niż jedną stronę. Wiem, że mogę skierować dane wyjściowe do pliku i użyć oprogramowania opartego na interfejsie użytkownika, takiego jak gedit, aby skopiować potrzebny mi tekst. Ale czy można to zrobić z terminala?
Joseph zasugerował metodę wiersza poleceń (trochę skomplikowane, nie jestem jeszcze dobry w wyrażeniach regularnych w Linuksie). Zastanawiam się jednak, czy istnieje sposób, aby to zrobić, gdy jestem jeszcze na terminalu za pomocą myszy .
Mam nadzieję, że otrzymam ogólną odpowiedź, jednak używam Ubuntu.
Mam kilka niedoskonałych, ale może przydatnych pomysłów.
Metoda 1 - myszka.
Użyj paska przewijania terminala.
Szczegóły (przy założeniu xterm; korekty będą wymagane w przypadku innych terminali).
Włącz pasek przewijania, jeśli jeszcze nie jest. (W xterm, to jest w menu, które dostajesz za pomocą Ctrl + Button2.)
Upewnij się, że lessnie działa z tą -copcją (mam tę opcję włączoną w mojej LESSzmiennej środowiskowej, ale to przeszkadza w tym, co zamierzamy zrobić, więc muszę wpisać, -caby ją wyłączyć).
Używając dowolnych lesspoleceń, przewiń w górę lub w dół, aby pierwszy wiersz, który chcesz skopiować, był widoczny na ekranie.
triple-Button1 wybrana linia początkowa, aby ją wybrać.
Przewiń w dół, aż ostatni wiersz, który chcesz skopiować, będzie widoczny na ekranie. Musisz używać tylko spacji lub innych prostych klawiszy przewijania, a nie /wyszukiwania - chodzi o to, lessaby wysłać wszystkie linie do terminala, aby można je było skopiować.
Przycisk 3 na wybranej linii końcowej, aby rozszerzyć wybór.
Możliwa trudność: bufor przewijania może nie być wystarczająco duży. Można to zmienić za xtermpomocą opcji saveLineszasobu lub -slwiersza poleceń, ale nie wiem, jak to zmienić w xtermie, który już działa.
Metoda 2 - nie myszy.
Użyj polecenia |(potok) w, lessaby wysłać tekst do xclip.
Detale:
Używając dowolnych lesspoleceń, przewiń w górę lub w dół, aby ustawić ostatni wiersz, który chcesz skopiować, u góry ekranu. Możesz pominąć ten krok i następny krok, jeśli chcesz skopiować do samego końca.
Użyj polecenia m(znak), aby ustawić znak w wybranej pozycji końcowej. Znaki są same w sobie przydatną funkcją i powinieneś je już znać vi, ale na wszelki wypadek: mxustawia znak, w którym xmoże być dowolną literą, i 'xwraca tam później.
Teraz przewiń w górę, aby pierwszy wiersz, który chcesz skopiować, znajdował się u góry ekranu.
Użyj polecenia potoku: |xpojawi się monit o wprowadzenie polecenia zewnętrznego. xPowinny być tego samego znaku nas użyty w mkomendzie, albo $dla „aż do końca”. Wpisz xcliptam.
Prosty przypadek skopiowania całej strony podręcznika sprowadza się do g|$xclipEnter.
Ostrzeżenie (tj . Okropna rzecz, która mi się właśnie przydarzyła ): xclipbędzie częściowo działało w tle, działając jako część lessgrupy procesów. Jeśli spróbujesz zawiesić less, rozpocznij inne zadanie na tym samym terminalu i wklej do niego, to nie zadziała. Potem, gdy później wybierzesz man/ lessjob, nagle wkroczy. Myślę, że należy to uznać za xclipbłąd ...
Użytkownicy komputerów Mac mogą używać pbcopy, jeśli nie mają zainstalowanego xclipa.
Mike Hedman
3
Multiplekser terminali taki jak tmuxlub screenzwykle ma taką funkcjonalność (tj. Zapisanie części bufora przewijania do pliku lub potokowanie go do jakiejś komendy), a używanie ich jest zwykle dobrym pomysłem, więc możesz rzucić okiem na jeden z nich .
man man | your_magic_here | xclip -selection clipboard
Ctrl+ Vdo zadowolenia twojego serca. Zamiast tego możesz usunąć, -selection clipboardaby wkleić, klikając środkowym przyciskiem myszy (nazywanym zaznaczeniem podstawowym).
Zauważ, że your_magic_herejest to symbol zastępczy dla filtru tekstowego ( sed/ awk/ perl/ ...), który wybiera żądaną część strony podręcznika zgodnie z konkretnym przypadkiem użycia, którego nie opisałeś, więc obawiam się, że nie mogę być konkretny z przykładem.
Oprócz xcliptego jest też xsel(i inne). Możesz także zajrzeć do tej dyskusji schowka .
peterph
Czy można to zrobić za pomocą myszy? Gdy mysz osiągnie koniec strony, strona będzie przewijana.
Muhammad Gelbana
0
Zależy to od twojego programu terminalowego, ale większość programów terminalowych nie ma funkcji zapisywania zaznaczonego tekstu.
Wydaje się, że w LXTerminal, uxterm, Konsole i GNOME Terminal brakuje tej „funkcji”, ale mogą istnieć inni, którzy ją mają. Spójrz na strukturę menu programu terminalowego, a może być coś w rodzaju „Zapisz wybrane”
Zakładając, że używasz gnome-terminali lessjako pager manmożesz:
Prowadzony lessprzez manz -Xkluczem, aby wyłączyć alternatywnego ekranu, na przykład:LESS=-X man less
Umożliwi to dołączenie wyjścia mando bufora historii emulatora terminala. Zobacz tę odpowiedź, aby uzyskać więcej informacji /unix//a/38638/87918 .
Przewiń do ostatniej strony tekstu, który chcesz skopiować. (Cały przewijany tekst zostanie zapisany w buforze historii podczas przewijania)
Zaznacz tekst za pomocą myszy na gnome-terminalpoczątku od ostatniej strony do pierwszej, przeciągając myszą do górnej krawędzi okna. Szczegółowy proces wyboru tekstu opisano tutaj :
To nie działa w Gnome Terminal. Zamiast tego rozpocznij zaznaczenie lewym przyciskiem myszy i podczas jego przeciągania przeciągnij kursor myszy do krawędzi okna (lub poza okno). GT będzie przewijać rzeczy za ciebie, rozszerzając wybór w tym procesie. Przewijanie GT jest na tyle szybkie, że jest to dość wygodny i intuicyjny proces, prawdopodobnie lepszy niż xterm.
Teraz masz zaznaczony tekst (dowolne strony), który możesz skopiować i wkleić w dowolnym miejscu.
Użyj | polecenie (potok) w mniejszej ilości znaków, na co odpowiedział Wumpus Q. Wumbley w swojej drugiej opcji , ale przekierowanie za pomocą tee, aby dołączyć do istniejącego pliku już tam w tym celu:
|tee >> ~/helpaggregator.txt
Sugeruję istniejący plik, ponieważ zwykle trzeba się konsultować podczas uczenia się nowych poleceń i lubi się je skonsolidować. Ponadto przydatne jest uzupełnianie tabulatorów.
Multiplekser terminali taki jak
tmux
lubscreen
zwykle ma taką funkcjonalność (tj. Zapisanie części bufora przewijania do pliku lub potokowanie go do jakiejś komendy), a używanie ich jest zwykle dobrym pomysłem, więc możesz rzucić okiem na jeden z nich .źródło
Jak opisano w Nixcraft :
Uzyskaj
xclip
:lub
w systemie opartym na RPM.
man man | your_magic_here | xclip -selection clipboard
-selection clipboard
aby wkleić, klikając środkowym przyciskiem myszy (nazywanym zaznaczeniem podstawowym).Zauważ, że
your_magic_here
jest to symbol zastępczy dla filtru tekstowego (sed
/awk
/perl
/ ...), który wybiera żądaną część strony podręcznika zgodnie z konkretnym przypadkiem użycia, którego nie opisałeś, więc obawiam się, że nie mogę być konkretny z przykładem.źródło
xclip
tego jest teżxsel
(i inne). Możesz także zajrzeć do tej dyskusji schowka .Zależy to od twojego programu terminalowego, ale większość programów terminalowych nie ma funkcji zapisywania zaznaczonego tekstu.
Wydaje się, że w LXTerminal, uxterm, Konsole i GNOME Terminal brakuje tej „funkcji”, ale mogą istnieć inni, którzy ją mają. Spójrz na strukturę menu programu terminalowego, a może być coś w rodzaju „Zapisz wybrane”
źródło
Zakładając, że używasz
gnome-terminal
iless
jako pagerman
możesz:less
przezman
z-X
kluczem, aby wyłączyć alternatywnego ekranu, na przykład:LESS=-X man less
Umożliwi to dołączenie wyjścia
man
do bufora historii emulatora terminala. Zobacz tę odpowiedź, aby uzyskać więcej informacji /unix//a/38638/87918 .gnome-terminal
początku od ostatniej strony do pierwszej, przeciągając myszą do górnej krawędzi okna. Szczegółowy proces wyboru tekstu opisano tutaj :źródło
Użyj | polecenie (potok) w mniejszej ilości znaków, na co odpowiedział Wumpus Q. Wumbley w swojej drugiej opcji , ale przekierowanie za pomocą tee, aby dołączyć do istniejącego pliku już tam w tym celu:
Sugeruję istniejący plik, ponieważ zwykle trzeba się konsultować podczas uczenia się nowych poleceń i lubi się je skonsolidować. Ponadto przydatne jest uzupełnianie tabulatorów.
źródło