Как обрабатывать передачу имен файлов с пробелами в Bash



Попробуйте наш инструмент устранения неполадок

В Linux есть оболочка по умолчанию Bash (также известная как оболочка Bourne) для выполнения команд для системы. Большинство программистов предпочитают bash вместо cmd из-за гибкости и мощного интерпретатора командной строки, который предоставляет bash. Однако у большинства пользователей по-прежнему будут проблемы при попытке обработать передачу имен файлов с пробелами в bash. Это связано с тем, что в bash пробелы не считаются такими же, как в именах файлов.



Файлы с пробелами в названии



Почему имя файла с пробелами не распознается Bash?

В Bash, если вы вводите несколько слов без побег символ () или цитаты , он будет рассматривать все слова как аргументы. Это применимо ко всем операциям, независимо от того, меняете ли вы каталог с помощью ‘ CD ‘Или пытается получить доступ к файлам с‘ Кот ‘Команды. Все, что вы напишете после их использования, будет рассматриваться как аргумент. Например:



cat имя файла.txt

Выполнение команды без использования escape-символа или кавычек

Запись : Ваше имя файла может быть любым, но в этой статье мы будем использовать « имя файла.txt ' Например.

Вот ' Кот ‘Команда рассмотрит файл и имя как два аргумента, а не как один аргумент. Однако, если вы используете escape-символ или кавычки, оболочка bash будет рассматривать это как единственный аргумент, которым будет « имя файла.txt '.



Имя файла с пробелами в Bash

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

Метод 1: использование одинарных и двойных кавычек

  1. Держать Ctrl + Alt клавиши и нажмите Т открыть Терминал .
  2. Теперь перейдите в каталог, в котором находится файл.
    (вы также можете бремя и падение файл в терминале после команды ‘ Кот ‘, Который автоматически помещает цитаты в путь к файлу / каталог)

    cd Desktop

    Смена каталога

    Запись : Рабочий стол можно изменить на то место, к которому вы пытаетесь получить доступ.

  3. Введите следующую команду, чтобы прочитать текстовый файл с пробелами в имени:
    cat 'имя файла.txt'

    или же

    cat 'имя файла.txt'

    Использование цитат, чтобы избежать пробелов в названии ошибки

  4. Одинарные и двойные кавычки приведут к тому же. В некоторых случаях вам нужно попробовать оба и посмотреть, какой из них работает.

Метод 2: использование escape-символа люфта

  1. Держать Ctrl + Alt клавиши и нажмите Т открыть Терминал .
  2. Измените каталог, в котором находится файл, с помощью следующей команды.
    cd Desktop

    Запись : Укажите название вашего местоположения вместо Desktop.

  3. Теперь введите команду и используйте побег символ везде, где есть пробел в имени:
    cat файл  name.txt

    Использование escape-символа, чтобы избежать ошибки пробелов

Бонус: использование цитат и побег

Иногда, когда вы используете каталог в команде, использование кавычек в общем пути может иметь последствия. Это потому, что некоторые команды, такие как ‘ мв ' или же ' cp 'Будет рассматривать путь как источник файла если цитата используется в целом. Вам необходимо предоставить расценки для обоих источник и пункт назначения индивидуально, чтобы такие команды, как ‘ cp ‘Может работать должным образом. Вы также можете проверить пример ниже, который покажет вам, что использование escape-символа для пути намного сложнее, и пользователи могут ошибиться с ним.

Разница между кавычками и escape-символом

2 минуты на чтение