В чем разница между командами клавиш быстрого доступа и bash?

3

Когда я печатаю в терминале:

gnome-screenshot -a -f /home/manuel/Desktop/"'date'".png

У меня есть предполагаемый результат, создается файл с именем "dimanche 10 avril 2016, 23:36:50 (UTC+0200).png" .

Однако, когда я пытаюсь связать это с помощью сочетания клавиш, я получаю вместо него файл с именем

"'date'.png"

Когда я пытаюсь продолжить

bash -c "gnome-screenshot -a -f /home/manuel/Desktop/"'date'".png"

файл становится dimanche , что означает, что он останавливается в первом пробеле.

Я читал, что при цитировании переменной bash, чтобы включить пробелы, нужно использовать кавычки, которые, кажется, я и сделал. Поэтому я позже попытался присвоить команду date переменной $times и использовать "$times" в команде, но с тем же результатом.

Итак, мой вопрос: почему баш всегда должен быть болью в заднице? Если это действительно виновник.

Спасибо, если никто не ответит, я надеюсь, что создание файла bash вместо этого решит это как последнее средство, поскольку оно имеет много раз раньше ...

    
задан sinekonata 10.04.2016 в 23:57
источник

2 ответа

5

Ярлыки в системных настройках - > «Клавиатура» - > «Ярлыки» - > «Пользовательские ярлыки» не запускаются в оболочке.

Вот почему gnome-screenshot -a -f /home/manuel/Desktop/"'date'".png создает файл с именем "'date'.png" ; /home/manuel/Desktop/"'date'".png часть не интерпретируется и передается дословно gnome-screenshot , которая создает файл с именем "'date'.png" .

bash -c "gnome-screenshot -a -f /home/manuel/Desktop/"'date'".png" вместо этого не работает просто потому, что вы не избегаете второго уровня кавычек, что заставляет Bash запускать date в подошвенной подоболочке, которая подвержена разбиению слов.

Итак, просто избегайте второго уровня кавычек:

bash -c "gnome-screenshot -a -f /home/manuel/Desktop/\"'date'\".png"

Или даже лучше использовать одинарные кавычки во внешней команде, чтобы не избежать второго уровня кавычек:

bash -c 'gnome-screenshot -a -f /home/manuel/Desktop/"'date'".png'

На стороне примечание, использующее '' , устарело и обескуражено; было бы лучше использовать $() :

bash -c 'gnome-screenshot -a -f /home/manuel/Desktop/"$(date)".png'
    
ответ дан kos 11.04.2016 в 03:45
источник
0

Создайте исполняемый скрипт:

Отредактируйте файл i.e. / usr / bin / myscreenshot с помощью редактора по вашему выбору как root, т. е.

sudo vi /usr/bin/myscreenshot

Вставьте это содержимое в файл

#!/bin/bah
gnome-screenshot -a -f "/home/$USER/Desktop/'date'.png"

Сделать файл исполняемым скриптом:

sudo chmod +x /usr/bin/myscreenshot

Завершить создание сочетания клавиш для этой программы, и это должно быть сделано.

    
ответ дан cmks 11.04.2016 в 00:18