Что означает тильда в пути linux

Обновлено: 25.06.2024

См. BLT. Тильда (~) — это «ярлык» Linux для обозначения домашнего каталога пользователя. Таким образом, косая черта (~/) — это начало пути к файлу или каталогу, расположенному ниже домашнего каталога пользователя.

Что такое тильда в пути Linux?

Начинающий ~ (тильда), за которым следует косая черта в пути, понимается как ссылка на домашний каталог вашего пользователя, т. е. ~/Documents всегда означает /home/chance/Documents .

Как набрать тильду в Linux?

Чтобы получить тильду, вам, возможно, придется использовать клавишу alt gr, расположенную справа от пробела. В моей Windows 10 и Ubuntu Linux с испанской раскладкой клавиатуры это Alt Gr 4 .

Что такое тильда в командной строке?

Тильда (~) указывает, что текущий каталог является домашней папкой пользователя. Пользователь может вводить команды в командной строке, такие как cd /, что означает «сменить каталог на корневую папку». Команда «cd» позволяет пользователю просматривать различные каталоги файлов на жестком диске или в сети.

В чем разница между Тильдой и косой чертой в Linux?

5 ответов. Тильда (~) используется для обозначения домашнего каталога пользователя, тогда как косая черта (/) используется для разделителей объектов файловой системы как в абсолютных, так и в относительных путях. Также он используется для представления корневого каталога.

Для чего нужна тильда в Linux?

Тильда (~) — это «ярлык» Linux для обозначения домашнего каталога пользователя. Таким образом, тильда (~/) — это начало пути к файлу или каталогу, расположенному ниже домашнего каталога пользователя. Например, для пользователя 01 файл /home/user01/test.

Что означает Linux?

В текущем каталоге находится файл с именем «mean». Используйте этот файл. Если это вся команда, файл будет выполнен. Если это аргумент другой команды, эта команда будет использовать файл. Например: rm -f ./mean.

Что такое тильда?

Тильда – это знак "~", помещаемый поверх символа и обозначающий какое-то особое свойство. озвучивается «-тильда». Символ тильды обычно используется для обозначения оператора.

Как ввести тильду?

Устройство iOS или Android: нажмите и удерживайте клавишу A, N или O на виртуальной клавиатуре, затем выберите вариант с тильдой.

Как ввести тильду в командной строке?

В DOS вам нужно начинать со значения 0 +, необходимого для других символов, и это работает только на цифровой клавиатуре. На испанской клавиатуре вы можете нажать «Alt Gr» и «4». Эта комбинация клавиш напишет тильду где угодно, включая командную строку.

Что такое команда CD в Linux?

Команда cd («изменить каталог») используется для изменения текущего рабочего каталога в Linux и других Unix-подобных операционных системах. Это одна из самых основных и часто используемых команд при работе с терминалом Linux. … Каждый раз, когда вы взаимодействуете с командной строкой, вы работаете в каталоге.

Что означает CD в CMD?

Команда cd, также известная как chdir (сменить каталог), представляет собой команду оболочки командной строки, используемую для изменения текущего рабочего каталога в различных операционных системах.

Что означает CMD?

<р>1. Сокращение для команды, cmd — это команда Microsoft Windows, которая открывает окно командной строки Windows. Примечание. Пользователи Windows 95 и 98 могут войти в командную строку, только введя команду. Все остальные пользователи Windows могут войти с помощью команды или cmd.

Что означает R в Linux?

-r, --recursive Читать все файлы в каждом каталоге, рекурсивно, по символическим ссылкам, только если они находятся в командной строке. Это эквивалентно опции -d recurse.

Что такое косая черта в Linux?

В Linux и других Unix-подобных операционных системах косая черта используется для обозначения корневого каталога, т. е. каталога, находящегося на вершине иерархии каталогов и содержащего все другие каталоги и файлы в системе. …

В чем разница между и >> в Linux?

> используется для перезаписи («затирания») файла, а >> используется для добавления к файлу. Таким образом, когда вы используете ps aux > file , вывод ps aux будет записан в файл, и если файл с именем file уже существует, его содержимое будет перезаписано.

Я имею в виду не ~ в домашнем каталоге, а это:

Однако, если я попытаюсь сделать это с другой точкой монтирования, например:

Как называется ~ в этом контексте? Как это работает?

Изменить: дополнительная информация основана на некоторых комментариях ниже:

  1. Я могу подтвердить, что foo не является именем пользователя в моей системе.
  2. При попытке автозаполнения ls -lah ~ отображаются не все параметры. то есть я могу cd ~qux , когда qux не отображается в автозаполнении. Опять же, qux не является пользователем моей системы.
  3. Если это имеет значение, /some/mount/point — это сетевая папка.
  4. Все детали указывают на некоторую манипуляцию с именованными путями, особенность оболочки Z для расширения имени пути, но это работает и в bash, который, по-видимому, не поддерживает такие вещи, как именованные пути оболочки Z.

~foo — домашний каталог пользователя foo. Если пользователь не указан, по умолчанию используется текущий пользователь.

Но в данном случае /some/mount/point точно не мой домашний каталог. cd ~ приводит меня к /Users/$username/ -- что соответствует $HOME

Я тоже это подозревал!! За исключением того, что по какой-то причине ряд команд, которые я разместил выше, также работает в bash ( bash -c "ls ~foo/bar" ), в котором нет именованных каталогов. Кроме того, даже в zsh, если я проверю env, я не вижу никаких именованных каталогов. У меня Mac OS, и мне кажется, что это какая-то функция, специфичная для OS X.

Вы сказали только ~foo . Возьмите фактическую строку (а не пример foo ) и выполните grep «фактическое имя пользователя» /etc/passwd . ~text должен работать только для возможных имен пользователей для входа в соответствии с руководством bash (это не обязательно означает, что он действительно может войти в систему; например, в случае системных пользователей, таких как ~lp ). Во всех моих тестах ~string соответствует строке, являющейся именем пользователя.

2 ответа 2

Что такое ~foo

Цитата из руководства по bash (с дополнительным выделением):

Если слово начинается с символа тильды без кавычек (`~'), все символы, предшествующие первой косой черте без кавычек (или все символы, если косая черта без кавычек отсутствует), считаются префиксом тильды.Если ни один из символов в префиксе тильды не заключен в кавычки, символы в префиксе тильды, следующие за тильдой, рассматриваются как возможное имя для входа.

~foo расширяется до домашнего каталога пользователя foo точно так, как указано в /etc/passwd. Обратите внимание, что это может включать системные имена пользователей; это не обязательно означает, что пользователи-люди или что они действительно могут войти в систему локально (например, они могут войти с помощью ключей SSH).

На самом деле, как отмечено в комментариях, bash будет использовать функцию getpwnam. Сама эта функция определяется стандартом POSIX, поэтому должна существовать в большинстве Unix-подобных систем, включая macOS X. Эта функция не ограничивается только /etc/passwd и выполняет поиск в других базах данных, таких как LDAP и NIS. Отдельный отрывок из исходного кода bash, файл tilde.c, начиная со строки 394:

Практический пример

Ниже вы можете увидеть тесты с системными именами пользователей в моей системе. Обратите внимание на соответствующую запись пароля и результат ls ~username

Даже если, например, учетная запись _apt заблокирована, как предполагает вывод passwd -S apt, она все равно отображается как возможное имя для входа:

Обратите внимание: это не особенность macOS, а особенность оболочки.

Я пытаюсь извлечь другую часть установщика библиотеки Nvidia cuda. Я использую следующую команду:

И я получаю следующее сообщение:

И когда я набираю команду с буквальным адресом моего дома, она работает отлично.

Я запутался, не должен ли ~ совпадать с /home/likewise-open/XXX/username?

и это работает, но я не знаю, почему это не позволяет ~


Связано: "Префикс тильды" состоит из символа без кавычек в начале слова, за которым следуют все символы, предшествующие первому символу без кавычек"

4 ответа 4

Bash расширяет ~, только если это начало слова. Вы можете увидеть это между следующими командами:

Bash ищет отдельные символы ~ и ~/ для этой замены. Никакая другая комбинация или цитируемая версия не будут работать.

$HOME работает, потому что подстановка переменных более надежна ($ – это специальный символ, а ~ – в гораздо меньшей степени):

Хотя мы говорим о ~ , на самом деле у него есть еще пара других вариантов замены:

  • ~+ текущий рабочий каталог (чтение из $PWD )
  • ~- предыдущий рабочий каталог (чтение из $OLDPWD )

Как и в случае простого ~ , они могут иметь дополнительные пути в конце, и опять же, они должны быть префиксом к слову, иначе Bash их проигнорирует.

Подробнее об этом можно прочитать в man bash | меньше -p ' Тильда'

Стоит отметить, что zsh делает (или, скорее, может быть настроен) расширять ~ после = тоже. Среди прочих удобных улучшений по сравнению с bash.

@JanHudec Нет, это сложнее; Речь идет не о расширении после = ; речь идет о расширении в начале правой части присваивания переменной. Это делает наш случай немного более запутанным при внимательном рассмотрении - см. мой ответ. И в этом zsh ничем не отличается от bash; Описание для 'zsh' немного загадочно: info --subnodes zsh | less +/'14.7.4 Notes' (man-страницы zsh отсутствуют)

@VolkerSiegel: zsh легко настраивается. В моем zsh echo -extract=~/test результат -extract=/home/user/test . Он включается опциями MAGIC_EQUAL_SUBST. Кстати, у меня все справочные страницы zsh в порядке.

@JanHudec Нет сомнений в том, что zsh можно настраивать - и другие улучшения; Я ожидал, что MAGIC_EQUAL_SUBST (описанный в 14.7.4) по умолчанию отключен и используется редко; Теперь, очевидно, более актуально, если он у вас вообще включен. После того, как я приведу раздел с примерами в хорошую форму, это станет хорошим дополнением.

@JanHudec Что касается справочных страниц zsh, то они какое-то время отсутствовали в пакетах Ubuntu, спасибо за подсказку, не знал, что это исправлено; Глядя на ошибку, она исправлена ​​для утопии, но не надежна - это объясняет! (Панель запуска: отсутствуют все справочные страницы zsh и встроенные файлы справки, а также AU: отсутствует zsh man. )

Просто исправил

Эта команда показывает сообщение об ошибке "ОШИБКА: извлечь: путь должен быть абсолютным":

Ошибка не помогает - программа уже слишком запуталась.
Вы уже знаете, что ошибка связана с ~ , поскольку вместо этого она работает с $HOME.

Проблема: ~ заменяется только в начале слова.

Например, это работает с тильдой:

Если вам нужен синтаксис параметра с = , использование $HOME вместо ~ является наиболее чистым решением;

Практика

Что вам следует знать:

Есть особые случаи, когда ~ get раскрывается не в начале слова: как часть присваивания переменной, сразу после = . Что, конечно, сбивает с толку.

Другой важный особый случай — это использование с такими переменными, как PATH. В присваиваниях переменных ~ также раскрывается после : , как и после первого = .

Значение тильды

В оболочке ~ тильда на самом деле не является путем. Он лишь заменяется путем $HOME несколько раз.

Это что-то вроде сокращения или аббревиатуры, предоставленной оболочкой.
Его нельзя использовать как путь вообще, оболочка "расширяет" его до пути только в очень особых местах.
И даже если он расширен, это может быть что-то еще, кроме домашнего каталога.

  • Раскрывается только в начале слова или при присвоении переменной после : или =
  • Расширяется только в том случае, если не заключен в кавычки.
  • Он расширяется до $HOME только в том случае, если в слове перед символом / нет других символов.

Проблема в командной строке

Согласно этому, проблема в вашей команде в том, что тильда в

не раскрывается, так как это не один из перечисленных случаев. Вот и все.

Решение может заключаться в том, чтобы сделать тильду первым символом слова без кавычек, без каких-либо других символов перед следующим символом / — именно это вы получаете, когда используете параметр с пробелом перед аргументом параметра:

Другим решением может быть использование $HOME вместо этого. В сценарии это обычно лучший выбор.

Сообщение об ошибке

Но как появляется сообщение об ошибке
"ОШИБКА: извлечение: путь должен быть абсолютным". ?
вписаться во все это?

Мы знаем, что тильда не расширилась. Это означает, что программа получила текст аргумента, включая ~ , но без /home/auser в качестве пути. Этот путь ~/Downloads/nvidia_installers, но теперь там нет оболочки, поэтому тильда не имеет особого значения. Это просто обычное имя каталога. Как и любой другой путь вида foo/bar/baz , это относительный путь

Другое использование

Если есть символы после ~ , как в ~alice - со всеми остальными правилами, указанными выше, - и есть имя пользователя alice , которое вместо этого расширяется до домашнего каталога alice, скажем, home/alice .
Кроме того, если вы bob , ~ заменится на /home/bob , а ~bob заменится на то же самое.

Вариант ~+ расширяется до текущего каталога, $PWD

Чтобы обратиться к предыдущему каталогу, в котором вы находились до последнего cd , вы можете использовать ~- , который расширяется до $OLDPWD .

Если вы используете pushd и popd вместо cd , вы уже знаете, что доступ к стеку каталогов можно получить как ~-2 .

Подробнее

Все случаи, когда ~ заменяется на путь, обрабатываются оболочкой. Для других программ ~ — это обычный символ имени файла.

Точное определение внутри оболочки см. в соответствующем разделе man bash.
Обратите внимание, что замена ~ на $HOME является лишь одним из многих случаев: "Если это имя для входа пустое строка, тильда заменяется значением параметра оболочки HOME.":

Тильда (~) — это «ярлык» Linux для обозначения домашнего каталога пользователя. Таким образом, косая черта (~/) — это начало пути к файлу или каталогу, расположенному ниже домашнего каталога пользователя.

Что такое тильда в командной строке?

Тильда (~) указывает, что текущий каталог является домашней папкой пользователя. Пользователь может вводить команды в командной строке, такие как cd /, что означает «сменить каталог на корневую папку». Команда «cd» позволяет пользователю просматривать различные каталоги файлов на жестком диске или в сети.

Что такое Тильда в терминале Linux?

Что такое Тильда? Tilda — это эмулятор терминала, и его можно сравнить с другими популярными эмуляторами терминала, такими как gnome-terminal (Gnome), Konsole (KDE), xterm и многими другими.… Есть возможность настроить горячие клавиши для привязки клавиш, изменить внешний вид и множество опций, влияющих на поведение Тильды.

Что делает тильда в bash?

Оболочка Bash предоставляет некоторые переменные с префиксом «~» (название тильды), которое называется расширением тильды. Они являются синонимами содержимого других переменных в вашей оболочке. Расширение тильды — это процесс преобразования этих сокращений в имена каталогов, которые они обозначают.

Что означает в Linux?

Для этого конкретного случая следующий код означает: Кто-то с именем пользователя «user» вошел в систему с именем хоста «Linux-003». «~» — представляет домашнюю папку пользователя, условно это будет /home/user/, где «user» — это имя пользователя, может быть что угодно, например, /home/johnsmith.

Как сделать тильду в Linux?

Нажмите Ctrl плюс Shift плюс ~ плюс n, чтобы получить тильду «ñ». Вы также можете ввести код Alt плюс 164 или Alt плюс 0241.

Что такое тильда?

Тильда – это знак "~", помещаемый поверх символа и обозначающий какое-то особое свойство. озвучивается «-тильда». Символ тильда обычно используется для обозначения оператора. В неформальном использовании слово «тильда» часто произносится как «твиддл» (Дербишир, 2004 г., стр. 45).

Что такое команда CD в Linux?

команда cd в Linux, известная как команда изменения каталога. Он используется для изменения текущего рабочего каталога. Синтаксис: $ cd [каталог] Для перемещения внутри подкаталога: для перемещения внутри подкаталога в Linux мы используем $ cd [имя_каталога]

Какой лучший терминал для Linux?

Топ-7 лучших терминалов Linux

  • Алакритти. Alacritty был самым популярным терминалом Linux с момента его запуска в 2017 году. …
  • Якуаке. Возможно, вы еще этого не знаете, но вам нужен выпадающий терминал в вашей жизни. …
  • URxvt (rxvt-юникод)…
  • Термит. …
  • СТ. …
  • Терминатор. …
  • Китти.

Что такое обратная кавычка в Bash?

Обратный апостроф делает именно то, о чем вы говорите. Вы установили переменную в целое число. Когда вы поместите эту переменную в обратные кавычки, bash попытается выполнить ее как команду. Поскольку это не команда, вы получаете ошибку, которую видели. То, что вы хотите сделать, это просто: $ b=5; эхо $b.

Что такое [email protected] Bash?

bash [имя файла] запускает команды, сохраненные в файле. [email protected] относится ко всем аргументам командной строки сценария оболочки. $1 , $2 и т. д. относятся к первому аргументу командной строки, второму аргументу командной строки и т. д.… Предоставление пользователям возможности решать, какие файлы обрабатывать, является более гибким и более совместимым со встроенными командами Unix.

Как работают сценарии Bash?

Сценарий Bash – это обычный текстовый файл, содержащий ряд команд. Эти команды представляют собой смесь команд, которые мы обычно вводим в командной строке (таких как ls или cp, например), и команд, которые мы могли бы вводить в командной строке, но обычно этого не делали (вы узнаете об этом на следующих нескольких страницах). ).

Читайте также: