當前位置: 首頁>>技術教程>>正文


如何將命令粘貼到 TTY 中?

, , ,

問題描述

我有一些相當長的命令和文件路徑,我已複製到剪貼板並需要在 TTY 中執行,但是文件路徑太長而無法重新輸入,我想將它們粘貼到 $ 之後(我可以重新輸入命令那麽在他們之前),有沒有辦法做到這一點?

所以我想執行一個命令並將其放在以 $ 開頭的下一行,將複製的文本複製到剪貼板,如下所示:

$ specialCommandToPasteText
$ pastedText

我正在運行帶有 GNOME 3.20 的 Ubuntu GNOME 16.04。

最佳方案

這很簡單,但您需要一個額外的工具。

  1. 安裝包 xsel,它提供了一個簡單的命令來訪問剪貼板:

    sudo apt-get install xsel
    
  2. 找出您的桌麵正在使用哪個 $DISPLAY。通常它應該是 :0 ,但您可以通過在 GUI 桌麵上的終端模擬器中運行以下命令來檢查它:

    echo $DISPLAY
    

    我將假設輸出是 :0 ,如果它不同,請將其替換為以下命令中的實際輸出。

  3. 複製您想在 TTY 中執行的命令,例如使用 Ctrl + C

  4. 切換到您要使用的 TTY,例如使用 Ctrl + Alt + F1 到 TTY1。輸入您的用戶名和密碼登錄。

  5. 輸入您要運行的完整命令,但將您要從剪貼板插入的部分替換為 $(DISPLAY=:0 xsel -ob)

    例如,如果您複製了大量要安裝的軟件包,您可以在 TTY 中鍵入:

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

    剪貼板片段不一定必須在命令的末尾,它可能出現在任何地方。


為了進一步簡化事情,讓我們將這個仍然有點複雜的 DISPLAY=:0 xsel -ob 移動到腳本中。我將其命名為 PASTE(因為 paste 已被占用),但您也可以使用不同的名稱。

要在每個用戶都可以在無需指定完整路徑的情況下運行它的位置創建腳本文件(為此我推薦 /usr/local/bin)並使其可執行,隻需運行以下兩個命令:

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

現在,您隻需將 $(PASTE) 嵌入到 TTY 上的命令中,即可將桌麵上的剪貼板內容插入其中。

次佳方案

就個人而言,我隻使用文本文件:

  1. 在您的桌麵環境中,打開一個終端並

    echo "whatever long text you have copied" > file
    
  2. 拖放到 tty 和

    $(cat file)
    

第三種方案

上麵未列出的另一種可能的解決方法涉及使用 vim ,在命令模式下粘貼和運行 :!unix_command

  1. 將命令和路徑複製到剪貼板

  2. 打開 vim ,進入命令模式 Esc ,輸入提示符 :

  3. 鍵入 bang ! 然後粘貼 Ctrl + Shift + V 您之前在提示符中複製的命令並執行

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12752.html,未經允許,請勿轉載。