Компьютерное

История BASH в Linux — возможности замены в последней команде

Иногда мы используем в Linux команды с кучей длинных аргументов, а так же используем их многократно друг за другом, но меняя лишь пару параметров.
Пример :

touch /home/user1/test/scenario.txt  /etc/my-server/users/user1.cnf /var/log/my-server/user1.log

Что делать если тоже самое надо выполнить для user2?

Для изменения всех вхождений в последней команде можно использовать вот такую конструкцию:

!:gs/old_occurrence/new_occurrence

! вызывает последнюю команду
gs выполняет глобальную замену
Для замены слова можете выполнить вот такую команду:

^old_word^new_word

Примеры:

[www.linux] root:~ # touch test1 scenario1 result1
[www.linux] root:~ # !:gs/1/2
touch test2 scenario2 result2
[www.linux] root:~ # ls -l test* scenario* result*
-rw-r--r-- 1 root root 0 Nov 20 16:45 result1
-rw-r--r-- 1 root root 0 Nov 20 16:45 result2
-rw-r--r-- 1 root root 0 Nov 20 16:45 scenario1
-rw-r--r-- 1 root root 0 Nov 20 16:45 scenario2
-rw-r--r-- 1 root root 0 Nov 20 16:45 test1
-rw-r--r-- 1 root root 0 Nov 20 16:45 test2
[www.linux] root:~ # mkdir -p tests/exp/scenario1/tools/
[www.linux] root:~ # ^exp^lab
mkdir -p tests/lab/scenario1/tools/
[www.linux] root:~ # tree tests
tests
├── exp
│   └── scenario1
│       └── tools
└── lab
    └── scenario1
        └── tools

6 directories, 0 files

Прим.: при использовании команды ^^ на множество вхождений, будет заменено только первое вхождение.
Пример:

[www.linux] root:~ # ls -l test1 scenario1 result1
-rw-r--r-- 1 root root 0 Nov 20 16:45 result1
-rw-r--r-- 1 root root 0 Nov 20 16:45 scenario1
-rw-r--r-- 1 root root 0 Nov 20 16:45 test1
[www.linux] root:~ # ^1^2
ls -l test2 scenario1 result1
-rw-r--r-- 1 root root 0 Nov 20 16:45 result1
-rw-r--r-- 1 root root 0 Nov 20 16:45 scenario1
-rw-r--r-- 1 root root 0 Nov 20 16:45 test2

Замена последнего слова в истории

Например мы запустили команду ls и хотим заменить её на cat для просмотра содержимого. Для этого мы можем использовать для этого быстрые замены bash :  !$ или $_

ls -l /etc/passwd

cat $_  
или 
cat !$
Mirivlad

Скромный труженик консоли и окошек.

Share
Published by
Mirivlad

Recent Posts

Как вернуть доступ к аккаунту VK (ВКонтакте)?

Восстановить доступ к странице ВКонтакте можно относительно просто. И для этого даже не потребуется помощь…

1 год ago

Реверс-инжиниринг электроники и ПО

Реверс инжиниринг электроники и программного обеспечения — увлекательная и важная дисциплина, играющая ключевую роль в…

3 года ago

Что лучше Apple iPhone 14 или iPhone 13: сравниваем модели

Рынок смартфонов не стоит на месте и каждый год пополняется новыми моделями. Компания Apple традиционно…

3 года ago

Как открыть интернет-магазин с нуля в 2026 году?

Запуск онлайн-бизнеса может показаться сложной задачей, но на самом деле этот процесс можно существенно упростить,…

3 года ago

Как проверить текст на уникальность?

Если Вы хотите продвинуть свой сайт в поисковых системах, одним из самых важных аспектов является…

3 года ago

ТОП лучших смартфонов Samsung 2026 года: рейтинг по цене и качеству

Корейская компания Samsung зарекомендовала себя на потребительском рынке как производитель флагманов, так и бюджетных смартфонов.…

3 года ago