В Терминале я могу использовать !!
который сошлется на мою предыдущую команду.
Действительно ли возможно использовать это в псевдониме? Я попробовал его, но что происходит, то, что двойные восклицательные знаки интерпретируются буквально.
То, что я хочу иметь возможный:
Если существует решение с помощью сценариев, который также приемлем.
Вы не можете использовать !!
, но...
От руководство :
А полезный псевдоним для использования с командой ФК
r='fc -s'
, так, чтобы ввод вЂr cc’ выполнил последнюю команду, начинающуюся с cc , и вводящий вЂr’ повторно выполняет последнюю команду.
Если Вы настаиваете на том, чтобы использовать !!
синтаксис расширения истории вместо fc
(упомянутый уже), существует путь.
По умолчанию, history
расширение отключено для неинтерактивных сессий оболочки, например, в сценариях.
Для включения расширения истории в сценариях включают соответствующие опции оболочки сначала:
set -o history
set -o histexpand
set -o histexpand
может быть записан как set -H
также.
Теперь операции расширения истории, например, !!
работали бы в сценарии.
Команда, которая перечисляет последнюю выполняемую команду, fc -nl -1
. Используя выходную замену, мы можем добавить больше параметров к тому же содержанию
$> ls /etc/passwd
/etc/passwd
$> $(fc -nl -1) /etc/group
/etc/group /etc/passwd
$>
Заключение в кавычки, однако, может быть проблемой с этим подходом
Очень хорошая функция fc
это, если Вы просто работаете fc
управляйте отдельно, это откроет текстовый редактор, указанный вFCEDIT
переменная (в котором Вы, вероятно, хотите сохраненный ~/.bashrc
) и содержание строки будет Вашей последней командой. Для Вашей простоты я предлагаю, чтобы Вы использовали nano
как Ваш текстовый редактор, но если Вы знаете vim
- еще лучше.
Например, что, если я должен отредактировать qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindow
Огромная строка, правильно? Но с fc
, Я могу открыться vim
и редактирование /org/ayatana/bamf/matcher
, сохраните, выход, и он будет работать.