Jak wkleić polecenia do TTY?


20

Mam kilka dość długich poleceń i ścieżek plików, które skopiowałem do schowka i muszę wykonać w TTY, jednak ścieżki plików są zbyt długie, aby je ponownie wpisać i chciałbym je wkleić po $(mogę ponownie wpisać polecenia wcześniej im wtedy), czy jest na to sposób?

Chciałbym więc wykonać polecenie i $umieścić je w następnym wierszu, zaczynając od umieszczenia tekstu skopiowanego do schowka w następujący sposób:

$ specialCommandToPasteText
$ pastedText

Używam Ubuntu GNOME 16.04 z GNOME 3.20.


3
Wkleić polecenia do skryptu Bash w edytorze tekstu, a następnie wykonać skrypt z TTY?
— Nick Weinberg,

@NickWeinberg: Naprawdę nie jest to opcja, wszystko to jest w interfejsie CLI, a programy, które tam działam, mają tylko możliwość kopiowania.

2
Z którego programu kopiujesz je?
— Nick Weinberg,

Czy używasz, gpmaby zapewnić obsługę myszy w VT, jak zasugerowano we własnej odpowiedzi na poprzednie pytanie ?
— steeldriver

1
Jednym z możliwych rozwiązań byłoby użycie funkcji kopiuj / wklej w tmuxie lub ekranie
— Nick Weinberg

Odpowiedzi:


28

To proste, ale potrzebujesz dodatkowego narzędzia.

  1. Zainstaluj pakiet, xselktóry zapewnia łatwe polecenie dostępu do schowka:

    sudo apt-get install xsel
    
  2. Dowiedz się, którego $DISPLAYużywa Twój pulpit. Zwykle tak powinno być :0, ale można to sprawdzić, uruchamiając to polecenie w emulatorze terminali na pulpicie GUI:

    echo $DISPLAY
    

    Zakładam, że dane wyjściowe są :0, zamień je na rzeczywiste dane wyjściowe w poniższych poleceniach, jeśli są inne.

  3. Skopiuj polecenie, które chcesz wykonać w TTY, np. Używając Ctrl+ C.

  4. Przełącz na TTY, którego chcesz użyć, np. Na TTY1 za pomocą Ctrl+ Alt+ F1.
    Zaloguj się, wpisując nazwę użytkownika i hasło.

  5. Wpisz pełne polecenie, które chcesz uruchomić, ale zamień część, którą chcesz wstawić ze schowka $(DISPLAY=:0 xsel -ob).

    Na przykład, jeśli skopiowałeś dużą listę pakietów do zainstalowania, możesz wpisać to w TTY:

    sudo apt-get update && sudo apt-get install $(DISPLAY=:0 xsel -ob)
    

    Fragment schowka niekoniecznie musi znajdować się na końcu polecenia, może pojawić się w dowolnym miejscu.


Aby jeszcze bardziej uprościć, przenieśmy to nieco skomplikowane DISPLAY=:0 xsel -obdo skryptu. Nazwie to PASTE(bo pastejest już zajęte), ale możesz też nazwać to inaczej.

Aby utworzyć plik skryptu w miejscu, w którym każdy użytkownik może go uruchomić bez konieczności podawania pełnej ścieżki (zalecam /usr/local/bindo tego) i aby był wykonywalny, po prostu uruchom te dwie komendy:

( echo '#!/bin/bash' && echo 'DISPLAY=:0 xsel -ob' ) | sudo tee /usr/local/bin/PASTE
sudo chmod +x /usr/local/bin/PASTE

Teraz możesz po prostu osadzić $(PASTE)w swoich poleceniach na TTY, aby wstawić tam zawartość schowka z pulpitu.


2
Dzięki! Pomoże mi to teraz o wiele więcej rzeczy, niż pierwotnie pytałem! :)

1
Możesz nawet przechowywać DISPLAY=:0 xsel -objako alias Bash lub mały skrypt w dowolnym miejscu (nazwijmy go PASTE) i używać tylko skróconej formy, takiej jak $(PASTE)użycie zawartości schowka w swoich poleceniach.
— Bajt Dowódca

Bardzo fajne podejście
— Sergiy Kolodyazhnyy

21

Osobiście używam tylko plików tekstowych:

  1. W środowisku pulpitu otwórz terminal i

    echo "whatever long text you have copied" > file
    
  2. Zrzuć na tty i

    $(cat file)
    

2
To dobrze wiedzieć. Właściwie nie sądziłem, że takie proste polecenie, takie jak to, zadziała tak dobrze. Czasami umysł wydaje się zbyt skomplikowany. Dziękuję Ci! =)
— Terrance

1
Po prostu używam some-command 'shift + insert (aby wkleić). 'powrót. Wklejenie pojedynczych lub podwójnych cudzysłowów zapobiega uruchamianiu polecenia przez nowe wiersze w wklejonym tekście, zanim będę mógł go edytować w celu rozwiązania problemów. IDK co zyskuje, aby umieścić tekst w pliku. Bash ma bardzo potężne klawisze edycji linii, takie jak ctrl-lewa lub ctrl-prawa strzałka, aby poruszać się po słowach. Alt-Backspace, aby usunąć słowa z tyłu. Alt-d, aby usunąć naprzód wyrazy itp.
— Peter Cordes,

Och, właśnie zorientowałem się, że OP oznacza VT konsoli tekstowej, kiedy mówi TTY. Ktoś powinien naprawdę edytować pytanie, ponieważ każdy terminal, na którym można uruchomić powłokę, jest tty, w tym pseudo-terminale kontrolowane przez programy podobne do xterm.
— Peter Cordes,

@PeterCordes tak, ale termin „tty” jest często, jeśli niedokładnie, używany w odniesieniu do wirtualnych konsol.
— terdon

4

Innym możliwym obejściem niewymienionym powyżej jest użycie vim, wklejenie i uruchomienie :!unix_commandw trybie poleceń:

  1. skopiuj polecenia i ścieżkę do schowka
  2. otwórz vim, przejdź do trybu poleceń Esc, wprowadź monit:
  3. wpisz huk, ! a następnie wklej Ctrl+ Shift+ Vpolecenie, które wcześniej skopiowałeś w wierszu polecenia i wykonaj
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.