Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 семестр / OSiSP_LR_1 (1).doc
Скачиваний:
4
Добавлен:
18.02.2023
Размер:
124.93 Кб
Скачать

Возможности ввода команд

Работая в оболочке bash, Вы можете вызывать ранее введённые команды с помощью клавиш ↑ и ↓.

Существуют также bash_history (история bash) и комбинация Ctrl-R, позволяющая быстро вызывать команды из этой истории по ключевым последовательностям символов. Т.о. если Вы хотите найти последнюю смену каталога, введите "[Ctrl-R]cd", и в командной строке отобразится команда "cd".

При вводе первых символов имени файла или каталога, нажмите [Tab]. Оболочка bash автоматически заполнит его, при условии, что такой файл существует и начинается с введённых Вами символов. Например, если Вы ввели "ls br[Tab]", оболочка bash заполнит имя файла до "brushtopbm", при условии, что такой файл существует и что только он начинается на "br".

Перенаправление вывода в файл

Большинство программ при своём выполнении выводят на экран много текста. Вы можете сохранить этот текст в файл для возможного дальнейшего использования. Чтобы это сделать, воспользуйтесь оператором перенаправления ">".

Например, Вы хотите сохранить копию содержимого каталога в файл. Вы вводите команду "ls -l" с последующим ">", а также имя создаваемого файла.

В нижеприведённом примере мы отобразим содержимое каталога /usr в подробном формате, а затем запишем его в файл в наш "домашний" каталог (т.к. мы не можем создавать файлы в каталоге /usr).

sandbox@laptop:~ > cd /usr

sandbox@laptop:/usr > ls -l > ~/usr-listing.txt

sandbox@laptop:/usr > cd

sandbox@laptop:~ > ls

KDesktop public_html snapshot1.png usr-listing.txt

sandbox@laptop:~ >

Обратите внимание на вторую строку. Сначала мы дали команду вывода содержимого каталога "ls -l", затем оператором перенаправления ">" указали оболочке сохранить результаты в файл с именем listing.txt (~/usr-listing.txt). Символ "~" обозначает "домашний" каталог пользователя для возможного повторного быстрого вызова.

Приведённый символ (>) создаёт новый файл с указанным именем. Если такой файл уже существует, он очищается перед получением вывода программы. Если Вы вводите двойной символ (>>), вывод программы будет дописываться в конец существующего файла. Это нужно при перенаправлении выводов нескольких программ в один файл.

Конвейеризация вывода в программу

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

Проверим. Содержимое файла отображается командой "cat". Файл "/etc/services" содержит список распознанных TCP/IP сервисов. Отображение занимает несколько полноэкранных страниц текста.

Учтите, что в нижеприведённом примере показан фрагмент отображаемой информации.

sandbox@laptop:~ >cat /etc/services

# 0/tcp Reserved

# 0/udp Reserved

tcpmux 1/tcp # TCP Port Service Multiplexer

tcpmux 1/udp # TCP Port Service Multiplexer

compressnet 2/tcp # Management Utility

compressnet 2/udp # Management Utility

......множество других строк.....

nimhub 48002/tcp # Nimbus Hub

nimhub 48002/udp # Nimbus Hub

nimgtw 48003/tcp # Nimbus Gateway

nimgtw 48003/udp # Nimbus Gateway

Теперь команда "sort" сортирует ввод в алфавитном порядке и передаёт его на вывод. Т.о., для сортирования вывода команды "cat", мы должны конвейеризировать его на вход команды sort. Чтобы это сделать, нужно воспользоваться символом конвейеризации (|).

sandbox@laptop:~ >cat /etc/services | sort

3Com-nsd 1742/tcp # 3Com-nsd

3Com-nsd 1742/udp # 3Com-nsd

3com-amp3 629/tcp # 3Com AMP3

3com-amp3 629/udp # 3Com AMP3

......множество других строк.....

zip 6/ddp # Zone Information Protocol

zserv 346/tcp # Zebra server

zserv 346/udp # Zebra server

Одно очень популярное применение конвейера заключается в передаче вывода таких длинных команд на вход команды "less". Эта команда позволяет полностью пролистать полученную информацию.

ps -Hefw | less

Указанная командная строка отображает список системных процессов, а применение команды "less" позволяет полностью пролистать полученную информацию, используя клавиши с указанием стрелок, PgUp/PgDn; клавиша Q - выход.

Возможен одновременный ввод нескольких команд, разделённых знаком |. Например, мы можем использовать команду "cat" для отображения содержимого файла сервисов, передать результат на вход команды "sort" для сортировки, отсортированный список подать на вход команды "tail" для выделения последних 50 строк и, наконец, передать эти 50 строк на вход команды "less" для просмотра полученных результатов.

cat /etc/services | sort | tail -n 50 | less

Соседние файлы в папке 5 семестр