Ответы:
Вы говорите о расширении классической истории или обработке Readline? cd !$
в следующей строке ввода будет подставлен последний аргумент предыдущей строки, M-.или M-_будет возвращать его с помощью Readline.
cd !$
. «Расширение классической истории или обработка Readline» Я не совсем понимаю, что вы имеете в виду ...
!$
- это расширение истории ; оболочка обрабатывает его так же, как анализирует вашу команду. M-. нажатие клавиши readline; readline - это библиотека, которая обрабатывает каждую нажатую клавишу и видит, что вы нажали M-. и автоматически вводит последний аргумент последней команды
Если ваш вопрос касается доступа к истории команд, попробуйте эту хорошо названную команду
history
Вы также можете попробовать Ctrl+ rи начать вводить команду, которую вы пытаетесь запомнить, что вы недавно ввели.
(reverse-i-search)`cd ': cd mydir/data/
Нажмите, ESCчтобы выбрать команду или выйти. Это работает для меня на SuSE по крайней мере; не уверен насчет других дистрибутивов.
history | grep ...
!
vi
для управления вашей командной строкой. Выглядит супер круто используя vi для редактирования команд оболочки
Это так же просто, как Alt+.
$ mkdir lasdfjalsdkjf
$ cd
Alt + .
$ cd lasdfjalsdkjf
<kbd></kbd>
теги, чтобы окружить ключ.
это всегда работало для меня:
mkdir thisismyfolder
cd $_
$!
расширяется до последнего введенного вами слова, $_
расширяется до последнего слова после раскрытия - так что вы можете echo /tmp/tmpfile*
увидеть кучу файлов, которые хотите удалить, но затем rm $_
удалите только один из них.
Подбирая чаевые из другого потока, если вы поставите:
bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward
затем в вашем .bashrc вы можете начать вводить что-то из своей истории, а затем нажать стрелку вверх, а затем, вместо того, чтобы просматривать историю по элементам, она пропустит сразу предыдущие записи, начинающиеся с того, что вы уже набран.
Я думаю, что это не очень помогает с конкретным примером, приведенным в вопросе, но это одна вещь, которая помогает мне получить доступ к истории на лету.
Если вы используете Bash, я предлагаю pushd
и popd
. Вы можете создать стек каталогов и быстро просмотреть его. Смотрите этот пример:
PWD:~$ pushd /opt/google/chrome/resources/
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ pushd /etc/cron.daily/
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ pushd /opt/pac/lib/method/
/opt/pac/lib/method /etc/cron.daily /opt/google/chrome/resources ~
PWD:/opt/pac/lib/method$ popd
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ popd
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ popd
~
PWD:~$
$
полезен при демонстрации pushd
и т. Д.)
С другой стороны, я рекомендую использовать Histverify в Bash. Поместите это в ваш ~ / .bashrc:
shopt -s histverify
Это заставит bash распечатать команду после развертывания! $ Или других функций истории и даст вам возможность взглянуть на нее перед тем, как снова нажать Enter, чтобы фактически запустить ее. Для меня проверка работоспособности стоит случайного дополнительного нажатия клавиши. Хочу убедиться, что я управляю cd foo
командой, а не той rm -rf foo
...
Я также часто использую этот Ctrl-Rподход Alt-.(который хорошо подходит для сценария, который вы описываете). Я буду использовать! $ По случаю.
Это очень полезные методы общего назначения.
Но чтобы ответить на ваш конкретный вопрос:
Создание каталога и cd'ing непосредственно в него - настолько распространенная комбинация, что полезно иметь функцию для ее обертывания.
function mcd {
local newdir='_mcd_command_failed_'
if [ -d "$1" ]; then # Dir exists, mention that
echo "$1 exists..."
newdir="$1"
else
if [ -n "$2" ]; then # We've specified a mode
command mkdir -p -m $2 "$1" && newdir = "$1"
else # Plain old mkdir
command mkdir -p "$1" && newdir="$1"
fi
fi
builtin cd "$newdir" # No matter what, cd into it
}
Использование: mcd thisismyfolder
Если ваша оболочка использует readline (что имеет место bash
), вы можете сделать что-то вроде нажатия ATL+ .вместе?
Из документации GNU Readline :
yank-last-arg (M- или M-_)
Вставьте последний аргумент в предыдущую команду (последнее слово предыдущей записи в истории). С аргументом ведите себя точно так же, как yank-nth-arg. Последовательные вызовы yank-last-arg перемещаются назад по списку истории, вставляя последний аргумент каждой строки по очереди.
cd this<TAB>