Как работает ~ /? [дубликат]

В терминале один из способов ссылки на домашний каталог - использовать ~ / . Я не понимаю, как это работает, потому что вывод file ~ / :

/home/admin/: directory

, и просто запуск ~ / приводит к:

-bash: /home/admin/: Is a directory

, так что конвертируется ~ / в / home / admin ?

~ / , похоже, также работает в / bin / dash , поэтому я также знаю, что это не специфично для bash.

10
задан 24 April 2018 в 07:34

2 ответа

Это - расширение тильды.

Расширение тильды требуется POSIX (см., что сначала связанная страница), и появляется во всех современных оболочках стиля Границы. Это включает популярные оболочки bash, ksh93, и zsh, но также и больше минималиста окружает как mksh, dash, и busybox ash.

На практике различные совместимые с POSIX оболочки иногда отличаются по точным деталям расширения тильды, обоих в неуказанном случае это HOME использовался бы, но сброшен или пуст, и разрешать ~ нотация, которая будет использоваться для других целей, чем расширение корневых каталогов пользователей. Например, расширение тильды в bash также обеспечивает сокращение от доступа к значениям PWD и OLDPWD переменные, с ~- и ~+, соответственно.

Однако в типичных случаях, это работает о том же через оболочки стиля Границы. Это типичные случаи (но обратите внимание, что этот способ разделить их не официален, это - просто мой способ представить материал):

  • ~ или ~/ отдельно расширяется до Вашего корневого каталога.
  • ~/ сопровождаемый большим количеством компонентов контура расширяется до пути, запускающегося в Вашем корневом каталоге.
  • ~username или ~username/ отдельно расширяется до корневого каталога пользователя, имя пользователя которого username.
  • ~username/ сопровождаемый большим количеством компонентов контура расширяется до пути, запускающегося в корневом каталоге пользователя, имя пользователя которого username.
15
ответ дан 23 November 2019 в 04:22

~ 'сокращение' от $HOME

~ 'краткий' путь состоит в том, чтобы записать $HOME другими словами, Ваш корневой каталог. Это работает в оболочках (например. bash) и назван 'расширением тильды'.

Если Вы добавляете запаздывающую наклонную черту, Вы подразумеваете, что говорите о каталоге.

Примеры:

$ ls -d ~/
/home/sudodus/
$ ls -d ~
/home/sudodus
$ ls -d $HOME
/home/sudodus

$ sudo -i
[sudo] lösenord för sudodus: 
# ls -d ~/
/root/
# ls -d ~
/root
# exit
logout

$ ls xournal.png
xournal.png

$ LANG=C ls xournal.png/
ls: cannot access 'xournal.png/': Not a directory
5
ответ дан 23 November 2019 в 04:22

Другие вопросы по тегам:

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