Buat direktori terpisah untuk dimainkan (terutama untuk memudahkan pembersihan nanti); ini menggunakan nilai $TMPDIR
jika disetel, jika tidak /tmp
:
mkdir "${TMPDIR-/tmp}/testing"
cd "${TMPDIR-/tmp}/testing"
Buat file yang terpisah, tetapi tampak mirip satu sama lain karena spasi putih (spasi, tab, baris baru, carriage return, backspace):
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
Penghargaan untuk yang di atas untuk Patrick . Kedua kode hex tersebut adalah pemisah ruang UTF-8 yang dikenal sebagai mur dan kambing ; "Dalam konteks dua arah, ia bertindak sebagai White Space dan tidak dicerminkan. Mesin terbang, dalam keadaan, dapat dikacaukan dengan 20 mesin terbang lainnya."
Buat file biasa dan yang akan diperluas ke yang pertama jika diperlakukan sebagai bola:
touch -- x '[x]'
Penghargaan untuk yang di atas untuk Wumpus Q. Wumbley .
Dalam nada yang sama:
touch -- 'a?b' 'a*b'
Kredit untuk yang di atas ke dave_thompson_085 di komentar di sini.
touch -- foo\`echo\ malicious\`bar
Penghargaan untuk yang di atas untuk godlygeek .
Nama file yang akan diperluas ke sesuatu yang berbeda (dan berpotensi eksekusi sewenang-wenang!) Jika dievaluasi dalam konteks shell:
touch '$( echo boom )'
Menggunakan:
touch -- single\'quote double\"quote back\\slash
untuk menangkap upaya untuk memasukkan nama file dalam tanda kutip tanpa lolos tanda kutip.
touch -- -a -b -c -r -R - a=x
Penghargaan untuk yang di atas untuk Stéphane Chazelas .
Buat pipa bernama dan symlink (untuk membuat file yang tidak "biasa"):
mkfifo fifo
ln -s a alink
Buat subdirektori yang memiliki beragam spasi putih yang disertakan dalam namanya, bersama dengan file token di dalamnya:
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
Buat hanya nama file yang berisi *
(mungkin bermasalah untuk dihapus), nama file yang hanya terdiri dari ruang (reguler!), Tautan simbolik mati, tautan simbolik yang dilingkarkan ke dirinya sendiri, dan sub-direktori dengan tautan kembali ke direktori induk:
touch -- '*' '**' '***' ' '
ln -s /does/not/exist dead
ln -s loop loop
mkdir subdir_with_link
(cd subdir_with_link && ln -s .. parent)
Lebih banyak nama file misc. Dua yang terakhir adalah unicode untuk "slash fraksional" dan "slash pembagian".
touch -- '(' '!' '!!' $'\xe2\x81\x84' $'\xe2\x88\x95'
Gagasan dari Scott :
touch -- '-' '--' ';' '&' '|' '<' '>' '$' ')' '{' '}' = \\ '!' '#' '{a,b}'
Karakter yang tidak berbahaya di beberapa lokal tetapi berbahaya di yang lain:
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
Karakter yang mengurutkan sama di beberapa lokal:
touch ① ② # sorts the same in GNU locales, order non-deterministic.
File yang lolos dari .[!.]* *
glob (terkadang digunakan untuk membuka file yang disembunyikan dan tidak disembunyikan):
touch ..foo ...
a?b
dana*b
(dikutip tentu saja). @muru: byte sequence E2 80 82/83 adalah pengkodean UTF-8 dari U + 2002 EN SPACE dan U + 2003 EM SPACE-
dan--
, meskipun, tergantung pada persyaratan skrip, mungkin tidak mungkin untuk mengaksesnya tanpa arahan./
. Dan aku terkejut bahwa ada begitu sedikit dengan non-gumpal karakter shell khusus, seperti;
,&
,|
,<
,>
,$
,(
,)
,{
,}
,=
,\
,!
, dan#
- misalnya,{a,b}
.