smartctl
(доступный в smartmontools
) должен сделать это за вас.
Хохо, я рад, что есть еще кое-кто, кто интересуется этой древней особенностью. Я все еще использую его, но чаще всего использую стрелку вверх для вызова прошлых команд.
Двадцать пять лет назад у меня было \!
как компонент моего PS1
, чтобы иметь возможность нумеровать прошлые команды и вызывать их, например, ! 54
. Не помню, когда решил, что это уже бесполезно ... Сейчас использую !!
, ! - 2
, ! - 3
и прежде всего ! $
и ! $: H
часто, но не очень более.
В любом случае, вы, кажется, спрашиваете о двух разных вещах:
Исправьте предыдущую команду:
$ mv -r from to
$ !!: s / -r //
mv от до
!: s / -r //
можно использовать вместо !!: s / -r //
. Модификатор s /
заменяет первое вхождение
на
.
Адресная команда
$ mv from to
$ echo!: 0
mv
Что ж, вы можете упростить использование аргументов 2 и 3, как в этом примере:
$ echo -r movableFolder/ targetFolder/
-r movableFolder/ targetFolder/
$ echo !:2*
movableFolder/ targetFolder/
Все задокументировано в man bash:
Указатели слов Указатели слов используются для выбора нужных слов из события . A: отделяет спецификацию события от обозначения слова. Его можно опустить, если обозначение слова начинается с ^, $, *, - или%. Слова нумеруются с начала строки, при этом первое слово обозначается 0 (нулем).Слова вставляются в текущую строку через один пробел.
0 (ноль) Нулевое слово. Для оболочки это командное слово. n n-е слово. ^ Первый аргумент. То есть слово 1. $ Последнее слово. Обычно это последний аргумент, но расширяется до нулевого слова, если в строке есть только одно слово. % Слово, совпадающее с последней строкой `? '?' поиск. x-y Диапазон слов; `-y 'сокращает` 0-y'. * Все слова, кроме нуля. Это синоним для `1 - $ '. Использование *, если в событии только одно слово, не является ошибкой; в этом случае возвращается пустая строка. {{ 1}} x * Сокращает x - $. x- Сокращает x- $ как x *, но опускает последнее слово.
Если указатель слова предоставляется без спецификации события, предыдущая команда используется как событие.
И поэтому после использования этой строки:
$ echo -r movableFolder/ targetFolder/
echo -r movableFolder/ targetFolder/
это будет работать:
$ !:0 !:2*
movableFolder/ targetFolder/
Также это:
$ !:0 !:2-$
movableFolder/ targetFolder/