Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание (1114666), страница 82
Текст из файла (страница 82)
Еслистроки не заданы, команда просто выполняется повторно.Но только при редактировании. Если указан параметр —1, опущенный параметр last приравнивается текущей команде. Примеч. науч. ред.553Встроенные командыЕсли не задана команда, повторно выполняется последняякоманда из журнала. Команда (command) является строкойлибо числом, как и параметр first.
См. примеры в разделе«Журнал команд».fcПараметры-е [editor]Запустить редактор editor для редактирования выбранных команд из журнала. Редактор по умолчанию задается переменной интерпретатора FCEDIT.-1 [first last]Перечислить команды из указанного интервала или 16последних команд.—п Подавить нумерацию команд при перечислении (—1).—г Обратить порядок списка команд (—1).—s pattern=newpatternРедактировать команду (команды), заменяя все вхождения pattern на newpattern. Выполнить измененную команду.fg [joblDs]Перевести текущее задание (или задание с указанным идентификатором) в режим приоритетного выполнения.
См. далее раздел «Управление заданиями».forfor x [in list ]docommandsdoneИтеративно присваивать переменной х значения из списка(list) и выполнять команды (commands). Если список опущен, то в этом качестве выступают позиционные параметрысценария ($@)ПримерыРазбить все файлы в текущем каталоге на страницы; сохранить результат для каждого файла:for $file in *dopr $filedone$file.tmpГлава 7.
bash: командный интерпретатор Борна554forНайти слова из списка в главах книги (сходно с fgrep —f):for item in 'cat program_list'doecho "Глава проверяется"echo "на наличие упоминаний программы Sitem..."grep -с "$item.[co]" chap*donefunctionfunction commandОпределение функции. Ссылка на аргументы происходиттак же, как и на позиционные параметры сценария ($1, $2 ит. д.). Определение функции завершается символом } .getoptsgetopts string name [args]Команда позволяет обрабатывать аргументы команднойстроки (или указанные параметром args) и проверять ихправильность, getopts используется в циклах сценариев интерпретатора и предназначена для обеспечения стандартного синтаксиса доступа к параметрам командной строки.Строка string состоит из символов допустимых параметров.Допустимые параметры обрабатываются последовательно исохраняются в переменной интерпретатора пате. Если забуквой параметра в списке следует двоеточие, параметр должен иметь по меньшей мере один аргумент.hashhash [—r] [commands]Выполнять поиск команд и запоминать, в каком каталогерасположена каждая из них.
Таким образом, интерпретаторзаранее знает о расположении конкретных программ и нетратит время на поиск в путях, определяемых переменнойPATH. Команда без аргументов отображает текущие команды, о которых интерпретатор уже «помнит». Информациясостоит из количества выполнений (hits) и имен команд (сполными путями).Встроенные командыhelp [-s] [string]555helpОтобразить справку по всем встроенным командам или покомандам, перечисленным в строке string. Если указан параметр -s, отображать только краткий синтаксис, в противном случае отображать и справку.history [options]history [lines]historyОтобразить список пронумерованных команд из журнала,отмечая измененные команды символом «*».
Включает в результат команды из предыдущих сеансов работы. Можно задать максимальное количество выводимых строк (lines).Параметры-a[file]bash ведет файл с именем .bash_history в домашнем каталоге пользователя, который является записью командпредыдущих сеансов работы. Параметр —а добавляетжурнал команд текущего сеанса к файлу .bash_historyили к файлу file.—с Очистить журнал: удалить все введенные команды изсписка, который хранится интерпретатором.-и [/Ив]Добавить к журналу команд те строки из файла ,bash_history (или file), которых в нем еще нет.-т [file]Использовать в качестве рабочего журнала команд файл.bash_history (или указанный).—s commandДобавить команду к рабочему журналу, не выполняя ее.-w [file]Перезаписать файл .bash_history (или file) текущимжурналом команд.if test-cmdsУсловный оператор.
Возможные варианты синтаксиса:if test-cmdsif test-cmdsif test-cmdsthenthenthencmds 1cmds 1cmds 1ifГлава 7. bash: командный интерпретатор Борна556iffielsecmds2fielif test-endsthencmds2elsecmdsnfiОбычно первоначальное условие if и любое условие elif выполняют одну команду test или [] (хотя допустима любаяпоследовательность команд). Если условие if верно (т. е. последняя из команд test-cmds возвращает нуль), выполняются команды cmdsl; иначе проверяются условия elif и else.jobsjobs [options] [joblDs}Перечислить все запущенные и приостановленные заданиялибо задания с указанными идентификаторами (joblDs). Этополезно, когда необходимо перед выходом из системы проверить состояние заданий, требующих долгого времени для завершения, либо наличие запущенных заданий.
См. такжераздел «Управление заданиями» далее в этой главе.Параметры—1 Отобразить идентификаторы заданий и их идентификаторы групп.—п Отображать только задания, состояние которых изменилось с момента последней проверки.—р Отображать только идентификаторы групп заданий.—г Отображать только активные, работающие задания,-s Только приостановленные задания.—х command [arguments]Выполнить команду (command). Если указаны идентификаторы заданий, заменить их этой командой.killkill [options] IDsПринудительное завершение процессов или заданий поидентификатору (ID).
Для уничтожения процесса необходимо быть его владельцем или привилегированным пользователем. См. также раздел «Управление заданиями» в концеглавы.Встроенные команды557Параметрыkill—signalНомер сигнала или имя сигнала (имена можно выяснитьпри помощи команды kill —1). Если номер сигнала равен9, то завершение не может быть перехвачено заданием.По умолчанию посылается сигнал TERM.— Считать все последующие строки аргументами, а не параметрами.—1 Перечислить имена сигналов,-s signalОпределить сигнал (signal).
Можно задать имя сигнала.let expressionsletВыполнить арифметические действия, заданные в целочисленных выражениях (expressions). Выражения состоят изчисел, операторов и переменных интерпретатора (без предшествующего символа $). Выражения должны браться в кавычки, если содержат пробелы, либо другие специальныесимволы. Подробнее и с примерами арифметические выражения описаны ранее в этой главе.
См. также описание команды ехрг в главе 3.ПримерыВ каждом из следующих примеров значение переменной iувеличивается на 1.let i=i+1let "; = i + 1"local [options] [variable[—value]] [variable2[=value]] ...localКоманда без аргументов отображает все локальные переменные. В противном случае создает (и инициализирует, еслизадано значение) локальную переменную. Описание параметров приводится в описании встроенной команды declare.logout [status]Завершение работы с интерпретатором с возвратом кода завершения status в родительский процесс.
Может использоваться только в интерпретаторе, запускаемом при входе всистему. В противном случае используется exit.logoutГлава 7. bash: командный интерпретатор Борна558popdpopd [options]Работа со стеком каталогов. По умолчанию удалить из вершины стека каталог и перейти (cd) в него.Параметры+п Удалить из стека каталог с номером п (первый имеет порядковый номер 0), считая от вершины стека.—п Удалить из стека каталог с номером п, считая от основания стека (последний элемент имеет порядковый номер 0).printfprintf string [arguments]Функция форматирования строки, аналогичная библиотечной функции printf языка С.
В форматной строке распознаются стандартные ключи с символом процента, например%i. Escape-последовательности, такие как \п, могут включаться в форматную строку и распознаются автоматически.Если вы намереваетесь использовать их в аргументах, укажите в качестве строки string %b. Символы в аргументахможно экранировать (с целью использования результатов вкачестве ввода других команд), используя в качестве строкиstring %q.Примеры$ printf "Previous command: Xi\n" "$(($HISTCMD-1))"Previous command: 534$ echo $PAGERless -E$ printf "Xq\n" "\t$PAGER"\\tless\ -iПоследняя команда может быть использована для записинастройки в файл, из которого она затем может быть прочитана и присвоена другому сценарию интерпретатора.pushdpushd directorypushd [options]По умолчанию обменять местами два каталога с вершиныстека.
Если задано имя каталога, добавить его в стек и перейти в этот каталог.Встроенные командыПараметры559pushd+п Прокрутка элементов стека таким образом, чтобы навершине оказался элемент с номером п (первый элементимеет порядковый номер 0).—п Прокрутка элементов стека таким образом, чтобы навершине оказался n-ный элемент от основания стека(последний элемент имеет порядковый номер 0).pwd[-P]pwdОтобразить абсолютный путь текущего рабочего каталога.Если установлен встроенный режим -Р, путь не будет содержать символические ссылки.read [options] variablel [variable2...]Прочитать одну строку со стандартного потока ввода и присвоить слова строки (определяемые по IFS) соответствующим переменным, а все лишние слова добавить к последнейпеременной.
Если задана только одна переменная, она станет равной всей прочитанной строке. Код возврата- 0, еслине встретился символ EOF; это различие полезно для прогонки циклов для файлов ввода. Если имена переменныхопущены, вся строка читается в переменную окруженияREPLY.Параметры—a varПрочитать все слова в переменную var, которая является массивом.—d charПрекратить чтение по указанному символу, а не по символу новой строки.—е Построчное редактирование и журнал команд активныво время ввода.—п питЧитать только пит. символов строки.—р stringОтображать диалоговое приглашение в виде строкиstring перед чтением каждой из строк ввода.read560readГлава 7. bash: командный интерпретатор Борна—гРежим без преобразования; символ продолжения строки (\) игнорируется.—s Не отображать символы, вводимые пользователем (возможность полезна при запросе паролей).—tsecondsДля диалогового ввода установить интервал ожидания вуказанное количество секунд, по истечении которыхвозвращать соответствующие переменные неинициализированными.Примеры$ read first last addressSarah Caldwell 123 Main Street$ echo "$last, $first\n$address"Caldwell, Sarah123 Main StreetВ следующих командах производится чтение пароля в переменную $user_pw и отображение значения этой переменной, при этом используются относительно новые параметры, которые поддерживаются не всеми версиями bash.$ read -sp "Введите пароль (буквы не отображаются при вводе)" user.pwВведите пароль (буквы не отображаются при вводе)$ echo $user_pwВам это знать не положено!Следующий сценарий читает данные из файла паролей, в котором поля разделяются двоеточием (что и делает этот файлпопулярным объектом для примеров разбора ввода):IFS=:cat /etc/passwd |whileread account pw user group gecos home shelldoecho "Account name Saccount has user info Sgecos"donereadonlyreadonly [options] [vanablel variable2...]Запретить присваивание новых значений перечисленнымпеременным интерпретатора.