Скопируйте файл из командной строки, вставьте в окно Gnome или наоборот.

Скопируйте файл из командной строки, вставьте в окно Gnome или наоборот.

Существует множество примеров того, как копировать «содержимое» файла из командной строки с помощью xclipили xsel. Я ищу способ скопировать файл из командной строки и вставить его в проводник. Поэтому я буду использовать команду для копирования файла, а не только его содержимого, и использовать Ctrlvдля вставки его в UI.

обновлено xclip-copyfileи xclip-pastefileработают близко к тому, что я ожидаю, но когда я запускаю xclip-copyfile, я могу вставить только с помощью xclip-pastefileкоманды, а не с помощью графического интерфейса.

решение1

Я использую Nautilus в Ubuntu в качестве своего браузера файлов, поэтому не могу говорить за любой другой браузер.
Способ, которым Nautilus обрабатывает вставку файла через, Ctrl-vдовольно локален для Nautilus, т.е. Nautilus распознает только Ctrl-v каквставить файлв ответ накопировать файлкоманда, которая была отдана во времянаутилуссам по себе. Это означает, что вы не можете использовать Ctrl-v для вставки файла, путь к которому вы скопировали в другом приложении.

Однако, если вам это подходит, Ctrl+Shift+v можно привязать к скрипту, который работает под nautilus-scripts-manager. С этим скриптом вы можете делать практически все, что захотите.

nautilus-scripts-managerдает вам доступ к некоторой фундаментальной информации о текущем каталоге и о том, какие файлы/каталоги выбраны. Одна вещь, которая мне особенно нравится в "nautilus-scripts", это то, что он добавляет свои скрипты в Fileпункт меню (а также в контекстное меню). Это позволяет вам установить привязку клавиш, которая является локальной дляНаутилус 3илиНаутилус 2.

Вот грубый пример, используя ваш уже упомянутый xclip-pastefilesпример. Обратите внимание, что в его нынешнем виде он требует, чтобы вы настроили xclip-copyfilesперед запуском этого Ctrl-Shift-vвставитьскрипт.
После запуска установки xclip-copyfilesвам нужно только перейти в окно Nautilus, выбрать целевой каталог (или файл в этом каталоге) и нажать сочетание клавиш вашего скрипта:Ctrl-Shift-v

#!/bin/bash   
# Note: `leafpad' is a simple text editor which doubles as a quick-and-easy testing messsage-box

dir=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |sed -n 1p)
if [[ -n "$dir" ]] ;then
    # target dir from `Nautilus Scripts' (1st priority)    
    if [[ -e "$dir" ]] ;then
       [[ -d "$dir" ]] || dir="${dir%/*}" 
       [[ -d "$dir" ]] || dir=
    fi
else
  # target dir from $1 (2nd priority)
    dir="$1"
    if [[ -e "$dir" ]] ;then
       [[ -d "$dir" ]] || dir="${dir%/*}" 
       [[ -d "$dir" ]] || dir=
    fi
fi

if [[ -z "$dir" ]] ;then
    # target dir from clipboard (if not in $NAUTILUS_SCRIPT.. or  $1)
   dir="$(xclip -o -sel c)"
   if [[ -e "$dir" ]] ;then
      [[ -d "$dir" ]] || dir="${dir%/*}" 
      [[ -d "$dir" ]] || dir= 
   else
      dir=
   fi
fi

[[ -d "$dir" ]] || { echo "$(basename "$0"): target directory not found in clipboard" |leafpad; exit 1; } 

{ cd   "$dir"
  echo "Current  Directory:" 
  echo "  $dir"
  echo "======="
  echo  xclip-pastefile # run your command  (`echo' is for testing)
} 2>&1 |leafpad 

Связанный контент