Подоболочка Ubuntu 14.04 и переменное расширение в пользовательских сочетаниях клавиш?

Как я могу включить расширение удара пользовательскими сочетаниями клавиш в 14,04? Вот пример, что я пытался получить настройки; я хочу выполнить эту точную команду (который работает от терминального рабочего удара):

gnome-screenshot --window --remove-border -f ~/Pictures/screenshot_$(date +%x_%H:%M:%S:%N).png

Это не работает, как, и ни один не делает:

gnome-screenshot --window --remove-border -f $HOME/Pictures/screenshot_$(date +%x_%H:%M:%S:%N).png

Если я изменяю его на следующее:

gnome-screenshot --window --remove-border -f "/home/user/Pictures/screenshot_$(date +%x_%H:%M:%S:%N).png"

Я заканчиваю с файлом на моем рабочем столе, названном "screenshot_ $ (дата + %x _ % H: % M: % S: % N) .png" (никакое расширение подоболочки). Что я делаю неправильно? Что выполняет эти команды, если не колотят? Почему подоболочки или переменные/тильды не расширены?

2
задан 8 August 2014 в 07:21

2 ответа

Поле сочетаний клавиш в работах Единицы подобным образом к .desktop файлы, т.е. команды выполняются без любой формы подоболочки или переменного расширения и не могут получить доступ ни к каким переменным среды.

я не смог найти официальную спецификацию относительно меню сочетаний клавиш, но я думаю, что это - сохранение, чтобы предположить, что выполнение команды следует подобным инструкциям к поле Exec в XDG .desktop файлы.

то, Что это означает, на практике, то, что существует два способа, которыми можно заставить пользовательскую командную строку работать с меню ярлыков:

  1. Преобразовывают Ваши команды в простой сценарий оболочки и указывают на сочетание клавиш на сценарий оболочки.

    , Например, Вы могли вставить следующее в новый текстовый файл, назвать его чем-то как custom_screenshot_script и сделать исполняемый файл сценария:

    #!/bin/bash
    gnome-screenshot --window --remove-border -f "~/Pictures/screenshot_$(date +%x_%H:%M:%S:%N).png"
    
  2. Вызов bash для выполнения команды.

    Это более хитро, потому что необходимо выйти аргументов правильно. Что-то как следующее должно работать:

    bash -c "gnome-screenshot --window --remove-border -f \"~/Pictures/screenshot_$(date +%x_%H:%M:%S:%N).png\""
    
4
ответ дан 7 October 2019 в 09:38

В моем случае я сделал бы сценарий:

случай/bin/sh

(window_border) в ~./изображать

    gnome-screenshot --window ~/picture/screenshot_$(date+%X_% H:$M:$:$S:$n)*png

    Bash -i remove-border -f window

    Bash --window --remove-border -f ''~/picture/screenshot_$(date+%X_%H:$M:$:$S:$N).png''

endl

и это могли бы хорошо работать Этот Путь.

-2
ответ дан 7 October 2019 в 09:38

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

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