BASHмачника вызывали? j1m (j1m@list.ru) Хакер, номер #075, стр. 075-098-2 $ ls /usr/{bin,sbin} Аргумент команды ls разобьется на два значения: /usr/bin и /usr/sbin, и лишь затем они оба будут переданы на обработку ls. Таким образом, на экране мы увидим содержимое обоих каталогов. Помимо таких подстановок, используемых, в основном, для раскрытия путей, существуют и другие, не менее полезные виды, например подстановка результата выполнения команды. Взгляни на реальный прием, которым я постоянно пользуюсь: $ ldd `which cp` libc.so.6 => /lib/libc.so.6 (0xb7eb3000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7fec000) Команда which выводит полный путь до исполняемого файла. Заключив ее в обратные кавычки и указав в качестве аргумента команды ldd, мы добились желаемого эффекта: bash выполнил команду which cp и подставил результат ее выполнения как аргумент ldd. Удобно, не правда ли? Идем дальше, на очереди арифметика :). У тебя, наверное, в системе есть какой-нибудь навороченный калькулятор, который зависит от нескольких десятков библиотек и которым ты пользуешься раз в полгода для всяких мелких расчетов. А у меня нет, я для этих целей использую bash: $ echo $((5*5+12)) 37 В этом примере выражение, записанное в формате $((выражение)), заменяется на результат его вычисления и передается команде echo, которая и выводит результат на экран. Существует еще множество различных видов замен, используемых, в основном, в скриптах и не представляющих особого интереса для обычного пользователя. История. Давай рассмотрим, какую выгоду можно извлечь из свойства bash заносить все введенные команды в файл истории. Для навигации по истории команд можно использовать клавиши «вверх» и «вниз», а также «PageUp» (первая команда в истории) и «PageDown» (последняя команда в истории). Если необходимо просто выполнить последнюю введенную команду, набивай «!!». Но самой полезной, на мой взгляд, командой для работы с историей является !строка, она выполнит последнюю команду, начинающуюся с указанной строки. Библиотека readline. Эта либа предназначена для обработки входных данных, bash использует ее для обработки командной строки. Когда ты вводишь команды в ответ на приглашение bash, то, по сути, работаешь именно с этой библиотекой. Она отвечает и за редактирование строки, и за автодополнение (клавиша <TAB>), и за работу с историей, bash'у же передается только результирующая строка. Интересно, что readline обладает многими возможностями современных редакторов, вот только некоторые из них (здесь «C» - это клавиша <Ctrl>, а «M» - <Esc>): Горячие клавиши readline M-B - перейти к началу слова M-F - перейти к концу слова C-W - уничтожить текст от курсора до начала слова M-D - уничтожить текст от курсора до конца слова C-U - уничтожить текст от курсора до начала строки C-K - уничтожить текст от курсора до конца строки |