что делает '-', обозначают в ударе?

Каково точно использование '-' в ударе? Я знаю, что они могут использоваться для

  1. cd - # взять Вас к старому 'существующему рабочему каталогу'
  2. some stream generating command | vim - # так или иначе энергия получает текст.

Мой вопрос - то, что точно - в ударе? В каком другие контексты я могу использовать его?

Отношения Arun

9
задан glglgl 25 July 2014 в 14:04
поделиться

4 ответа

- в bash не имеет никакого значения как отдельный аргумент (я бы не стал говорить, что он вообще не имеет значения в shell - он, например, используется в расширении, например, ls [0-9]* перечисляет все файлы, начинающиеся с цифры).

Что касается самостоятельного значения параметра, то bash не будет делать с ним ничего особенного и передаст команде как есть.

Что команда делает с ним, зависит от каждой отдельной программы - это может быть практически все, что угодно.

Существует общепринятое соглашение, что аргумент - указывает программе, что входные данные должны быть прочитаны из STDIN, а не из файла. Опять же, это просто способ кодирования многих программ и технически не имеет никакого отношения к bash.

3
ответ дан 4 December 2019 в 10:03
поделиться

From tldp:

Это можно сделать, например, используя дефис (-), чтобы указать, что программа должна читать из трубы

Это объясняет, как ваш пример vim получает свои данные.

1
ответ дан 4 December 2019 в 10:03
поделиться

Это зависит от приложения.

cd -

возвращает в последний каталог, в котором вы были.

Часто - означает stdin или stdout . Например:

xmllint -

не проверяет файл XML, но проверяет XML на stdin . Пример:

xmllint - <<EOF
<root/>
EOF

То же самое верно для cat :

cat -

читает из stdin . Последний пример, где - означает stdout :

wget -O- http://google.com

получит google.com по HTTP и отправит его на stdout .

Кстати: это не имеет ничего общего с вашей оболочкой (например, bash ). Это всего лишь семантика вызываемого приложения.

17
ответ дан 4 December 2019 в 10:03
поделиться

Здесь нет универсального правила.

В зависимости от контекста оно меняется

  1. Это довольно полезно, когда вам нужно что-то сделать несколько раз в двух директориях. См. #4 здесь: http://www.thegeekstuff.com/2008/10/6-awesome-linux-cd-command-hacks-productivity-tip3-for-geeks/

  2. Во многих местах это означает STDIN.

0
ответ дан 4 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: