2

Если вы делаете следующее в Bash - возможно, и в других оболочках - вы выполняете команду из вашей истории, которая соответствует указанному ключевому слову:

$ !keyword

Я ищу документацию для этой команды. Я попробовал поискать на странице man bash, но безуспешно. Я также попробовал Google, но это почти невозможно (правильно?) искать пунктуацию в гугле.

Я хочу знать:

  1. В каком порядке эта команда ищет вашу историю? Самая старая команда для самых последних? Или наоборот?

  2. Мне известно о добавлении опции :p в конце команды, чтобы предотвратить выполнение, но есть ли другие варианты? Хотя не уверен, какие еще варианты я бы хотел, но просто любопытно.

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

Возможно, я смотрю не в том месте? Любая помощь в отслеживании документации будет принята с благодарностью.

2 ответа2

2

Это называется расширением истории. Большинство команд расширения истории ссылаются на самую последнюю совпадающую командную строку (исключения являются ссылками на командную строку по номеру).

Самые полезные формы !prefix до самой последней команды, начинающейся с prefix !?substring? расширяется до самой последней команды, содержащей substring, и ^from^to который в предыдущей команде заменяется from на to на.

Вы можете извлечь только определенное слово вместо всей строки, добавив обозначение слова, как в

ls foo bar *~ *.pdf
rm !*

Модификаторы могут выполнять подстановку строк и извлекать части слов. Модификатор :p приводит к тому, что результирующая команда печатается, но не выполняется.

0

Орден самый последний или самый старый.

!n выполняет команду с номером n в history .

!-n выполняет n-ю последнюю команду в history .

!! выполняет последнюю команду (то есть !-1).

Вы также можете, например, sudo !! если вы забыли добавить префикс в sudo .

Вы можете погуглить на bang или bang bang чтобы найти что-то по этим командам, такие как эта или эта

Также:

Большинство современных оболочек поддерживают команды взрыва в csh - все это делают bash, tcsh и zsh. Хотя некоторые команды взрыва не работают во всех этих оболочках, все следующие

Так что вам лучше посмотреть документацию по csh .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .