Что означает тильда в пути linux
Обновлено: 21.11.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 уже существует, его содержимое будет перезаписано.
Я имею в виду не ~ в домашнем каталоге, а это:
Однако, если я попытаюсь сделать это с другой точкой монтирования, например:
Как называется ~ в этом контексте? Как это работает?
Изменить: дополнительная информация основана на некоторых комментариях ниже:
- Я могу подтвердить, что foo не является именем пользователя в моей системе.
- При попытке автозаполнения ls -lah ~ отображаются не все параметры. то есть я могу cd ~qux , когда qux не отображается в автозаполнении. Опять же, qux не является пользователем моей системы.
- Если это имеет значение, /some/mount/point — это сетевая папка.
- Все детали указывают на некоторую манипуляцию с именованными путями, особенность оболочки 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, например), и команд, которые мы могли бы вводить в командной строке, но обычно этого не делали (вы узнаете об этом на следующих нескольких страницах). ).
Читайте также: