LINUX.ORG.RU

> Ведь этот символ используется в качестве имени домашней директории...

Tilde-expansion происходит только если тильда начинает слово (word,
в том смысле, как его понимает shell). Так как разделители слов в
именах файлов встречатся не могут, опасность возникает только если
имя файла начинается с тильды, а все остальное совпадает с чьим-нибудь
логином.

К слову, tilde-expansion умеет куда больше, чем подставлять
домашнюю директорию.

vnp
()

Тильда используется например для создания резервных копий файлов в Midnight Commander и других программах.

mr_grind
()

Начнем с того, что tilde expansion -- это cвойство shellа а не файловой системы. Любое же shell expansion можно предотвратить используя одинарные кавычки или backslash. Есть правда небольшая вероятность, что некоторая программа будет делать tilde expansion но не обрабатывать кавычек итп -- но вообще-то обычно все это делается через wordexp(3)

aa5779
()

Кавычки в такой же степени свойства shell как и tilde expansion. Соответственно не очень понятно замечание о некоторых программах, которые что-то там с ними будут делать. Нет тильде в начале имени файла! Впрочем это все дело вкуса. Ведь захочется еще и скрипты писать для обработки файлов в директории. То-то будет приятно вспомнить ...

io ★★
()

2 io: я имел в виду очень простую вещь. Если программа получает имя файла не из командной строки, она может проводить над ним преобразования a la shell. Вопрос в том, какие именно преобразования она будет реализовывать -- если все это делается руками а не через wordexp(3) Я видел программу (только вот забыл, какую :) которой можно было в file chooser dialog указать путь с тильдой и она его автоматически расширяла. Но никаких кавычек или ескэйпов она не понимала. Очевидно, что такой программой файл, имя которого начинается с тильды, открыть нельзя. Но, конечно, такие выверты -- это редкость.

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

>> Но никаких кавычек или ескэйпов она не понимала.
Интересно, каким способом той забытой программе передавались кавычки и ескейпы? ;)
someprog \"\~thedir\" ? - уж больно мудрёно.
А сказано было о том, что при вызове
% someprog '~arg'
аргумент, который получает программа, не содержит в себе кавычек, т.к. они _также_ обрабатываются shell.

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