В Терминале я могу использовать, !!
который будет ссылаться на мою предыдущую команду.
Возможно ли использовать это в псевдониме? Я попробовал это, но то, что происходит, - то, что двойные восклицательные знаки интерпретируются буквально.
То, что я хочу иметь, возможно:
- Я ввожу какую-то команду
- Я набираю псевдоним, который будет включать в себя то, что было введено в шаге 1
Если есть решение с использованием сценариев, это также приемлемо.
command-line
bash
alias
Людвиг Магнуссон
источник
источник
fc
команду, чтобы он открывал текстовый редактор, потому что это самый простой способ редактировать длинные команды. Позвольте мне добавить его в свой пост. Также, может быть, вы могли бы привести пример команды?Ответы:
Команда, которая перечисляет последнюю выполненную команду
fc -nl -1
. Используя подстановку вывода, мы можем добавить больше параметров к тому же контентуЦитирование, однако, может быть проблемой с этим подходом
Очень хорошая особенность в
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
, сохранить, выйти, и он будет работать.источник
Вы не можете использовать,
!!
но ...Из руководства :
источник
Если вы настаиваете на использовании
!!
синтаксиса расширения истории вместоfc
(уже упоминавшегося), есть способ.По умолчанию
history
расширение отключено для неинтерактивных сеансов оболочки, например, в сценариях.Чтобы включить расширение истории в сценариях, сначала включите соответствующие параметры оболочки:
set -o histexpand
можно написать какset -H
тоже.Теперь операции расширения истории, например,
!!
будут работать внутри скрипта.источник