Crea una directory separata in cui giocare (per facilitare la pulizia in seguito, principalmente); questo utilizza il valore di $TMPDIR
se è impostato, altrimenti /tmp
:
mkdir "${TMPDIR-/tmp}/testing"
cd "${TMPDIR-/tmp}/testing"
Crea file separati, ma che appaiono simili tra loro a causa dello spazio bianco (spazio, tabulazione, nuova riga, ritorno a capo, 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
Ringraziamo quanto sopra per Patrick . I due codici esadecimali sono separatori di spazio UTF-8 noti come dado e montone ; "nel contesto bidirezionale funge da spazio bianco e (non) è speculare. I glifi possono, in determinate circostanze, essere confusi con altri 20 glifi."
Crea un file semplice e uno che si espanderebbe al primo se fosse trattato come un glob:
touch -- x '[x]'
Ringraziamo quanto sopra a Wumpus Q. Wumbley .
Allo stesso modo:
touch -- 'a?b' 'a*b'
Ringraziamo quanto sopra a dave_thompson_085 nei commenti qui.
touch -- foo\`echo\ malicious\`bar
Ringraziamo quanto sopra per godlygeek .
Un nome file che si espanderà in qualcosa di diverso (ed esecuzione potenzialmente arbitraria!) Se valutato in un contesto shell:
touch '$( echo boom )'
Uso:
touch -- single\'quote double\"quote back\\slash
catturare i tentativi di mettere un nome file tra virgolette senza sfuggire alle virgolette.
touch -- -a -b -c -r -R - a=x
Ringraziamo quanto sopra a Stéphane Chazelas .
Crea una pipe con nome e un link simbolico (per creare file che non sono "normali"):
mkfifo fifo
ln -s a alink
Crea sottodirectory con vari spazi bianchi inclusi nei loro nomi, insieme a file token al loro interno:
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
Crea nomi di file contenenti solo *
(possibilmente problematico da rimuovere), un nome di file composto solo da uno spazio (normale!), Un collegamento simbolico morto, un collegamento simbolico che scorre su se stesso e una sottodirectory con un collegamento alla directory principale:
touch -- '*' '**' '***' ' '
ln -s /does/not/exist dead
ln -s loop loop
mkdir subdir_with_link
(cd subdir_with_link && ln -s .. parent)
Altri nomi di file diversi. Gli ultimi due sono unicode per "barra frazionaria" e "barra di divisione".
touch -- '(' '!' '!!' $'\xe2\x81\x84' $'\xe2\x88\x95'
Idee di Scott :
touch -- '-' '--' ';' '&' '|' '<' '>' '$' ')' '{' '}' = \\ '!' '#' '{a,b}'
Personaggi innocui in alcuni luoghi ma pericolosi in altri:
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
Personaggi che ordinano lo stesso in alcune versioni locali:
touch ① ② # sorts the same in GNU locales, order non-deterministic.
File che sfuggono al mondo .[!.]* *
(a volte utilizzati per espandere sia i file nascosti che quelli non nascosti):
touch ..foo ...