Làm sao xoá file/folder có tên chứa kí tự đặc biệt trên Linux?

  • Thursday 30/01/2020

Làm sao xoá file/folder có tên chứa kí tự đặc biệt trên Linux? Khi bạn sử dụng Linux, hẳn sẽ có một số tình huống mà các file/folder trên Linux được vô tình tạo ra với cái tên chứa các kí tự đặc biệt. Các file này thường gây khó khăn cho việc xoá bỏ hoặc chúng đi vì bị lỗi phát sinh từ tên chứa kí tự đặc biệt.
Các kí tự đặc biệt trong tên file/folder khiến lỗi phát sinh:



\
&
$
?
<
>
;
*
Khoảng trắng.
Nguyên nhân tại sao bạn không thể xoá các file có kí tự đặc biệt trong tên. Đơn giản là vì shell trên Linux nhận diện các kí tự đặc biệt như là một cú pháp câu lệnh. Nên khi bạn thực hiện xoá/copy các file có tên kí tự đặc biệt thì sẽ phát sinh lỗi.
Ví dụ:
# touch ‘>file’
# rm >file
rm: missing operand

Vậy chúng ta có bao nhiêu cách hỗ trợ việc xoá file có tên kí tự đặc biệt trên Linux? 
Có 4 cách như sau:

1. Đặt tên file trong dấu nháy đơn.
Dấu nháy đơn (‘..’) khi được dùng để bao bọc tên file có kí tự đặc biệt sẽ bỏ qua các giá trị đại diện sử dụng trong cái tên của file tập tin
# rm -v ‘>file’
rm: remove regular empty file `>file’? y
removed `>file’

2. Sử dụng dấu (\) – backslash
Bạn chỉ cần thêm dấu (\) trước các kí tự đặc biệt trong tên file
# touch ‘$file’
# rm “\$file”
rm: remove regular empty file `$file’? y

# touch ‘vi du khoang trang.txt’
# rm vi\ du\ khoang\ trang.txt
rm: remove regular empty file `vi du khoang trang.txt’? y

3. Sử dụng dấu (./) trước tên file
# rm -v ./-file
removed `./-file’
Khi đặt dấu (./) trước tên file thì sẽ không kiểm tra các kí tự đặc biệt trong tên có phải là option lệnh rm hay không.
4. Đặt dấu (–) trước tên file
Khi bạn đặt kí tự (–) trước tên của của file trên Linux, thì ‘—‘ được xem như 1 tín hiệu báo cho OS ngưng xem xét các kí tự đặc biệt đằng sau sử dụng như một biến/kí tự xử lý bởi shell. Bất kì tên, kí tự hậu tố sau ‘—‘ sẽ được xem là tên file.
# rm -v — -file
# rm -v — –file
# rm -v — “@#$%^&file”
# rmdir -v — “–dirnameHere”