Обеспокойтесь w/колотят программируемое завершение имен файлов, соответствующих шаблонам

Та строка в Вашем .profile должен быть один из

export  PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin

~ символ только расширен до Вашего корневого каталога, когда это - первый символ слова, и он закрыл кавычки. В том, что Вы записали, ~ между двойными кавычками и поэтому не расширен. Даже если Вы записали export "PATH=$PATH:"~/Unix/homebrew/bin, ~ не был бы расширен, потому что это не в начале слова оболочки.

Существует специальное разрешение, которое предназначается для записи значений для PATH и подобные переменные. Если ~ сразу после знака "равно", который отмечает присвоение, или если ~ сразу после a : в правой стороне присвоения затем это расширено. Только простые присвоения имеют это разрешение, export PATH=… не рассчитывает (это - вызов к export встроенный, который, оказывается, имеет аргумент, который содержит a = символ).

Здесь, Вы не должны экспортировать PATH потому что это уже экспортировано. Вы не должны звонить export когда Вы измените значение переменной (кроме старых Оболочек Bourne, которые Вы не найдете на OSX или Linux). Кроме того, в присвоении (снова, export не рассчитывает), Вам не нужны двойные кавычки вокруг правой стороны, таким образом, PATH=$PATH:~/Unix/homebrew/bin безопасно даже если $PATH содержит пробелы.

4
18.01.2013, 09:44
2 ответа

Вы могли сделать две вещи со своим regex относительно расширения типа файла. Вы могли добавить расширения всех заглавных букв непосредственно regex, т.е. (tar|TAR) или можно добавить ?i флаг для создания поиска нечувствительным к регистру. Посмотрите это для руководства: https://stackoverflow.com/questions/43632/can-you-make-just-part-of-a-regex-case-insensitive

Затем относительно завершения многословного вот другой ответ: https://stackoverflow.com/questions/1146098/properly-handling-spaces-and-quotes-in-bash-completion (я лично использую _ вместо пробелов во всех моих файлах поэтому),

-1
27.01.2020, 21:06
  • 1
    "можно ли добавить? я отмечаю для создания поиска нечувствительным к регистру".-> спасибо за указание на меня к этому. Я использую много регулярных выражений в другой работе, которую я делаю и я никогда не видел это прежде; однако, это не работает на файл удара globbing. Спасибо за ссылку на другой ответ... Мы будем видеть, могу ли я получить некоторое вдохновение от этого. –  rsaw 20.01.2013, 19:18
[113289]Не уверен, что это все еще проблема для вас, но я столкнулся с чем-то подобным при попытке получить завершение файла в середине слова, и у меня есть несколько идей для возможных решений.

enter image description here

Изменение переменной [113748]IFS[113749] путем добавления [113750]local IFS=$'\n'[113751] исправило проблему с пробелами в именах файлов для меня, возможно, стоит попробовать.

Что касается того, чтобы сделать вещи нечувствительными к регистру, вы можете заставить [113752]$curr[113753] использовать [113754]${cur,,}[113755] в нижнем регистре для compgen. Функция Full будет выглядеть следующим образом после обоих изменений:

Это сделает все имена файлов, совпадающие с регистром, нечувствительными. Если вы хотите, чтобы расширение было нечувствительным только к регистру, вы можете сделать некоторую манипуляцию со строкой в [113756]$cur[113757], чтобы сделать только строчное расширение.[113296].

1
27.01.2020, 21:06

Теги

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