Tạo một thư mục riêng để chơi (để dễ dàng dọn dẹp sau này, chủ yếu); cái này sử dụng giá trị $TMPDIR
nếu nó được đặt, nếu không /tmp
:
mkdir "${TMPDIR-/tmp}/testing"
cd "${TMPDIR-/tmp}/testing"
Tạo các tệp riêng biệt, nhưng xuất hiện tương tự nhau vì khoảng trắng (khoảng trắng, tab, dòng mới, trả về vận chuyển, khoảng lùi):
touch -- a b 'a ' 'b ' 'a b' 'a b' $'a\bb'
touch -- a$'\xe2\x80\x82'b a$'\xe2\x80\x83'b a$'\t'b a$'\n'b a$'\r'b
Tín dụng cho những điều trên cho Patrick . Hai mã hex là các dấu tách không gian UTF-8 được gọi là nut và mutton ; "trong bối cảnh hai chiều, nó hoạt động như Không gian trắng và (không) được nhân đôi. Các glyph (s) có thể, trong các trường hợp, có thể bị nhầm lẫn với 20 glyphs khác."
Tạo một tệp đơn giản và một tệp sẽ mở rộng thành tệp đầu tiên nếu nó được coi là toàn cục:
touch -- x '[x]'
Tín dụng cho những điều trên cho Wumpus Q. Wumbley .
Trong một tĩnh mạch tương tự:
touch -- 'a?b' 'a*b'
Tín dụng cho những điều trên cho dave_thndry_085 trong các ý kiến ở đây.
touch -- foo\`echo\ malicious\`bar
Tín dụng cho những điều trên cho godlygeek .
Một tên tệp sẽ mở rộng sang một cái gì đó khác (và có khả năng thực thi tùy ý!) Nếu được đánh giá trong ngữ cảnh shell:
touch '$( echo boom )'
Sử dụng:
touch -- single\'quote double\"quote back\\slash
để bắt những nỗ lực đặt tên tệp trong dấu ngoặc kép mà không thoát dấu ngoặc kép.
touch -- -a -b -c -r -R - a=x
Tín dụng cho những điều trên cho Stéphane Chazelas .
Tạo một đường ống và symlink có tên (để tạo các tệp không "thường xuyên"):
mkfifo fifo
ln -s a alink
Tạo các thư mục con có nhiều khoảng trắng khác nhau được bao gồm trong tên của chúng, cùng với các tệp mã thông báo bên trong chúng:
mkdir subdir "subdir 1" "subdir 2" "subdir 3 " subdir$'\n'4
touch subdir/file0 "subdir 1"/file1 "subdir 2"/file2 "subdir 3 "/file3 subdir$'\n'4/file4
Tạo tên tệp chỉ chứa *
(có thể có vấn đề cần xóa), tên tệp chỉ bao gồm một khoảng trắng (thông thường!), Liên kết tượng trưng chết, liên kết tượng trưng lặp lại trên chính nó và thư mục con có liên kết trở lại thư mục mẹ:
touch -- '*' '**' '***' ' '
ln -s /does/not/exist dead
ln -s loop loop
mkdir subdir_with_link
(cd subdir_with_link && ln -s .. parent)
Tên tập tin linh tinh hơn. Hai cái cuối cùng là unicode cho "slash phân đoạn" và "slash chia".
touch -- '(' '!' '!!' $'\xe2\x81\x84' $'\xe2\x88\x95'
Ý tưởng từ Scott :
touch -- '-' '--' ';' '&' '|' '<' '>' '$' ')' '{' '}' = \\ '!' '#' '{a,b}'
Các nhân vật vô hại ở một số địa phương nhưng nguy hiểm ở những người khác:
touch $'X\xa0Y' # non-breaking space in iso8859-1 which is considered
# "blank" and "space" in some locales
touch $'\xa3\x5c' $'\xa3\x60' # α and ε in BIG5 or BIG5-HKSCS charset, but
# �\ and �` in ASCII
Các ký tự sắp xếp giống nhau ở một số địa phương:
touch ① ② # sorts the same in GNU locales, order non-deterministic.
Các tệp thoát khỏi toàn .[!.]* *
cầu (đôi khi được sử dụng để mở rộng cả các tệp bị ẩn và không bị ẩn):
touch ..foo ...