Đó là một ý tưởng tồi (để có các ký tự lạ trong tên tệp) nhưng bạn có thể làm
mv somefile.txt "foo
bar"
(bạn cũng có thể đã thực hiện mv somefile.txt "$(printf "foo\nbar")"
hoặc mv somefile.txt foo$'\n'bar
, v.v ... chi tiết cụ thể cho vỏ của bạn. Tôi đang sử dụng zsh
)
Tìm hiểu thêm về Globing , ví dụ toàn cầu (7) . Thông tin chi tiết có thể là vỏ cụ thể. Nhưng hiểu rằng /bin/mv
được đưa ra (bởi shell của bạn), qua execve (2) , một mở rộng mảng các đối số: mở rộng đối số và globbing là trách nhiệm của vỏ cách gọi.
Và bạn thậm chí có thể mã hóa một chương trình C nhỏ để làm điều tương tự:
#include <stdio.h>
#include <stdlib.h>
int main() {
if (rename ("somefile.txt", "foo\nbar")) {
perror("rename somefile.txt");
exit(EXIT_FAILURE);
};
return 0;
}
Lưu chương trình trên vào foo.c
, biên dịch nó với gcc -Wall foo.c -o foo
rồi chạy./foo
Tương tự như vậy, bạn có thể mã một tập lệnh tương tự trong Perl, Ruby, Python, Ocaml, v.v ....
Nhưng đó là một ý tưởng tồi. Tránh các dòng mới trong tên tệp (nó sẽ gây nhầm lẫn cho người dùng và nó có thể phá vỡ nhiều tập lệnh).
Trên thực tế, tôi thậm chí khuyên bạn chỉ nên sử dụng các chữ cái, chữ số và +-/._%
ký tự không có dấu (với /
dấu phân cách thư mục) trong đường dẫn tệp. Các tập tin "ẩn" (bắt đầu bằng .
) nên được sử dụng một cách thận trọng và parcimony. Tôi tin rằng việc sử dụng bất kỳ loại không gian nào trong tên tệp là một sai lầm. Sử dụng dấu gạch dưới thay thế (ví dụ foo/bar_bee1.txt
) hoặc dấu trừ (ví dụ foo/bar-bee1.txt
)