Làm thế nào để xử lý tên tập tin đi qua với không gian trong Bash

Linux có shell mặc định Bash (còn gọi là Bourne shell shell) để thực thi các lệnh cho hệ thống. Hầu hết các lập trình viên thích bash hơn cmd vì trình thông dịch dòng lệnh linh hoạt và mạnh mẽ mà bash cung cấp. Tuy nhiên, hầu hết người dùng vẫn sẽ gặp sự cố trong khi cố gắng xử lý chuyển tên tệp có dấu cách trong bash. Điều này là do các khoảng trắng không được coi là giống nhau trong bash vì chúng nằm trong tên tệp.

Các tệp có khoảng trắng trong tên

Tại sao tên tệp với Spaces không được Bash nhận ra?

Trong Bash, nếu bạn nhập nhiều từ mà không có ký tự thoát (\) hoặc trích dẫn, nó sẽ coi tất cả các từ là đối số. Điều đó áp dụng cho tất cả các hoạt động, cho dù bạn đang thay đổi thư mục bằng ' cd ' hoặc cố gắng truy cập các tệp bằng lệnh ' cat '. Bất cứ điều gì bạn viết sau khi sử dụng sẽ được coi là một đối số. Ví dụ:

 tên tập tin con mèo 

Chạy lệnh mà không sử dụng ký tự thoát hoặc trích dẫn

Lưu ý : Tên tệp của bạn có thể là bất cứ điều gì, nhưng đối với bài viết này, chúng tôi sẽ sử dụng tệp tin name.txt tên làm ví dụ.

Ở đây, lệnh ' cat ' sẽ coi tệptên là hai đối số chứ không phải là một đối số. Tuy nhiên, nếu bạn sử dụng ký tự thoát hoặc trích dẫn thì bash shell sẽ coi đó là một đối số duy nhất, đó sẽ là tệp tên tệp.txt.txt .

Tên tệp với Spaces in Bash

Có một vài phương thức có thể được sử dụng cho các khoảng trắng trong tên. Thực tiễn tốt nhất là tránh không gian cho tên tệp trong tương lai. Một phương pháp đơn giản sẽ là đổi tên tệp mà bạn đang cố truy cập và xóa khoảng trắng. Một số phương pháp khác đang sử dụng trích dẫn đơn hoặc kép trên tên tệp có dấu cách hoặc sử dụng ký hiệu esc (\) ngay trước dấu cách. Chúng tôi sẽ cung cấp các phương thức với các ví dụ được áp dụng để cho bạn thấy nó hoạt động như thế nào.

Phương pháp 1: Sử dụng trích dẫn đơn và đôi

  1. Giữ phím Ctrl + Alt và nhấn T để mở Terminal .
  2. Bây giờ thay đổi thư mục đến nơi tập tin được đặt.

    (bạn cũng có thể kéothả tệp trong thiết bị đầu cuối sau lệnh ' cat ', sẽ tự động đặt trích dẫn trên đường dẫn / thư mục tệp)

     máy tính để bàn cd 

    Thay đổi thư mục

    Lưu ý : Máy tính để bàn có thể được thay đổi thành vị trí bạn đang cố gắng truy cập.

  3. Nhập lệnh sau để đọc tệp văn bản có khoảng trắng trong tên:
     mèo 'tên tập tin' 

    hoặc là

     con mèo "tập tin name.txt" 

    Sử dụng trích dẫn để tránh khoảng trắng trong lỗi tên
  4. Trích dẫn đơn và đôi sẽ dẫn đến cùng. Trong một số trường hợp, bạn cần thử cả hai và xem cái nào hoạt động.

Cách 2: Sử dụng Backlash Escape character

  1. Giữ phím Ctrl + Alt và nhấn T để mở Terminal .
  2. Thay đổi thư mục thành nơi đặt tệp bằng cách sử dụng lệnh sau.
     máy tính để bàn cd 

    Lưu ý : Đặt tên vị trí của bạn thay cho Desktop.

  3. Bây giờ gõ lệnh và sử dụng ký tự thoát bất cứ nơi nào có không gian trong tên:
     tập tin mèo \ name.txt 

    Sử dụng ký tự thoát để tránh lỗi khoảng trắng

Phần thưởng: Sử dụng Báo giá và Thoát

Đôi khi khi bạn đang sử dụng thư mục trong lệnh, có thể có hậu quả cho việc sử dụng trích dẫn trên đường dẫn tổng thể. Điều này là do một số lệnh như ' mv ' hoặc ' cp ' sẽ coi đường dẫn là nguồn tệp nếu trích dẫn được sử dụng trên toàn bộ. Bạn cần cung cấp trích dẫn cho cả nguồnđích riêng lẻ để các lệnh như ' cp ' có thể hoạt động chính xác. Bạn cũng có thể kiểm tra ví dụ dưới đây sẽ cho bạn thấy rằng việc sử dụng ký tự thoát cho đường dẫn phức tạp hơn nhiều và người dùng có thể mắc lỗi với nó.

Sự khác biệt giữa trích dẫn và ký tự thoát

Bài ViếT Thú Vị