Linux параметры командных файлов

Параметры команд

Большинство команд, используемых в Bash, могут отдаваться как одним словом, так и предполагать после себя какие-либо уточняющие параметры.

Мы будем называть параметрами все, что идет после команды. При этом делить параметры на ключи и аргументы. Ключами будем называть то, чему обычно предшествует один или два знака минуса. Ключи, если присутствуют, ставятся перед аргументами. У команды могут быть как ключи, так и аргументы, так и только ключи или только аргументы.

Обычно аргументы – это то, над чем выполняется команда. Например, команда перехода в другую директорию должна получить в качестве аргумента имя каталога, куда следует перейти. Команде вывода на экран содержимого файла надо передать имя файла.

Ключи модифицируют, как бы видоизменяют работу программы. Например, с помощью команды просмотра содержимого каталога можно вывести простой список вложенных объектов. Используя же определенный ключ, можно получить подробные сведения о каждом файле и папке.

Рассмотрим использование параметров на примере команды ncal , которая выводит на экран календарь. Без параметров она выведет календарь на текущий месяц.

Программа ncal выводит календарь

Если мы хотим увидеть календарь за другой месяц, следует передать программе ncal два аргумента: месяц и год.

Передача параметров

Если указать только один аргумент, то будет считаться, что передается только год. Будет выведен календарь на целый год.

С помощью ключа -b можно перевернуть календарь на 90 градусов. Понятно, что аргументы могут быть как указаны или нет. В последнем случае получится перевернутый календарь на текущий месяц.

Передача команде ключа

У команд может быть множество ключей. Их можно комбинировать.

Использование двух ключей

В данном случае используется два ключа. Ключ -w приказывает ncal выводить кроме прочего номера недель года. На скриншоте выше ключи записаны вместе. Однако можно было дать команду так: ncal -b -w 02 2019 .

Опция не всегда обозначается маленькой буквой. Бывают ключи, обозначаемые заглавной буквой или словом. В случае слова используется два знака минуса, чтобы Bash понимал, что перед ним не перечень подряд идущих ключей, а только один. В примере ниже опции -V и —version программы python3 делают одно и тоже – выводят версию интерпретатора.

Читайте также:  Linux process shared memory

Ключи -V и --version

Существуют команды, которые не имеют смысла без аргументов, то есть для них не задано поведение «по-умолчанию». Например, команда sleep , заставляющая bash выполнить задержку перед следующей командой. Время можно указывать в секундах, минутах и др.

Отметим, что понятия «команда», «параметр», «ключ», «аргумент» не являются каким-либо стандартом. В терминологии Bash ключи также называют опциями, аргументы – операндами, то есть тем, над чем выполняется команда.

Однако с точки зрения программирования все, что содержит строка команды, это аргументы. Введенная строка передается программе целиком, где «разрезается» на отдельные слова, которые помещаются в массив, первый элемент которого – имя вызываемой программы. Далее программа так или иначе обрабатывает аргументы, если предполагает работу с ними.

Объясните, что делает команда echo . По результату выполнения echo -e «one\ntwo\tthree» объясните назначение ключа -e .

Курс с ответами к заданиям и дополнительными уроками в PDF

Введение в Linux и Bash. Курс

Источник

2. Командные файлы в Linux.

Для того чтобы текстовый файл можно было использовать как командный, существует несколько возможностей.

Пусть с помощью редактора создан файл с именем f1, содержащий одну строку следующего вида: date; pwd; ls. Можно вызвать оболочку shell как команду, обозначаемую sh, и передать ей файл fl, как аргумент или как перенаправленный вход: $ sh fl или $ sh < fl. В результате выполнения любой из этих команд будет выдана дата, затем имя текущего каталога, а потом содержимое каталога.

Файл можно выполнить и в текущем экземпляре shell. Для этого существует специфическая команда . (точка): .fl.

Более удобный вариант работы с командным файлом — это превращение его в выполняемый файл, т.е. просто сделать его командой (запускающей этот файл по его названию), что достигается изменением кода защиты. Для этого надо разрешить выполнение этого файла. Например, chmod 711 fl сделает у этого файла код защиты «rwx—x—x». Тогда простой вызов fl приведет к выполнению тех же трех команд, которые были записаны в файл.

Читайте также:  Открыть графическую оболочку линукс

Результат будет тот же, если файл с содержимым date; pwd; ls будет представлен в виде:

так как переход на другую строку также является разделителем в последовательности команд.

Начинать командный файл надо всегда с пустой строки или пустого оператора «:». Их выполнение происходит в режиме интерпретации с помощью shell-интерпретатора.

Работу всех команд операционной системы упрощенно можно представить следующим образом: команда — это некоторое устройство, которое выполняет преобразование входного потока в выходной.

Входной поток в команде может быть задан четырьмя способами: указанием адреса входного потока справа от команды; отсутствием в команде прямого указания на адрес входного потока; перенаправлением входного потока с помощью символа «

Выходной поток может быть задан пятью способами: по умолчанию, без явного указания на выходной поток; явным указанием выходного потока; перенаправлением выходного потока одной команды на вход другой (символ |); перенаправлением в начало файла (символ «>»); перенаправлением в конец файла (символ «>>»).

Выходной поток одной команды может быть направлен во входной поток другой команды посредством организации конвейера команд. Для создания конвейера команд между объединяемыми командами ставится знак |.

Для вывода всех файлов текущего каталога на экран служит команда ls -1. Для ограничения выходного потока этой команды, вывода каталога отдельными фрагментами, служит команда more. Соединив эти две команды в конвейер ls –l| more получим, что содержимое текущего каталога готовится командой ls -l, выходной поток которой знаком конвейера | направлен на вход команды more. А команда more выводит информацию на экран с временными паузами.

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

Показать общее количество файлов в текущем каталоге: ls –l| wc –l.

Показать общее количество пользователей, работающих в данный момент на ЭВМ: who | we –l.

Читайте также:  Настроить спящий режим линукс

Показать последние 10 раз, когда заходил в систему пользователь с текущим login’ом «vasjkov»: last vasjkov | head.

Отсортировать список файлов по алфавиту, подготовить его к печати и отпечатать его: sort list | pr | lpr.

Показать состав работающих на ЭВМ пользователей в алфавитном порядке: who | sort.

Достать страницу из справочной системы shell и отправить ее по почте Алексею Васькову: man sh | mail vasjkov.

Сформировать список содержимого текущего каталога, выделить размер каждого файла из списка, список отсортировать по цифрам, показать только последний (а следовательно, наибольший) файл из списка: ls -l | awk ‘ ‘ | sort -n | tail –l.

Файл «textfile» отсортировать и напечатать: sort textfile | lp.

Найти в текущем каталоге файлы, имена которых заканчиваются на 1994, найти в этих файлах слово «profits» и напечатать строки, содержащие это слово. Поиск требуемого слова в файлах произвести командой grep: cat *. 1994 | grep profits | lp.

Выдать на экран список файлов текущего каталога (команда list) в 4 колонки (опция -4 команды рг) по 5 строк на странице (опция -l5) и не выдавать заголовок списка и конечное сообщение (опция -t): ls | pr -t -l5 -4.

Сформировать список файлов текущего каталога, преобразовать его в 3 колонки и распечатать: ls | pr -3 | lpr.

Файл «fruits» отсортировать и вывести на экран колонками, как при табуляции: sort fruits | sp.

Определить, кто входит в систему с терминала ttyl5: who |grep ttyl5.

Вывести неповторяющийся список элементов файла animals с указанием числа повторений этих элементов. Такой способностью обладает команда uniq с опцией -с: sort animals | uniq -с.

Найти в телефонном справочнике phone.lst абонента по двум критериям поиска: Тэд, живущий в Лос Анжелесе: grep Ted phone.lst | grep ‘Los Angeles’.

Отформатировать текст из файла text_5 в 2 колонки перед выводом на печать: рr -2 text_5 | lpr.

Перед печатью файл data_15 сначала упорядочить, затем разделить на страницы: sort data 15 | pr | lpr.

Источник

Оцените статью
Adblock
detector