Як поводитися з передачею імен файлів з просторами в Bash

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

Файли з пробілами в назві

Чому Bash не розпізнає ім'я файлу з просторами?

У Bash, якщо ви введете кілька слів без символу (\) або цитат, вони будуть розглядати всі слова як аргументи. Це стосується всіх операцій, незалежно від того, чи змінюєте ви каталог на " cd " або намагаєтеся отримати доступ до файлів командами " cat ". Все, що ви напишете після їх використання, буде розглядатися як аргумент. Наприклад:

 cat file name.txt 

Запуск команди без використання символу або лапок

Примітка . Ім'я вашого файлу може бути будь-яким, окрім цієї статті, ми будемо використовувати "ім'я файлу.txt " як приклад.

Тут команда ' cat ' буде розглядати файл та ім'я як два аргументи, а не як один аргумент. Однак, якщо ви використовуєте символ втечі або цитати, оболонка bash розгляне це як єдиний аргумент, який буде " ім'ям файлу.txt ".

Ім'я файлу з просторами в Bash

Є кілька методів, які можна використовувати для пробілів у назві. Найкраща практика - це уникати пробілів для імен файлів у майбутньому. Простим методом буде перейменування файлу, до якого ви намагаєтеся отримати доступ та видалити пробіли. Деякі інші методи використовують одиничні або подвійні лапки на ім'я файлу з пробілами або використовують символ escape (\) прямо перед пробілом. Ми надамо методи з прикладними прикладами, щоб показати вам, як це працює.

Спосіб 1: Використання одинарних та подвійних цитат

  1. Утримуйте клавіші Ctrl + Alt і натисніть T, щоб відкрити термінал .
  2. Тепер змініть каталог, де знаходиться файл.

    (Ви також можете перетягнути файл у термінал після команди " cat ", яка автоматично помістить цитати в шлях / каталог файлу)

     CD робочий стіл 

    Зміна каталогу

    Примітка . Робочий стіл можна змінити на місце, до якого ви намагаєтесь отримати доступ.

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

    або

     cat "ім'я файлу.txt" 

    Використання цитат, щоб уникнути пробілів у помилці імені
  4. Одиночні та подвійні котирування призведуть до того ж. У деяких випадках потрібно спробувати і те й інше, щоб побачити, який з них працює.

Спосіб 2: Використання символу Escape Escape

  1. Утримуйте клавіші Ctrl + Alt і натисніть T, щоб відкрити термінал .
  2. Змініть каталог, де знаходиться файл, використовуючи наступну команду.
     CD робочий стіл 

    Примітка . Поставте ім’я свого місця замість робочого столу.

  3. Тепер введіть команду і використовуйте символ втечі, де є місце в імені:
     файл кота \ ім'я.txt 

    Використання символу втечі, щоб уникнути помилок пробілів

Бонус: використання котирувань та втечі

Іноді, коли ви використовуєте каталог у команді, можуть бути наслідки для використання лапок на загальному шляху. Це тому, що деякі команди на зразок ' mv ' або ' cp ' будуть вважати шлях джерелом файлу, якщо цитата використовується в цілому. Вам потрібно надати цитати як для вихідного, так і для цільового призначення окремо, щоб команди, такі як " cp ", могли нормально працювати. Ви також можете перевірити приклад нижче, який покаже вам, що використання символу втечі для шляху набагато складніше, і користувачі можуть помилитися з ним.

Різниця між цитатами та символом втечі

Цікаві Статті