Bir TTY'ye komutlar nasıl yapıştırılır?


20

Panoya kopyaladığım ve bir TTY'de yürütmem gereken bazı uzun komutlarım ve dosya yollarım var, ancak dosya yolları yeniden yazmak için çok uzun ve sadece $komutları sonra tekrar yapıştırmak istiyorum. o zaman)), bunu yapmanın bir yolu var mı?

Bu yüzden bir komut yürütmek ve bir sonraki satıra $, panoya kopyalanan metni şu şekilde koymakla başlamak istiyorum:

$ specialCommandToPasteText
$ pastedText

GNOME 3.20 ile Ubuntu GNOME 16.04 kullanıyorum.


3
Komutları bir metin editöründe Bash komut dosyasına yapıştırın, ardından komut dosyasını TTY?
Nick Weinberg,

@NickWeinberg: Gerçekten bir seçenek değil, hepsi CLI'de ve orada çalışan programlar sadece kopyalama özelliğine sahip.

2
Onları hangi programlardan kopyalıyorsunuz?
Nick Weinberg,

Kullandığınız gpmönerildiği üzere, VT fare desteği sağlamak için bir önceki soruya kendi cevap ?
Steeldriver

1
Olası bir çözüm, kopyalama / yapıştırma işlevini tmux veya ekranda kullanmak olacaktır
Nick Weinberg

Yanıtlar:


28

Çok basit, ancak ek bir araca ihtiyacınız var.

  1. xselPanoya erişmek için kolay bir komut sağlayan paketi kurun :

    sudo apt-get install xsel
    
  2. $DISPLAYMasaüstünüzün hangi kullandığını bulun . Genellikle olması gerekir :0, ancak bu komutu GUI masaüstünüzdeki bir terminal emülatöründe çalıştırarak kontrol edebilirsiniz:

    echo $DISPLAY
    

    Çıktının, :0varsa aşağıdaki komutlarda gerçek çıktınızla değiştirildiğini varsayacağım .

  3. TTY'de çalıştırmak istediğiniz komutu kopyalayın, örn . Ctrl+ C.

  4. Kullanmak istediğiniz TTY’ye, örneğin Ctrl+ Alt+ tuşlarını kullanarak TTY1’e geçin F1.
    Kullanıcı adınızı ve şifrenizi yazarak giriş yapın.

  5. Çalıştırmak istediğiniz tam komutu girin, fakat panodan eklemek istediğiniz kısmı ile değiştirin $(DISPLAY=:0 xsel -ob).

    Örneğin, yüklenecek geniş bir paket listesini kopyaladıysanız, bunu TTY'ye yazabilirsiniz:

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

    Pano pasajı mutlaka komutunuzun sonunda olmak zorunda değildir, ancak herhangi bir yerde görünebilir.


İşleri daha da basitleştirmek için, bunu DISPLAY=:0 xsel -obbir komut dosyası için biraz daha karmaşık hale getirelim. Adını vereceğim PASTE(çünkü pastezaten alınmış), ancak farklı şekilde de çağırabilirsiniz.

Komut dosyasını her kullanıcının tam yolu belirtmek zorunda kalmadan çalıştırabileceği bir konumda oluşturmak için (bunun için önerilir /usr/local/bin) ve çalıştırılabilir olmasını sağlamak için bu iki komutu çalıştırmanız yeterlidir:

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

Artık $(PASTE)panodaki masaüstünüzden pano içeriğini eklemek için komutlarınıza bir TTY'ye gömebilirsiniz .


2
Teşekkürler! Bu bana şu anda ilk başta sorduğumdan çok daha fazla konuda yardımcı olacak! :)

1
Hatta DISPLAY=:0 xsel -obherhangi bir yerde Bash takma adı veya küçük bir komut dosyası olarak saklayabilir (adlandıralım PASTE) ve yalnızca $(PASTE)komut içeriğinde pano içeriğini kullanmak gibi kısaltılmış bir form kullanabilirsiniz.
Byte Commander

Çok güzel bir yaklaşım
Sergiy Kolodyazhnyy

21

Şahsen ben sadece metin dosyalarını kullanıyorum:

  1. Masaüstü ortamınızda bir terminal açın ve

    echo "whatever long text you have copied" > file
    
  2. Tty'ye bırak ve

    $(cat file)
    

2
Bunu bilmek güzel. Aslında bunun gibi basit bir komutun bu kadar iyi sonuçlanacağını düşünmedim. Bazen zihin sadece çok karmaşık olduğunu düşünüyor. Teşekkür ederim! =)
Terrance

1
Sadece some-command 'shift + insert (yapıştırmak için) kullanıyorum. 'dönüş. Tek veya çift tırnak içine yapıştırmak, herhangi bir sorunu çözmek için düzenlemeden önce yapıştırılan metindeki yeni satırların komutu çalıştırmasını önler. IDK, metni bir dosyaya koymanın size kazandırdığı şeydir. Bash, kelimelerle hareket etmek için ctrl-left veya ctrl-right arrow gibi çok güçlü bir çizgi düzenleme tuş vuruşlarına sahiptir. geri kelimeleri silmek için alt-backspace. Alt-d ileri kelimeleri vb. Silmek için.
Peter Cordes

Oh, OP'nin TTY derken bir metin konsolu VT anlamına geldiğini öğrendim. Birisi soruyu gerçekten düzenlemelidir, çünkü bir kabuk çalıştırabileceğiniz her terminal, xterm benzeri programlar tarafından kontrol edilen sözde terminaller dahil olmak üzere bir tty'dir.
Peter Cordes

@PeterCordes evet, ancak "tty" terimi, yanlış bir şekilde sanal konsollara atıfta bulunmak için kullanılırsa, genellikle kullanılır.
terdon

4

Yukarıda listelenmemiş bir başka olası geçici çözüm komut modunda kullanımı vim, yapıştırılması ve çalıştırılmasıdır :!unix_command:

  1. komutları ve yolu panoya kopyala
  2. vim, komut moduna gidin Esc, istemi girin:
  3. bir patlama yazın ! ve ardından Ctrl+ Shift+ Vönceden istemde kopyaladığınız komutu yapıştırın ve uygulayın
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.