Как скопировать всю командную строку в буфер обмена без мыши?

Представьте, что у меня есть эта строка в моем терминале:

youtube-dl --get-thumbnail --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=

После тестирования, я хотел бы скопировать эту строку выше в свой буфер обмена и вставить ее в некоторый файл сценария. Не вывод команды. Но, делая это, не используя мышь. Мне нравится держать руки только на клавиатуре. Я думаю, что быстрее, чтобы сделать некоторую кодировку:)

1
задан 2 November 2015 в 07:58

2 ответа

Вы можете использовать xclip:

some_command | xclip -selection c

Итак, в вашем случае:

youtube-dl .... | xclip -selection c

c означает буфер обмена.

Вы возможно, сначала необходимо установить xclip:

sudo apt-get install xclip

EDIT:

Если вы хотите, чтобы команда, которую вы набрали (а не вывод), скопировали в буфер обмена, вы может использовать здесь строки:

 xclip -selection c <<<"$(echo foobar)"

Или труба:

echo foobar | xclip -selection c
5
ответ дан 23 May 2018 в 16:11
  • 1
    Я все еще получаю команды вывода, но мне просто нужна сама строка. – Valter Silva 1 November 2015 в 19:44
  • 2
    echo "command" | xclip -selection clipboard ... Или сделать его сценарием в ~/.bin : echo "$@" | xclip -selection clipboard. Предположим, что вы сохранили его как «cpy», тогда вы можете cpy youtube-dl stuff, и он будет скопирован в буфер обмена без выполнения. – Alex 1 November 2015 в 19:53
  • 3
    И если вы хотите, чтобы это было выполнено ... echo "$@" | xclip -selection c && $@, или что-то более умное с eval ... – Alex 1 November 2015 в 19:55
  • 4
    @ValterHenrique Пожалуйста, проверьте мои изменения .. – heemayl 1 November 2015 в 19:59

Я сделал небольшой скрипт для zsh, который использует xclip для этого:

#!/bin/zsh
export HISTFILE=~/.zsh_history
fc -R
fc -l | tail -n 2 | sed -n '1p' | sed 's/[0-9]*  //' | xclip -selection c

Этот скрипт копирует последнюю команду, которая была введена в оболочку / терминал в буфер обмена системы , Это не сработает на типичном удаленном сервере.

Я подумал, что мне понадобится всего пару минут, чтобы написать этот скрипт, но потребовалось много времени, чтобы заставить его работать, когда я наткнулся на этот путь zsh обрабатывает историю.

В этом случае tail -n 2 и first sed имеют дело с тем фактом, что команда для этого скрипта записывается в историю и поэтому получает две строки истории и удаляет последний.

Этот скрипт работает, и это была какая-то забавная головоломка, но мне действительно интересно, есть ли более простой или более элегантный способ сделать это с помощью zsh.

2
ответ дан 23 May 2018 в 16:11
  • 1
    Возможно, вы могли бы упростить команды tail и sed в одну или две команды. Эти команды используют !!, который объясняется здесь здесь - он должен быть доступен в ZSH .... – Wilf 25 May 2017 в 20:27
  • 2
    О, !! действительно выглядит, что было бы полезно здесь, спасибо! – alec 25 May 2017 в 20:39

Другие вопросы по тегам:

Похожие вопросы: