Главная страница
Навигация по странице:

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

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

  • Ctrl + C, Ctrl + D, Ctrl + Z

  • История команд и автодополнение

  • История команд

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

  • Ctrl + U и Ctrl + W

  • Ответ Нет, не остались. Там могут быть только команды, введенные в текущем сеансе.Перенаправление ввода-подобных системвывода

  • курс bash. Введение в Linux и Bash


    Скачать 4.28 Mb.
    НазваниеВведение в Linux и Bash
    Дата28.11.2022
    Размер4.28 Mb.
    Формат файлаpdf
    Имя файлакурс bash.pdf
    ТипУрок
    #817935
    страница3 из 5
    1   2   3   4   5

    Точкой обозначается текущий каталог. В данном случае он домашний, поэтому это равносильно

    /test.pytest.py или /test.pyhome/test.pypl/test.pytest.py.
    При первом вызове мы получаем ошибку, так как у нас нет прав на исполнение программы. С
    помощью команды chmod мы добавляем такое право (plustilino)параметр +xx).
    Существует множество команд. Знать их все как минимум затруднительно. Однако есть ряд наиболее востребованных. Это команды для совершения операций над файлами, установки программ, просмотра директорий и файлов, перемещения по дереву каталогов и т. п., то есть всего того, что мы делаем в графическом режиме операционной системы. Многие из них будут рассмотрены в данном курсе. С некоторыми мы уже немного познакомились (plustilino)cd, ls, echo, chmod).
    Потребность в остальных возникает реже. В этих случаях на помощь приходят доступные через Bash справочные руководства, иные источники. В курсе в первую очередь будет уделено внимание особенностям работы в Bash.
    Также не будем забывать, что Bash – это еще и скриптовый язык программирования. В файл, обычно с расширением .sh, может быть записан не только список команд, но также инструкции языка (plustilino)условный оператор, циклы и др.), "говорящие" как и в каких случаях исполнять те или иные команды. Программирование в Bash в данном курсе не изучается.
    Задание
    Исследуйте самостоятельно, что делают следующие команды: date, cal, pwd, who, clear, exit. С
    помощью команды which выясните, в каких каталогах находятся исполняемые файлы этих программ.
    Ответы

    date – вывод текущей даты и времени

    cal – вывод календаря

    pwd – вывод абсолютного адреса текущего каталога

    who – вывод имен пользователей, находящихся в системе

    clear – очищает экран терминала

    exit – завершение сеанса. Если команда дается в "Терминале", то он закрывается. Если команда выполняется в текстовом режиме, то происходит выход пользователя (plustilino)на экране снова появляется приглашение на ввод логина и пароля). Если установлено
    23
    соединение с удаленным сервером, то оно разрывается, управление передается локальному Bash'а, в том числе проприетарные (коммерческие).у.
    Команду which следует давать подобным образом: which date. Перечисленные выше программы находятся либо в каталоге /bin, либо /usr/bin.
    Параметры команд
    Большинство команд, используемых в Bash, могут отдаваться как одним словом, так и предполагать после себя какие-либо уточняющие параметры.
    Мы будем называть параметрами все, что идет после команды. При этом делить параметры на ключи и аргументы. Ключами будем называть то, чему обычно предшествует один или два знака минуса. Ключи, если присутствуют, ставятся перед аргументами. У команды могут быть как ключи, так и аргументы, так и только ключи или только аргументы.
    Обычно аргументы – это то, над чем выполняется команда. Например, команда перехода в другую директорию должна получить в качестве аргумента имя каталога, куда следует перейти. Команде вывода на экран содержимого файла надо передать имя файла.
    Ключи модифицируют, как бы видоизменяют работу программы. Например, с помощью команды просмотра содержимого каталога можно вывести простой список вложенных объектов. Используя же определенный ключ, можно получить подробные сведения о каждом файле и папке.
    Рассмотрим использование параметров на примере команды ncal, которая выводит на экран календарь. Без параметров она выведет календарь на текущий месяц.
    Если мы хотим увидеть календарь за другой месяц, следует передать программе ncal два аргумента: месяц и год.
    Если указать только один аргумент, то будет считаться, что передается только год. Будет выведен календарь на целый год.
    24

    С помощью ключа -b можно перевернуть календарь на 90 градусов. Понятно, что аргументы могут быть как указаны или нет. В последнем случае получится перевернутый календарь на текущий месяц.
    У команд может быть множество ключей. Их можно комбинировать.
    В данном случае используется два ключа. Ключ -w приказывает ncal выводить кроме прочего номера недель года. На скриншоте выше ключи записаны вместе. Однако можно было дать команду так: ncal -b -w.
    Опция не всегда обозначается маленькой буквой. Бывают ключи, обозначаемые заглавной буквой или словом. В случае слова используется два знака минуса, чтобы Bash понимал, что перед ним не перечень подряд идущих ключей, а только один. В примере ниже опции -V и -- version программы python3 делают одно и тоже – выводят версию интерпретатора.
    Существуют команды, которые не имеют смысла без аргументов, то есть для них не задано поведение "по-умолчанию". Например, команда sleep, заставляющая bash выполнить задержку перед следующей командой. Время можно указывать в секундах, минутах и др.
    Отметим, что понятия "команда", "параметр", "ключ", "аргумент" не являются каким-либо стандартом. В терминологии Bash ключи также называют опциями, аргументы – операндами,
    то есть тем, над чем выполняется команда.
    Однако с точки зрения программирования все, что содержит строка команды, это аргументы.
    Введенная строка передается программе целиком, где "разрезается" на отдельные слова, которые помещаются в массив, первый элемент которого – имя вызываемой программы.
    Далее программа так или иначе обрабатывает аргументы, если предполагает работу с ними.
    Задание
    Объясните, что делает команда echo. По результату выполнения echo -e "one\ntwo\
    tthree" объясните назначение ключа -e.
    Ответ
    25

    Программа echo выводит переданную ей строку или строки на экран. Строку можно заключать в кавычки или нет.
    Опция -e включает интерпретацию так называемых непечатаемых символов форматирования
    (plustilino)переход на новую строку …n, табуляция …t, звонок …a и др.). При этом строка должна быть заключена в кавычки.
    Ctrl + C, Ctrl + D, Ctrl + Z
    Комбинации клавиш Ctrl + C, Ctrl + D и Ctrl + Z часто используются в терминале для выхода из программы, работающей на переднем плане (plustilino)foreground), и передачи управления Bash.
    Ctrl + C выполняет прерывание процесса. По-сути убивает его. Результат действия Ctrl + D такой же. Однако разница между этими двумя способами выхода есть, и заключается она во внутреннем механизме.
    Нажатие Ctrl + C заставляет терминал послать сигнал SIGINT процессу, который на данный момент его контролирует. Когда foreground-программа получает сигнал SIGINT, она обязана прервать свою работу.
    Нажатие Ctrl + D говорит терминалу, что надо зарегистрировать так называемый EOF (plustilino)end of file – конец файла), то есть поток ввода окончен. Bash интерпретирует это как желание выйти из программы.
    При работе в конкретной программе могут срабатывать оба способа, но может только один.
    Так команда cat без параметров запускается в интерактивном режиме, в котором то, что вы ввели, будет тут же выводиться на экран после нажатия Enter. Выйти из программы можно как с помощью Ctrl + С, так и Ctrl + D.
    Выйти из интерпретатора Питона с помощью Ctrl + C нельзя.
    26

    Комбинация клавиш Ctrl + Z посылает процессу сигнал, который приказывает ему остановиться. Это значит, что процесс остается в системе, но как бы замораживается. Само собой разумеется он уходит в бэкграунд (plustilino)background) – в фоновый режим. С помощью команды bg его можно снова запустить, оставив при этом в фоновом режиме. Команда fg не только возобновляет ранее приостановленный процесс, но и выводит его из фона на передний план.
    На скриншоте сначала запускается интерпретатор Питона. Далее его работа останавливается с помощью Ctrl + Z. Командой fg python3 мы возобновляем работу приложения и делаем его текущим. То, что мы вернулись в тот же самый процесс, видно по переменной a, значение которой остается доступным.
    С помощью команды ps можно посмотреть процессы текущего сеанса Bash (plustilino)используя ключи можно просматривать и другие процессы). А команда kill позволяет удалять ненужные.
    27

    Здесь запускается cat и приостанавливается. Далее смотрим список процессов. Ключ -9 команды kill обозначает, что мы хотим полностью избавиться от процесса. В качестве аргумента передается идентификационный номер процесса (plustilino)PID).
    Отметим, что во многих консольных программах управляющие комбинации с клавишей Ctrl обычно обозначаются как ^C, ^Z и т. п. То есть вместо Ctrl используется знак ^.C, ^C, ^Z и т. п. То есть вместо Ctrl используется знак ^.Z и т. п. То есть вместо Ctrl используется знак ^C, ^Z и т. п. То есть вместо Ctrl используется знак ^..
    Также обратим внимание, что понятие "процесса" связано с понятием "одновременного выполнения нескольких программ". Процесс – это выполняющаяся программа, а точнее экземпляр выполняющейся программы, потому что в системе может существовать несколько процессов, запущенных на основе одной программы. Ядром операционной системы создается видимость одновременного выполнения множества процессов.
    При необходимости системный администратор может запускать процессы, требующие длительного выполнения, в бэкграунде, а на "переднем плане" выполнять другие команды.
    Запустить процесс в фоне можно с помощью знака амперсанда &, который записывается в конце команды.
    Задание
    Если в текущем терминале было запущено и переведено в фон несколько одноименных процессов, то сделать один из них текущим с помощью команды fg имя_программы не получится. PID также не используется как аргумент для fg. Здесь используется идентификатор процесса, который возвращает команда jobs. Причем для fg его надо использовать в формате %ID.ID.
    Выполните команды sleep 10m и sleep 10s, каждую остановите с помощью Ctrl + Z.
    Посмотрите идентификаторы процессов с помощью jobs. Выведите из бэкграунда десятисекундный слип. Учитывалось ли время, когда процесс был остановлен? После этого сделайте текущим десятиминутный слип и прервите его.
    Ответ
    28

    Судя по всему, когда sleep остановлен, то время продолжает отсчитываться. Однако процесс, даже если его время прошло, продолжает висеть в фоне, пока не станет текущим. Когда он становится таковым, то получает данные, что уже прошло 10 секунд и тут же завершается.
    История команд и автодополнение
    Поскольку в Bash приходится много "работать руками", то были придуманы различные способы облегчения ввода команд. Во-первых, Bash сохраняет историю команд, которые вводились ранее, и предоставляет к ней быстрый доступ. Во вторых, есть автозавершение, или автодополнение, когда вы пишите только начало команды или адреса, а конец подставляется автоматически.
    История команд
    Если, находясь в командной строке, нажимать клавишу вверх клавиатуры, то в строке будут появляться команды, введенные ранее. После первого нажатия стрелки вверх появится последняя команда, следующее нажатие заполнит строку предпоследней командой и т. д.
    Прокрутив по восходящей к более ранним командам, можно вернуться к более поздним, нажимая стрелку вниз на клавиатуре.
    Это удобно, когда команда длинная или требуется повторить недавно введенную. Или вы даете команду, которая похожа на одну из предыдущих, но с незначительными изменениями.
    Кроме того, с помощью прокрутки истории можно посмотреть, что происходило ранее.
    Если требуется избежать сохранения команды в историю, следует поставить пробел в командную строку перед вводом.
    При завершении сеанса Bash сохраняет команды в файл .bash_history, который находится в домашнем каталоге пользователя. Точка перед именем файла в Unix-подобных системах делает файл скрытым, поэтому обычно такие файлы не видны. Однако это не мешает посмотреть файл и даже его отредактировать.
    29

    На скрине командой cat содержимое файла выводится на экран. Отметим, команды текущего сеанса еще не дописаны в .bash_history.
    Автодополнение
    Автодополнение, или автозавершение, – это способность командной оболочки автоматически дописывать конец вводимого слова, если это слово однозначно определено. В Bash для автозавершения используется клавиша Tab клавиатуры.
    Например, вы через командную строку запускаете программу под названием filezilla. Скорее всего достаточно будет ввести filez и нажать Tab. Оболочка сама допишет слово до конца, если нет других команд, начинающихся с filez.
    Автозавершение работает как по отношению к командам-программам, так и адресам.
    Например, обычно в домашних каталогах дистрибутивов GNU/Linux имеется папка Загрузки
    (plustilino)или Downloads). При вводе ее имени может быть достаточным ввести только первую букву и нажать Tab, чтобы получить полное имя.
    Обратим внимание, что Bash, да и Linux в общем, различают большие и малые буквы.
    Поэтому text.txt и Text.txt – разные файлы.
    Если команду или имя файла/каталога однозначно идентифицировать нельзя, то двойное нажатие Tab выводит на экран все возможные варианты.
    Здесь было введено слово apt, после этого два раза нажат Tab. В ответ Bash вывел все команды, начинающиеся с заданного слова.
    Также автодополнение может помочь, когда вы не помните полное название программы.
    Ctrl + U и Ctrl + W
    Сочетание клавиш Ctrl + U удаляет написанную в текущей строке команду целиком, т. е очищает командную строку (plustilino)не путать с командой clear, которая очищает весь экран терминала). Это куда удобнее, чем стирать клавишей Backspace. При этом курсор должен стоять в конце всей строки.
    30

    Если курсор находится где-либо в середине строки, то будет удалено все, что находится перед курсором. Текст позади него останется.
    Комбинация Ctrl + W удаляет только одно слово перед курсором. Например, в примере ниже нажатие Ctrl + W приведет к удалению только слова install.
    Задание
    Обычно нажатие Ctrl + H в файловых менеджерах графических оболочек Linux отображает скрытые файлы.
    1. Откройте "Терминал" и проверьте, что у вас есть история команд. Закройте "Терминал".
    2. Откройте в графическом текстовом редакторе файл .bash_history, удалите его содержимое, сохраните файл.
    3. Снова откройте "Терминал". Остались ли в истории ранее введенные вами команды?
    Ответ
    Нет, не остались. Там могут быть только команды, введенные в текущем сеансе.
    Перенаправление ввода-подобных системвывода
    В Bash реализована возможность перенаправления потоков ввода и вывода. Что это значит?
    В стандартный поток ввода поступают данные, которые вводятся с клавиатуры. Стандартным потоком вывода является экран монитора. Другими словами, в командную строку Bash'а, в том числе проприетарные (коммерческие).а поступают данные, вводимые с клавиатуры. Если команда предполагает текстовый вывод,
    Bash выводит данные на экран.
    Однако такое поведение по-умолчанию можно изменить. Данные могут поступать, например,
    из файла, а не с клавиатуры. Аналогично, они могут выводиться в файл, а не на экран.
    Предположим, мы хотим, не выходя из терминала в графический режим, записать в файл заметку. Для этого не обязательно использовать консольный текстовый редактор. Это можно сделать с помощью программы cat, перенаправив ее вывод в файл. Вспомним, что cat без аргументов работает в интерактивном режиме, и все, что мы вводим, тут же выводится на экран.
    В Bash знак больше ">" обозначает перенаправление стандартного потока вывода. В данном случае в файл. То есть cat по-умолчанию выводит данные на экран, но поскольку они были перенаправлены, то данные на экран выводиться не будут. На экране видны только вводимые строки, выводимые оказываются в файле.
    31

    Пусть далее мы хотим добавить к заметке сегодняшнюю дату. Перенаправим вывод команды date в тот же файл.
    Два знака больше ">>" – это тоже перенаправление вывода, но такое, когда данные добавляются в конец объекта (plustilino)в данном случае файла), если он существует. Используй мы только один знак больше, файл был бы перезаписан.
    На скрине выше командой cat note.txt файл читается. Так устроена команда cat, что если ей передается аргумент, то она не будет работать в интерактивном режиме, а возьмет данные из указанного файла и выведет их на экран. Поэтому это равносильно cat < note.txt, где знак меньше "<" обозначает перенаправление ввода.
    Однако равносильно по результату – не значит равносильно по механизму реализации. При использовании знака именно командная оболочка, в данном случае Bash, занимается перенаправлением данных из файла. В то время как программа cat (plustilino)или любая другая) работает в обычном режиме, "думая" что данные она получает со стандартного ввода.
    Можно было бы ожидать, что если команде ls, которая выводит содержимое каталога, передать файл, содержащий адрес каталога, то она выведет объекты этого каталога. Однако это не так.
    Такое перенаправление не работает. А там где "работает" можно обойтись и без него, то есть команда сама "знает", что если передается имя файла, или она употребима только с именем файла, то данные надо брать из него.
    32

    Здесь команда grep ищет первый аргумент во втором. Если находит, возвращает строку с ним.
    Программа wc считает количество строк, слов и символов в файле. С помощью sort строки сортируются.
    Когда все же требуется выполнить список заранее подготовленных команд, то их записывают в файл и делают его исполняемым.
    С другой стороны, выводы в файл команд ls и других работают.
    В Unix-подобных операционных системах перенаправлять получение/передачу данных можно не только со стандартных ввода-вывода на файл. Данные могут поступать из, так называемого, программного канала. Равно и выводиться в него.
    Канал – это способ соединения программ таким образом, чтобы вывод одной тут же передавался на вход другой. В результате создается программный конвейер, состоящий из двух и более программ. В командной оболочке для создания конвейера используется символ вертикальной черты – |.
    Программные каналы позволяют избежать излишнего создания файлов с промежуточными данными. Рассмотрим пример. Команда wc считает количество строк, слов и символов в файле. С ключом -l – только количество слов. Пусть нам надо узнать общее количество файлов, содержащихся в каталоге.
    В случае перенаправления ввода-вывода в файл, потребовалось бы сначала направить вывод программы ls в файл, после чего передать его программе wc. При этом был посчитан и этот файл (plustilino)если он был сохранен в каталоге, который анализируется).
    33

    В случае же программного конвейера между ls и wc создается канал. В результате данные, отправляемые ls на стандартный вывод, то есть монитор, оболочка Bash "перехватывает" и отправляет в канал, из которого данные передаются оболочкой на ввод wc.
    pl@comp:$ ls | wc -l
    13
    1   2   3   4   5


    написать администратору сайта