Какая магия "-" (тире) в параметрах командной строки?
Примеры:
-
Создайте образ ISO и сожгите его непосредственно на компакт-диске.
mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -
-
Переход в предыдущий каталог.
cd -
-
Слушайте порт 12345 и отправленные на него данные.
nc -l -p 12345 | tar xvzf -
Какова цель черточки и как ее использовать?
Ответы
Ответ 1
Если вы имеете в виду голый -
в конце команды tar
, общий для многих команд, которые хотят использовать файл.
Он позволяет вам указывать стандартный ввод или вывод, а не фактическое имя файла.
Это случай для вашего первого и третьего примера. Например, команда cdrecord
принимает стандартный ввод (поток изображений ISO, созданный mkisofs
), и записывая его непосредственно на /dev/dvdrw
.
С помощью команды cd
каждый раз, когда вы меняете каталог, он сохраняет каталог, из которого вы пришли. Если вы выполняете cd
со специальным -
"именем каталога", он использует этот запомненный каталог вместо реального. Вы можете легко переключаться между двумя каталогами довольно быстро, используя это.
Другие команды могут рассматривать -
как другое специальное значение.
Ответ 2
Это не волшебство. Некоторые команды интерпретируют -
как пользователя, желающего читать из stdin или write to stdout; в оболочке нет ничего особенного.
Ответ 3
Перенаправление с или на стандартный stdin
или стандартный stdout
.
Смотрите: http://tldp.org/LDP/abs/html/special-chars.html#DASHREF2
Ответ 4
Магия находится в соглашении. На протяжении тысячелетий люди использовали "-", чтобы отличать варианты от аргументов и использовали "-" в имени файла, чтобы обозначать либо stdin, либо stdout, если это необходимо. Не стоит недооценивать силу конвенции!
Ответ 5
-
означает то, что каждая команда хочет иметь в виду. Существует несколько общих конвенций, и вы видели примеры большинства из них в других ответах, но ни один из них не является 100% универсальным.
Нет ничего волшебного в отношении символа -
в отношении оболочки (за исключением того, что сама оболочка и некоторые ее встроенные команды, такие как cd
и echo
, используют ее обычными способами), Некоторые символы, такие как \
, '
и "
, являются "магическими", со специальными значениями, где бы они ни появлялись. Это "метасимволы оболочки". -
не так.
Чтобы узнать, как используется данная команда -
, прочитайте документацию для этой команды.
Ответ 6
Это означает использовать стандартный поток ввода программы.
В случае cd
это означает что-то другое: перейти на предыдущий рабочий каталог.