Аргументы командной строки - это дополнительные данные, которые передаются программе при ее запуске. Они позволяют гибко настраивать поведение программы без необходимости изменять ее исходный код.
Синтаксис
Bash
команда аргумент1 аргумент2 ... аргументN
- команда: Имя исполняемого файла.
- аргумент1, аргумент2, ... аргументN: Значения, передаваемые программе. Аргументы разделяются пробелами.
Пример
Bash
ls -la /home
В этом примере:
- ls - это команда для вывода списка файлов.
- -la - это аргументы, которые указывают, что нужно выводить подробную информацию о файлах и каталогах в длинном формате.
- /home - это аргумент, указывающий на каталог, в котором нужно выполнить команду.
Как программа получает аргументы?
Внутри программы аргументы командной строки доступны через специальные переменные. В разных языках программирования эти переменные называются по-разному:
- C, C++: argc (количество аргументов) и argv (массив указателей на строки, содержащих аргументы).
- Python: sys.argv (список строк, где первый элемент - имя программы).
- Bash: $1, $2, $3 и т.д. (для доступа к отдельным аргументам), $@ (для доступа ко всем аргументам в виде списка), $* (для доступа ко всем аргументам в виде одной строки).
Важные моменты
- Порядок аргументов: Порядок аргументов важен. Программа интерпретирует их в том порядке, в котором они переданы.
- Пробелы: Аргументы, содержащие пробелы, должны быть заключены в кавычки. Например:
Bash
find . -name "файл с пробелами"
- Специальные символы: Некоторые символы (например, |, &, ;) имеют специальное значение в командной строке. Чтобы передать их как часть аргумента, необходимо экранировать их обратным слешем (\).
- Опции: Многие программы поддерживают опции, которые начинаются с дефиса (-). Опции могут принимать значения или не принимать. Например:
Bash
grep -i "pattern" file.txt
- Здесь -i - это опция, которая указывает на поиск без учета регистра.
Пример на Bash
Bash
#!/bin/bash
# Выводим все переданные аргументы
echo "Количество аргументов: $#"
for arg in "$@"
do
echo "Аргумент: $arg"
done
Заключение
Передача аргументов командной строки - это мощный инструмент для создания гибких и настраиваемых скриптов и программ. Понимание этого механизма позволяет эффективно взаимодействовать с различными инструментами командной строки в Linux.