Командная строка UNIX
Материал из Xgu.ru
Командная строка состоит из нескольких элементов:
- команда [опции...] [аргументы...]
В целом, командная строка — это предложение, которое говорит системе, что нужно выполнить какую-либо операцию. Команда говорит что нужно сделать; опции говорят как сделать; и аргументы — с чем.
Например, команда:
ls -l /etc
состоит из таких элементов:
- ls — команда, которая говорит, что нужно показать список файлов (что);
- -l — опция, которая говорит, что нужно показать список файлов в виде таблицы (как);
- /etc — аргумент, который говорит о том, что операцию нужно выполнить с каталогом /etc (с чем).
Командой может быть
- собственно команда командного интерпретатора (например, echo),
- алиас,
- функция,
- программа на диске (например, ls).
[править] Специальные символы и правила экранирования в командной строке
[править] Вопросы и ответы
[править] Как в скрипте сохранить аргументы командной строки в таком виде, с теми же кавычками и группировками, как они были переданы?
Проблема в том, что когда шелл получает командную строку, он разбирает (парсит, parse) её, и сама строка в том виде, в каком она была передана, уже не существует. Остаётся только её разобранный вариант, из которого, при желании, можно воссоздать очень близкую копию строки, которая хотя в небольших деталях может и отличаться (например, в типе кавычек), но самое главное, что при повторном парсинге она будет давать такой же результат.
В самом шелле для этого нет подходящих инструментов, но это можно довольно легко сделать с помощью Python (например) или некоторых других языков программирования:
$ _quote() { python -c 'import sys; import pipes; print " ".join(pipes.quote(s) for s in sys.argv[1:])' "$@"; } $ _quote 1 2 3 1 2 3 $ _quote 1 "2 \"3" 1 '2 "3' $ _quote 1 "2 3" 1 '2 3'
(в новых версиях Python (начиная с 3.3) нужно использовать не pipes.quote, а shlex.quote).
Интерфейс командной строки | |
---|---|
Основы | Потоки ввода/вывода • Командная строка |
Пользовательское окружение | Оболочка интерпретатора • Приглашение командного интерпретатора • bash_completion • shopt |
Скриптинг | Скриптинг • Интерпретатор • Shebang • Shell-скриптинг • shell-framework • expect • awk • sed |