Скачать презентацию nix command line command line utilities redirection piping exit code Скачать презентацию nix command line command line utilities redirection piping exit code

2354020293d790c7f2eda0229fd40308.ppt

  • Количество слайдов: 19

*nix command‐line, command‐line utilities redirection, piping, exit code grep, find, du *nix command‐line, command‐line utilities redirection, piping, exit code grep, find, du

Standard streams(Стандартные потоки) • stdin/stdout/stderr – имеют тип FILE*, определены в <stdio. h> • Standard streams(Стандартные потоки) • stdin/stdout/stderr – имеют тип FILE*, определены в • Стандартный workflow программа читает из stdin, и пишет в stdout или stderr

Standard streams(Стандартные потоки) • Обычно(не обязательно), эти дескрипторы открыты уже в момент запуска исполняемого Standard streams(Стандартные потоки) • Обычно(не обязательно), эти дескрипторы открыты уже в момент запуска исполняемого файла(поэтому с целью экономии дескрипторов их можно сразу закрыть fclose(stdin)). • Посмотреть открытые дескрипторы у процесса cat /proc/$PROC_PID/fd, где $PROC_PID – pid процесса.

Redirecting(Перенаправление) • Перенаправление ‐ это возможность позволяющая перенаправлять стандартные потоки в определенное пользователем место, Redirecting(Перенаправление) • Перенаправление ‐ это возможность позволяющая перенаправлять стандартные потоки в определенное пользователем место, например в файл. • выполняет command, помещая стандартный вывод в file, при этом предыдущее содержимое файла затирается: command > file

Redirecting(Перенаправление) • выполняет command, помещая стандартный вывод в file, дописывает в конец файла: command Redirecting(Перенаправление) • выполняет command, помещая стандартный вывод в file, дописывает в конец файла: command >> file • Выводит stderr(дескриптор 2) в file: command 2> file • выполняет command, используя в качестве источника ввода file (вместо клавиатуры): command < file

Piping(Конвейер) • Конвейеры — возможность нескольких программ работать совместно, когда выход одной программы непосредственно Piping(Конвейер) • Конвейеры — возможность нескольких программ работать совместно, когда выход одной программы непосредственно идет на вход другой без использования промежуточных временных файлов. Синтаксис: command 1 | command 2 • Цепочка конвейеров: command 1 | command 2 | command 3

Piping(Конвейер) • Выполняет command 1 используя её поток вывода, как поток ввода при выполнении Piping(Конвейер) • Выполняет command 1 используя её поток вывода, как поток ввода при выполнении command 2(command 1 | command 2), что равносильно использованию двух перенаправлений и временного файла: command 1 > temporary. File command 2 < temporary. File rm temporary. File

Exit code(Exit status)(Код возврата) • Код завершения программы, если. cpp фаил содержит любую из Exit code(Exit status)(Код возврата) • Код завершения программы, если. cpp фаил содержит любую из строчек return nnn; exit(nnn); return(nnn); • То nnn и есть код возврата. Изменяется от 0 до 255. Обычно считается, что при успешном завершение программы код возврата должен быть 0.

Exit code(Exit status)(Код возврата) • Для того, чтобы посмотреть exit code последний отработавшей программы, Exit code(Exit status)(Код возврата) • Для того, чтобы посмотреть exit code последний отработавшей программы, нужно набрать echo $? • Пусть дан фаил main. c: int main() {return ‐ 1; } • $ gcc main. c • $. /a. out • $ echo $? • Что будет выведено?

grep(1) • grep — утилита командной строки, которая находит на вводе строки, отвечающие заданному grep(1) • grep — утилита командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению, и выводит их, если вывод не отменён специальным ключом. Название представляет собой акроним английской фразы «search globally for lines matching the regular expression, and print them» — «искать везде строки, соответствующие регулярному выражению, и выводить их» . • SYNOPSIS: grep [OPTIONS] PATTERN [FILE. . . ]

grep(1) • Поиск всех строк в которых встречается слово stdin в файле stdio. h grep(1) • Поиск всех строк в которых встречается слово stdin в файле stdio. h и вывод этих строк с их номерами: grep ‐n stdio. h • ‐‐color добавляет подсветку(рекомендуется дописать в ~/. bashrc: alias grep=‘grep ‐‐color’ • Поиск всех строк в которые входят stdin рекурсивно из текущей директории grep stdin –r. /

grep(1) • Флаги: • ‐i регистронезависемый поиск • ‐с выводит количество найденных строк(без самих grep(1) • Флаги: • ‐i регистронезависемый поиск • ‐с выводит количество найденных строк(без самих строк). • ‐l выводит только имена файлов • ‐r рекурсивный поиск • ‐х для точного соответствия шаблона и строки. • ‐rl годная комбинация

grep(1) • Поиск по Reg. Exp. ‐ соответствует любому единичному символу. * ‐ соответствует grep(1) • Поиск по Reg. Exp. ‐ соответствует любому единичному символу. * ‐ соответствует одному или нескольким единичным символам, которые предшествуют звездочке. ^ ‐ соответствует регулярному выражению в начале строки. $ ‐ соответствует регулярному выражению в конце строки. • Пример: grep ‐rl '. *0111. '. /

Chained pipelines • Эквивалентом для grep –c stdin stdio. h будет grep stdin stdio. Chained pipelines • Эквивалентом для grep –c stdin stdio. h будет grep stdin stdio. h | wc – l, где wc –l подсчитывает количество строк. • Очень удобно искать по именам файлов в текущей директории: ls | grep main • Как сделать поиск по symlink?

find(1) • find — утилита поиска файлов, используемая в UNIX‐подобных операционных системах. Ищет рекурсивно. find(1) • find — утилита поиска файлов, используемая в UNIX‐подобных операционных системах. Ищет рекурсивно. • SYNOPSIS: find [‐H] [‐L] [‐P] [‐D debugopts] [‐ Olevel] [path. . . ] [expression]

find(1) • Поиск в текущей директории рекурсивно: find. ‐name '*io*‘. Возможна не отсортированость результатов! find(1) • Поиск в текущей директории рекурсивно: find. ‐name '*io*‘. Возможна не отсортированость результатов! Использовать find. ‐name '*io*‘ | sort • Поиск в нескольких директориях: find /usr/local/man /opt/local/man ‐name 'my*‘ • Подсветки нету =(

find(1) • Поиск файлов определенного типа: find. ‐ name find(1) • Поиск файлов определенного типа: find. ‐ name "my*" ‐type f, где типом может быть f=regular file, d=directory, l=symlink, etc. (see man find). • Есть разные критерии поиска: по времени, по правам доступа, по размеру, etc.

find(1) • Например, найдем файлы, которые не читали более чем (условие «более чем» задается find(1) • Например, найдем файлы, которые не читали более чем (условие «более чем» задается знаком «+» ) 30 дней: find. ‐atime +30 –print • Критерий поиска время: • ‐atime N ‐ Последний раз к файлу обращались N дней назад. • ‐mtime N ‐ Последнее изменение файла было N дней назад.

du(1) • du – disk usage, стандартная Unix программа для оценки занимаемого файлового пространства. du(1) • du – disk usage, стандартная Unix программа для оценки занимаемого файлового пространства. • Подсчитать итоговый размер заданной директории в байтах: du ‐s /bin • Подсчитать итоговый размер занимаемый текущей директорией и вывести в удобной для человека форме: du ‐sh