Вам слід прочитати man bash у вашій системі, особливо розділ Readline , оскільки це інтерактивний механізм введення bash. Посібник Bash на gnu.org має чудовий розділ про редагування командних рядків який допоможе заповнити деякі прогалини.
За замовчуванням ви можете використовувати їх для переміщення по командному рядку (лише перелічивши декілька тут; див. Посилання для повного списку):
- Ctrl+ aпереходить до початку рядка (або Homeзалежно від налаштувань терміналу)
- Ctrl+ eпереміщується до кінця рядка (або End...)
- Meta+ fрухається вперед "слово"
- Meta+ bпереміщує "слово" назад
Ви можете використовувати їх для "вбивства" (він же "вирізати") з рядка:
- Ctrl+ kвбиває ("вирізає") текст з поточного положення курсору до кінця рядка
- Ctrl+ yyanks ("вставляє") нещодавно вбитий текст назад у буфер при курсорі
Таким чином, ви можете об'єднати їх, щоб вибрати фрагмент деякого командного рядка, який ви хочете повторити, вбити, а потім вставити його в кінець наступної команди.
Тепер, щоб зробити це ще веселіше, розглянемо розширення історії bash . Це те, !!
що відповідь Студента згадує . Брейки розширення Історії вниз в десігнаторамі події , слова десігнаторов і модифікатори .
Дизайнери подій виглядають приблизно так (знову дивіться посилання для повного списку):
!
- починається підміна історії
!n
- n-я команда у списку історії bash, для деякого цілого n (працює і для негативів)
!!
- попередня команда; дорівнює!-1
!string
- остання команда, що починається з рядка
Словознавці вибирають певні частини події. Використовуйте :
для відокремлення події від позначення слова. Слова нумеруються від 0, починаючи з початку рядка, і вставляються у поточний рядок, розділений проміжками.
$
- позначає останній аргумент (наприклад !!:$
, останній аргумент останньої команди; може бути скорочений до !$
)
n
- позначає n-е слово (наприклад !str:2
, другий аргумент останньої команди, що починається з str ; !!:0
це команда останньої команди)
Отже, для подальшого виконання вашого прикладу, якщо ваша остання команда mkdir /some/really/long/path
, просто запущена !!
команда повторно повторить цю команду. Але ви хочете, щоб cd
на цей шлях:
$ cd !$
Тепер скажімо, що ви виконуєте деякі інші команди, а потім хочете знову повернутися до цього шляху. Якщо це була остання команда mkdir, яку ви запустили, ви можете використовувати це для повторення цього шляху:
$ tar czf ~/foo.tgz !mkdir:$