Відповіді:
Ви говорите про класичне розширення історії чи обробку Readline? cd !$
у наступному рядку введення буде замінено в останньому аргументі попереднього рядка або, M-.або M-_, витягне його за допомогою Readline.
cd !$
. "Класичне розширення історії чи обробка читання рядків" Я точно не розумію, що ви маєте на увазі ...
!$
- це розширення історії ; оболонка обробляє її під час аналізу вашої команди. М-. - натискання клавіш читання; 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>
теги для оточення ключа.
<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-.(що добре підходить для описаного вами сценарію). Я буду використовувати! $ При нагоді.
Це дуже корисні методи загального призначення.
Але для вирішення вашого конкретного питання:
Створення каталогу та введення безпосередньо в нього настільки поширена комбінація, що корисно мати функцію, щоб обернути її.
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
Якщо ваша оболонка використовує лінію зчитування (що стосується bash
), ви можете зробити щось на кшталт натискання ATL+ .разом?
З документації про читання GNU :
yank-last-arg (M-. або M-_)
Вставте останній аргумент до попередньої команди (останнє слово попереднього запису історії). З аргументом поводьтесь так, як yank-nth-arg. Послідовні виклики yank-last-arg переміщуються назад через список історії, вставляючи по черзі останній аргумент кожного рядка.
cd this<TAB>