Как сделать так, чтобы почти все управление файлами Linux чувствительно к регистру, но его команда копирования оболочки 'cp', 'mv' чувствительна к регистру?

Как сделать так, чтобы почти все управление файлами Linux, такие как поиск, автозаполнение и т. Д., Не чувствительно к регистру, но его команда оболочки / Bash копировала и перемещала команды 'cp', 'mv', чтобы она чувствительна к регистру?

1
задан 1 November 2019 в 09:14

1 ответ

Вы упомянули, что нашли файлы и автозавершение как [1 121] примеры из где Вы требуете нечувствительности к регистру, но даже если это только [1 122] вещи, которые нечувствительны к регистру - а именно, эти find команда и заполнение клавишей Tab Вашей оболочки - можно получить почти весь эффект наличия большинство действия, которые Вы выполняете от оболочки быть нечувствительными к регистру, когда Вы хотите, чтобы они были.

причина состоит в том, что существует три главных ситуации, где Вы вводите имя файла в оболочке:

  1. файл существует, и его местоположение известно. Затем можно просто ввести его путь. В какой-то момент, как Вы делаете - после того как Вы ввели уникальный префикс - можно нажать Вкладку . , Если Вы реконфигурировали заполнение клавишей Tab в своей оболочке для поведения нечувствительные к регистру, нажав Вкладку , изменит случай от того, что Вы ввели к тому из фактического файла. Это работает и на частичные пути/имена файлов и на полные пути/имена файлов, которые отличаются случаем от того из фактического файла.
  2. файл существует и но его местоположение неизвестно. Затем Вы ищете файл. Если Вы используете find для этого, можно просто сказать этому искать нечувствительно к регистру. Обычно это состоит из [1 144] замена эти -name тест с эти -iname тест.
  3. файл еще не существует, и Вы намереваетесь создать его. В этой ситуации, необходимо ввести имя файла с любой капитализацией, которую Вы хотите, чтобы это имело, независимо от того, что или не настраивается для функционирования чувствительно к регистру. (Однако, можно извлечь выгоду из заполнения клавишей Tab оболочки, в котором это работает на любые префиксы пути, которые уже существуют.)

, Хотя /bin/sh в Ubuntu обеспечивается dash, пользовательская оболочка по умолчанию - та, Вы добираетесь, когда Вы входите в систему неграфически или открываетесь, терминал - bash. Большинство пользователей Ubuntu использует bash. Так как это - самая популярная оболочка в Ubuntu, и Вы отметили этот вопрос , я предполагаю, что Вы используете его. Обратите внимание, что способ, которым Вы сделали бы другую оболочку (такой как [1 110]) использует нечувствительное к регистру заполнение клавишей Tab, обычно отличается (и некоторые оболочки не могут, или даже не иметь заполнения клавишей Tab вообще).

способ, которым я рекомендую Вам, делает bash, работают, нечувствительное к регистру заполнение клавишей Tab является первым к [1 127] попытка он в в настоящее время рабочей оболочке путем выполнения команды:

bind 'set completion-ignore-case on'

После выполнения той команды, и названия команд и названия их аргументов имени файла подвергаются нечувствительному к регистру заполнению клавишей Tab. Хотя это делает , применяются в командах как [1 112] и mv, это только происходит при нажатии Вкладки для выполнения завершения. Независимо от того, что текст появляется в команде, пишете ли Вы это, или производится заполнением клавишей Tab, текст, из которого анализируются аргументы команде. Поэтому Вы всегда имеете полный все же эффективный управление того, что и не нечувствительно к регистру.

я не утверждаю, что это - единственное или даже обязательно идеальное решение, но это - довольно общее и безопасное решение. (Вы могли бы в конечном счете хотеть настроить заполнение клавишей Tab далее путем записи пользовательских правил для команд, где Вы не хотите, чтобы оно было нечувствительно к регистру.)

После того, как Вы испытываете нечувствительное к регистру заполнение клавишей Tab и решаете, Вы хотите его на все время , можно включить его постоянно - или пока Вы не решаете отменить изменение - путем добавления того же самого bind строка в конец Вашего ~/.bashrc файл. Как [1 118] init3 говорит , можно сделать это или с командой оболочки или в текстовом редакторе:

echo "bind 'set completion-ignore-case on'" >> ~/.bashrc

Или просто добавляют строку с помощью любимого текстового редактора. Перезапустите свою сессию удара и наслаждайтесь.

(Это от ответа init3 до [1 119], я могу сделать автозавершение Вкладки нечувствительным к регистру в Bash? , Что вопрос показывает некоторые другие способы включить нечувствительное к регистру заполнение клавишей Tab в [1 116], если Вам интересно.)

2
ответ дан 10 November 2019 в 20:02

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

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