Принимают ли параметры командной строки знак равенства между именем параметра и значением?

Похоже, вы не установили библиотеки libreadline . Я не знаю, какой дистрибутив Linux вы используете. Для Ubuntu установите библиотеку с:

sudo apt-get install libreadline7

иначе путь к вашей библиотеке указан неправильно.

8
17.03.2020, 16:26
1 ответ

For command-line programs in general, is there a rule about whether an equals sign is allowed/required between the switch and the value?

Нет, нет. В открытом исходном коде существует множество конкурирующих стандартов. мир и вычисления в целом(обязательно xkcd)и каждый может придумать новые правила и стандарты в любое время они хотят. Аргумент утилиты POSIX Синтаксис например вообще не упоминает =например в то время как мужчина getopt упоминает Это. На практике вы можете встретить все виды командной строки программы:

Те, которые принимают длинное значение параметра после =или после пробела:

$ touch a b c d
$ ls --format=verbose
total 0
-rw-r--r-- 1 ja users 0 Mar 17 14:39 a
-rw-r--r-- 1 ja users 0 Mar 17 14:39 b
-rw-r--r-- 1 ja users 0 Mar 17 14:39 c
-rw-r--r-- 1 ja users 0 Mar 17 14:39 d
$ ls --format verbose
total 0
-rw-r--r-- 1 ja users 0 Mar 17 14:39 a
-rw-r--r-- 1 ja users 0 Mar 17 14:39 b
-rw-r--r-- 1 ja users 0 Mar 17 14:39 c
-rw-r--r-- 1 ja users 0 Mar 17 14:39 d

Те, которые не принимают длинное значение опциона после =, но требуют пробел:

$ readelf  -a main | grep  'program interpreter'
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
$ patchelf --set-interpreter=fake main
patchelf: getting info about '--set-interpreter=fake': No such file or directory
$ patchelf --set-interpreter fake main
$ readelf  -a main | grep  'program interpreter'
      [Requesting program interpreter: fake]

Те, которые принимают значение после =, но не принимают опционы с -или--:

dd if=/dev/urandom of=~/Desktop/test.txt bs=1M count=3

Может быть много причин, по которым данная программа командной строки принимает исходные данные заданным образом :авторское видение, потому что никого это не волнует, потому что автор не знал, что кто-то уже придумал стандартом, потому что программа была перенесена на Unix из разных операционная система с совершенно другими соглашениями или была сделана так, чтобы она выглядела так, был .

3
28.04.2021, 23:20

Теги

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