LINUX.ORG.RU

Символ "-" в начале имени файла

 ,


0

2

Как правильно с этим работать?

$ echo ololo > -111-
$ cat -111-
cat: неверный ключ — «1»
По команде «cat --help» можно получить дополнительную информацию.
$ cat "-111-"
cat: неверный ключ — «1»
По команде «cat --help» можно получить дополнительную информацию.
$ cat "\-111\-"
cat: '\-111\-': Нет такого файла или каталога
$ cat ./-111-
ololo
Помогает только если подставлять путь до файла.

★★★★★

Любой аргумент, включая имя файла, передаётся обычной строкой, ключи и флаги как раз, обычно, отличаются от файлов тем, что имеют - перед именем. Таким образом иногда можно ставить ключи после имён файлов. Некоторые программы понимают аргумент -- как окончание списка ключей и считают любой аргумент, идущий после — файлом.

$ cat -- -111- 
ololo
anonymous
()

Помогает только если подставлять путь до файла.

Ну так и подставляйте путь до файла. Имхо, вполне нормальный выход из положения.

QsUPt7S
()
Ответ на: комментарий от sislochka

мя просто рисует в профиле.

Язабан.

X512 ★★★★★
()

cat -- -111-

К вашим услугам.

beastie ★★★★★
()

правильно - не использовать sh/bash и им подобные, quoting hell у них семейное

anonymous
()
Ответ на: комментарий от anonymous

А при чём здесь sh/bash и quoting hell, когда ТС спрашивал про cat и имена файлов начинающихся с ‘-’?

QsUPt7S
()
16 января 2023 г.

Прописывать путь, ибо мало того что программа в непонятках, так ещё потом читающий скрипт будет бровки сводить что это заключи такие странные.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от superuser

Не буду ибо

Некоторые программы понимают аргумент --

dron@gnu:~$ gcc -c  -test.c
gcc: error: unrecognized command-line option ‘-test.c’
gcc: fatal error: no input files
compilation terminated.
dron@gnu:~$ clang -c  -test.c
clang: error: unknown argument: '-test.c'
clang: error: no input files
dron@gnu:~$ 
dron@gnu:~$ gcc -c -- -test.c
gcc: error: unrecognized command-line option ‘--’
gcc: error: unrecognized command-line option ‘-test.c’
gcc: fatal error: no input files
compilation terminated.
dron@gnu:~$ clang -c -- -test.c
error: unknown argument: '-test.c'
dron@gnu:~$

А некоторые нет, это не решение. Решение это указывать путь, полный, относительный ./ или через pwd если файлы под боком.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

The Open Group Base Specifications Issue 7 IEEE Std 1003.1-2008, 2016 Edition 12. Utility Conventions
12.1 Utility Argument Syntax

https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/

PS: да, правильно будет писать полный путь к файлу, что всегда рекомендуется, да еще и в кавычках.

soomrack ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.