Я хочу ввести следующую папку в терминале:
Milano, Torino (Jan)-Compressed
Как мне написать команду cd
для входа в этот каталог?
Пробелы и некоторые другие специальные символы , такие как \
, *
, )
, (
и ?
проблемы , потому что когда я пытаюсь использовать их в командной строке или сценариев, например:
$ cd space dir
bash: cd: space: No such file or directory
$ cat space file
cat: space: No such file or directory
cat: file: No such file or directory
$ cat (
bash: syntax error near unexpected token `newline'
$ echo content >\
> ^C
$ ls ?
( ) * ? \
Как мне ввести имена файлов или каталогов, которые содержат специальные символы в терминале в целом?
command-line
filename
cd-command
Pomario
источник
источник
Ответы:
Эта команда неоднозначна, потому что пробелы обычно используются для разделения аргументов. CD не знает, что вы хотите сделать, но у вас есть две возможности решить это:
Либо вы « маскируете » пробелы (и все другие специальные символы), чтобы терминал знал, что вы подразумеваете пробел как символ, а не как разделитель:
Или вы вводите имя вашей папки или путь в кавычки :
источник
Небольшой совет: пополнение вкладки ;-)
cd Mi
(или несколько букв, если необходимо) и нажмите Tab. Терминал поможет вам, заполнив остальные слова.Другой способ: перетащить и падение
cd
сначала, а затем перетащите каталог на терминал и нажмите enter.источник
Напишите это как:
В противном случае он рассматривается
Milano,
как имя папки. Это происходит из-за пробелов в имени папки. В качестве альтернативы экранируйте несколько специальных символов:источник
tl; dr : Чтобы
\
заключить в кавычки специальный символ, либо экранируйте его обратной косой чертой, либо заключите его в двойные" "
или одинарные кавычки' '
. Tab ↹Завершение заботится о правильном цитировании.То, что вы просите, называется цитированием :
Цитирование с побегом
\
Таким образом, чтобы ввести каталог или файл со специальным символом, экранируйте последний с помощью
\
, например:bash
«S Программируемая Завершение (ака Tab ↹Завершение) автоматически экранирует специальные символы с экранирующим символом\
.Цитирование с двойными кавычками
" "
Таким образом, чтобы ввести каталог или файл со специальным символом, экранируйте по крайней мере последний или большую часть вашего имени файла или пути в двойных кавычках, например:
Кроме того
$
,`
и!
сохраняют свое особое значение в двойных кавычках, расширение строк , подстановка команд , арифметическое расширение и расширение истории выполняются для строк в двойных кавычках.Цитирование в одинарных кавычках
' '
Таким образом, чтобы ввести каталог или файл со специальным символом, экранируйте по крайней мере последний или большую часть вашего имени файла или пути в двойных кавычках, например:
Вы можете найти больше информации о цитировании в
man bash
/ QUOTING , на wiki.bash-hackers.org и на tldp.org .источник
C-подобные строки и $ 'string'
Среди прочего, можно использовать
$'...'
тип цитирования, чтобы использовать символы обратной косой черты ANSI-C, такие как\n
и\t
, включая те, которые вы упомянули. Из руководства по bash 4.3:Это особенно полезно для файлов, которые содержат символы новой строки, вкладки, когда вы пишете сложные строки awk, где вам нужно использовать различные способы различения одинарных и двойных кавычек, когда сами имена файлов содержат одну / две кавычки и т. Д.
Например, создание и распечатка таких файлов:
Вы можете использовать шестнадцатеричные значения символов, такие как:
Printf
Идея та же, что и раньше - использовать экранирующие символы:
Используйте inode:
Каждый файл или каталог имеет специальную структуру данных, связанную с ним, называемую inode, на которую ссылается конкретное десятичное число. Таким образом, вы можете использовать это для косвенного определения местоположения файла с определенным индексом с помощью
find
команды и что-то с ним сделать:Избегайте работы с отдельными файлами, когда вы можете использовать glob
Если вам не нужно иметь дело с отдельными файлами, просто используйте
*
глобальные символы в оболочке и заключайте их в кавычки при передаче их другим командам. Это облегчает работу со сложными именами файлов:Обратите внимание на использование
./
- защиты от имен файлов, которые могут содержать ведущие-
в них.источник
Чтобы открыть папку , содержащую пробел окружать его в кавычки , как
cd "Some Directory"
и избежать пространства с обратной косой черты, как:cd /home/kudic/Radna\ površina
.источник
cd /home/kudic/Radna\ površina
'Radna površina'
), если вы не хотите, чтобы переменные окружения ($VARNAME
) расширялись, а команды заключались в обратные кавычки или$()
выполнялись (или если в имени файла есть двойные кавычки).Если этот каталог находится в вашей домашней папке, введите:
иначе дайте абсолютный путь:
если в имени файла есть двойная кавычка, тогда экранируйте
\"
источник
Другим вариантом, хотя и не лучшим в этом случае, является использование подстановочных знаков. Можешь попробовать:
cd *Torino*
Лучше всего использовать этот метод, когда в названии каталога есть отдельное слово или фраза, не принадлежащие другим. Например, у меня есть точки монтирования / media / DataSSD и / media / DataHDD. Автозаполнение не работает, пока я не наберу почти половину имени, поэтому, чтобы попасть в раздел жесткого диска, я просто набираю
cd /media/*HD*
источник