Як ви пригадуєте останній (n-й?) Переданий аргумент попередньої команди, яку ви використовували з bash?


9

Часто я видаю різні команди в одному файлі. Наприклад:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

Чи є спосіб використовувати аргументи з попередньої команди в поточній, щоб мені не довелося її переписувати?

Відповіді:


15

alt-.це, звичайно, приємно, але якщо ви вже знаєте, який нумерований аргумент ви хочете, ви можете бути швидшими: !:nце nаргумент попередньої команди.

Часто корисно поєднувати це з чарівним простором. Щоб увімкнути це, введіть свій .inputrc Space: magic-space. Якщо це ввімкнено, коли ви будете вводити пробіл після !:2, воно буде негайно розширено до його значення, а не чекати, коли ви натиснете клавішу Enter. Врятує вас від випадкового схоплення помилкового аргументу.


9

У bash ви можете використовувати ярлик Alt+ ..
Ударивши його один раз, ви дасте останній аргумент. Більше натискання на нього буде проходити через ваші останні аргументи.


4

В bash, позначенням "останнього слова в попередньому командному рядку" є !!$:

$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world

Ви також можете використовувати «синтаксис каретки» для заміни початкової частини командного рядка; це стане в нагоді, якщо ви хочете виконати кілька команд в одному файлі:

file file.dat
^file^ls -l^ #gives `ls -l file.dat`
^ls -l^stat # gives `stat file.dat`

Є ще багато можливостей; Докладніше див. у розділі "Заміна історії" на головній сторінці bash (1) .


Цей синтаксис
карети

1
!!$можна писати !$теж.
Мікель

3

У bash ви також можете використовувати $ _ для аргументу останнього командного рядка останньої введеної команди:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

стає:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv $_ kittens.flv
$ vlc $_
$ rm $_

0

Один з досить повільних способів - це відкликання попередньої команди з заміни попередньої команди на більш нову.


Я сподіваюся на щось швидше :)
badp
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.