Добро пожаловать на форум, Гость!
Войдите или зарегистрируйтесь!
Имя пользователя:   Пароль:  
Запомнить меня 




Начать новую тему Ответить на тему   [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Трюки bash
СообщениеДобавлено: 17 сен 2010, 15:04 
Бородатый сис
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 2898
Откуда: Из серверной
Зарегистрирован: 03 мар 2010, 15:12
Благодарил (а): 19 раз.
Поблагодарили: 121 раз.
ОС: RHEL 6.7
История и bang-bang

История команд - очень удобный инструмент. С помощью стрелок вверх-вниз можно перемещаться по истории введенных команд. Кроме того, с помощью команды history можно просмотреть всю историю команд:

Код:
  190  ps axu | grep htt
  191  /www/bin/apachectl start
  192  vi /usr/local/lib/php.ini
  193  cat /www/logs/error_log
  194  ps -auxw | grep http
  195  pwd



Ничего удивительного.
Гораздо интереснее то, что называется bang-bang, или команда !!. `!!` означает последнюю команду в истории. Т.е. ввод !! в данном случае аналогичен pwd.
Но и это еще не все. Можно ввести `!<первые буквы команды>`. `!ps` вызовет `ps axu | grep htt`. Но будьте внимательны и сообщайте восклицательному знаку достаточно символов команды. Например !p в данном случае будет аналогично `pwd`, а не `ps axu | grep htt` (поскольку pwd ниже в истории) как возможно хотелось бы.

:p не просто смайлик

Для того чтобы избежать конфузов при использовании ! можно добавлять к нему смайлик :p. Это заставит bash вывести то, что он собирался выполнить. Кроме того, :p достаточно умен для того, чтобы добавить выведенную команду в историю.

В качестве примера:
!ps:p в нашем случае вернет "ps axu | grep htt". Убедившись что это именно то что нужно, можно ввести !! и bash выполнит `ps axu | grep htt`.

Другие способы использования истории

Наверное самый примитивный способ - вызвать команду history, узнав номер необходимой команды, а затем использовать !N, где N - номер команды в истории (например, !192). Не следует пренебрегать этой возможностью. Иногда запомнить !123 для какой-то постоянно нужной команды гораздо проще чем пользоваться другими способами.
Кстати, :p работает и тут.

Еще один удобный способ - нажать ^r (Ctrl-r) и начать вводить первые символы нужной команды. bash будет искать в истории подходящие команды.
Работа с аргументами

!$ (bang-dollar) означает последний аргумент последней команды.
К примеру тут:
Код:
!$ /some/long/path/to/dir/
rm -rf !$


!$ превратится в /some/long/path/to/dir/.

Кстати, :p тут тоже работает.

!* похожа на !$. !* превращается во все аргументы последней команды.

Шапочки

Наверняка вы не раз вводили что-то типа
Код:
vi /etc/X22/xorg.conf


Это очень легко поправить с помощью шляпок:
^22^11 заменяет 22 на 11 в предыдущей команде. По аналогии всегда можно использовать ^ошибка^исправление.

Автодополнение

Ну и разумеется не стоит забывать про автодополнение. Один Tab дополняет команду насколько можно понять, второй выводит все варианты дальнейшего написания. Однако не следует этим злоупотреблять. Согласитесь, написать less быстрее, чем написать le и долбить по табу.
Алиасы

Полезно дать короткие имена часто используемым командам. Также полезно дать алиасы наиболее частым опечаткам.
Полезными алиасами могут быть:
Код:
alias ls='ls --color=auto'
alias mroe='more'
alias H='kill -HUP'
alias ssh-production='ssh www.myproject.com'
alias ssh-qa='ssh qa.myproject.com'
alias sl='ls'


Я не злопамятный, я просто часто ковыряю логи
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Трюки bash
СообщениеДобавлено: 18 сен 2010, 12:44 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
mkdir {test,testlolo,test/lolo}
создаст сразу столько папочек :)


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Трюки bash
СообщениеДобавлено: 27 сен 2010, 15:06 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
Код:
rm -f !(survivior.txt)

удалить все, кроме survivior.txt
Цитата:
find . ! -name <FILENAME> -delete

тоже самое
Код:
ls | grep -v "filename$" | xargs rm -v

тоже самое


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Трюки bash
СообщениеДобавлено: 31 окт 2010, 23:12 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
for i in foo*.JPG; do NUMBER=`ls $i|sed 's/[^0-9]//g'`; mv -v $i angels$NUMBER.jpg; done
как вариант групповой переименовки файлов


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
   Похожие темы   Автор   Ответов   Просмотров   Последнее сообщение 
Перенесенная ^_^

в форуме Linux

root

3

38

02 мар 2010, 16:15

Gen1us2k Перейти к последнему сообщению



Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Собрано Raven. Русская поддержка phpBB
phpBB SEO