Створіть окремий каталог, в який слід грати (головним чином для зручності прибирання); для цього використовується значення, $TMPDIR
якщо воно встановлено, інакше /tmp
:
mkdir "${TMPDIR-/tmp}/testing"
cd "${TMPDIR-/tmp}/testing"
Створіть окремі файли, але схожі між собою через пробіл (пробіл, вкладка, новий рядок, повернення каретки, повернення назад):
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
Подяка за вищезазначене Патріку . Два шістнадцяткові кодові - це розділювачі простору UTF-8, відомі як гайка та бараняча ; "у двонаправленому контексті він виступає як Білий простір і не є дзеркальним відображенням. Гліф (и) можуть за певних обставин переплутати з 20 іншими гліфами."
Створіть звичайний файл і файл, який розшириться до першого, якби він трактувався як глобус:
touch -- x '[x]'
Заслуговуємо на вищезгадане Wumpus Q. Wumbley .
У подібному ключі:
touch -- 'a?b' 'a*b'
Подяка за вищезазначене dave_thompson_085 у коментарях тут.
touch -- foo\`echo\ malicious\`bar
Подяка за вищезазначене godlygeek .
Ім'я файлу, яке розшириться на щось інше (і, можливо, довільне виконання!), Якщо його оцінюватимуть у контексті оболонки:
touch '$( echo boom )'
Використання:
touch -- single\'quote double\"quote back\\slash
ловити спроби поставити ім'я файлу в лапки без уникнення лапок.
touch -- -a -b -c -r -R - a=x
Подяка за вищезазначене Стефану Шазеласу .
Створіть названу трубу та символьну посилання (для створення файлів, які не є "регулярними"):
mkfifo fifo
ln -s a alink
Створіть підкаталоги, які містять у їхніх назвах різні пробіли, а також файли лексем усередині них:
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
Створіть лише імена файлів, що містять *
(можливо, проблематичне видалення), ім'я файлу, що складається лише з (звичайного!) Простору, мертвого символічного посилання, символічного посилання, яке циркулює на собі, і підкаталога з посиланням на батьківський каталог:
touch -- '*' '**' '***' ' '
ln -s /does/not/exist dead
ln -s loop loop
mkdir subdir_with_link
(cd subdir_with_link && ln -s .. parent)
Більше різних імен файлів. Останні два є unicode для "дробової косою рискою" та "косою косою".
touch -- '(' '!' '!!' $'\xe2\x81\x84' $'\xe2\x88\x95'
Ідеї від Скотта :
touch -- '-' '--' ';' '&' '|' '<' '>' '$' ')' '{' '}' = \\ '!' '#' '{a,b}'
Персонажі, нешкідливі в деяких місцевостях, але небезпечні в інших:
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
Символи, які сортуються однаково в деяких регіонах:
touch ① ② # sorts the same in GNU locales, order non-deterministic.
Файли, які виходять із .[!.]* *
глобуса (іноді використовуються для розширення як прихованих, так і не прихованих файлів):
touch ..foo ...