Мне было интересно, можно ли скопировать или вырезать файл в буфер обмена, а затем вставить его в другой каталог. Я провел быстрое исследование и нашел только информацию о том, как скопировать содержимое файла в буфер обмена, но не сам файл.
3 ответа
Когда вы нажимаете Ctrl-C над файлом в файловом менеджере, содержимое файла НЕ копируется в буфер обмена. Простой тест: выберите файл в файловом менеджере, нажмите Ctrl-C, откройте текстовый редактор, нажмите Ctrl-V. Результатом является не содержимое файла, а его полный путь.
В действительности ситуация немного сложнее, потому что вы не можете сделать наоборот - скопируйте список имен файлов из текстового редактора и вставьте их в файловый менеджер.
Чтобы скопировать некоторые данные из командной строки в буфер обмена X11, вы можете использовать команду xclip
, которую можно установить с
sudo apt-get install xclip
скопировать содержимое файла или вывод какой-либо команды в буфер обмена
cat ./myfile.txt|xclip -i
затем текст можно вставить куда-нибудь, используя среднюю кнопку мыши (это называется "основной буфер выбора").
Если вы хотите скопировать данные в "буфер обмена", чтобы их можно было вставить в приложение с помощью Ctrl-V, вы можете сделать
cat ./myfile.txt|xclip -i -selection clipboard
Чтобы иметь возможность копировать файлы из командной строки и вставлять их в файловый менеджер, необходимо указать правильный "целевой атом", чтобы файловый менеджер распознавал данные в буфере обмена, а также предоставлял данные в правильном формате - к счастью, в случае копирования файлов в файловом менеджере это просто список абсолютных имен файлов, каждое в новой строке, что-то, что легко генерировать с помощью команды find
:
find ${PWD} -name "*.pdf"| xclip -i -selection clipboard -t text/uri-list
(по крайней мере, это работает для меня в KDE). Теперь вы можете заключить в небольшой скрипт, который вы можете назвать, скажем, cb
:
#!/bin/sh
xclip -i -selection clipboard -t text/uri-list
затем вы помещаете его в ~/bin
, устанавливаете исполняемый бит на него и используете его так:
find ${PWD} -name "*.txt"| cb
Хорошо, не правда ли?
Если вы решите поместить путь к файлу в системный буфер обмена, вы можете использовать это в вашем ~/.bashrc
:
yankpath() {
filepath=$(realpath "$1")
# We use the pipe to put the file name on the clipboard.
# If we did "xclip -selection clipboard $filepath", the
# contents of the file would be on the clipboard.
# -rmlastnl removes the ending newline from the file path.
echo $filepath | xclip -rmlastnl -selection clipboard
}
Затем вы можете yankpath ./a_file
и полный путь к файлу a_file
будет в вашем буфере обмена X-системы.
Это работает в Mac Terminal и Linux на Digital Ocean.
pbcopy <~/.ssh/id_rsa.pub