По какой-то странной причине я пытался использовать «» в качестве разделителя слов в идентификаторах, например:
$ export foo'bar=1
>
> ^C
$
Результат такой, как показано выше, , то есть приглашение изменяется на «>» и система, очевидно, ждет дополнительной информации с моей стороны. Как видите, мне пришлось нажать Ctrl-C, чтобы сбежать. То же самое происходит с использованием других команд, таких как
$ ls foo'bar
$ mkdir foo'bar
Мне любопытно, во всем этом смысл, вот что имеет особое значение «» в командах терминала (настолько особенных, что они разбираются на части) даже внутри идентификаторов).
Дополнительно: Кроме того, я также хотел бы знать набор специальных или иных недопустимых символов в именах файлов и папок, как в Unix-подобных системах, так и в системах Windows (чтобы получить общее подмножество безопасных из них) (в частности, как насчет всех не-ASCII?).
Спасибо, Денис.
Символ 'является очень мощным символом всякий раз, когда используется в любой команде оболочки. В основном '(знаки апостроф) отключает все виды преобразований или модификаций. Он рассматривал бы все, что заключено в метки, как единый объект, то есть один параметр. Абсолютно никакой замены или расширения не будет.
Пример:
$ echo '$HOME'
выдаст на выходе строку $HOME
и не выведет путь к вашей домашней директории. Поскольку одинарные кавычки предотвращают любое расширение, подстановка и простое рассматривает все, что присутствует, как простой параметр.
Если вы хотите использовать апостроф как есть, вы должны избежать его:
$ mkdir foo\'bar
$ cd foo\'bar
Если он не сбежал, он будет ждать закрытия своей пары, как это произошло в вашем Первый пример.
Итак, исправлено, ваша команда будет:
$ export foo\'bar=1
ПРИМЕЧАНИЕ: Как заметил Милан Тодорович, это не будет действительным, потому что вы не можете использовать апостроф в этом случае. [ 1110]
Символ '
является специальным символом. Вы используете его, чтобы отметить часть записи командной строки, которая не будет изменена (например, нет замены для подстановочных знаков). Например:
$ ls 'bla*'
ls: cannot access bla*: No such file or directory
Это означает, что аргументом для ls
было bla*
, а не все, что начинается с bla
.
Причина, по которой вы получаете >
символ, заключается в том, что вы должны использовать один '
для открытия и один '
для закрытия части, которая не будет изменена.
Если вы хотите использовать '
в именах папок, вы должны экранировать его следующим образом: \'
. Поэтому, если вы хотите отобразить папку с именем foo'bar
, вы должны набрать ls foo\'bar
.
О, и я не уверен, возможно ли использовать '
в именах переменных среды. Я думаю, что вы не можете использовать export foo\'bar=1
,
Надеюсь, это поможет.