17 NİSAN 2014, PERŞEMBE
Neden bash "echo [t]" "sonucu t" değil "[t]"
Bu karakter için t olur ve değeri kök. Oldukça şaşırtıcı
$ echo [s]
[s]
$ echo [t]
t
$ echo [ t ]
[ t ]
$ echo [root]
t
CEVAP
17 NİSAN 2014, PERŞEMBE
[]
karakter sınıfı gösterir ve geçerli dizinde bir dosya t
adlı.
Aşağıda bir daha açıklamak gerekir:
$ ls
$ echo [t]
[t]
$ touch t
$ echo [t]
t
$ echo [root]
t
$ touch r
$ echo [root]
r t
Eğer []
, kaçış içinde bir yankı istersen 14**:
echo \[$var]
Farkı şimdi inceleyin:
$ echo \[root]
[root]
ya da, Glenn Jackman belirttiği gibi, alıntı:
$ echo '[root]'
[root]
$ echo "[root]"
[root]
Shell Command Language aşağıdaki karakterler bağlam bağlı olarak: kabuk için özel olduğunu söyler
* ? [ # ~ = %
Ayrıca, aşağıdaki karakterler ise kendilerini temsil etmek için ise tırnak gerekir:
| & ; < > ( ) $ ` \ " ' <space> <tab> <newline>
Ayrıca printf
için kullanabilirsinizbelirlemekbelirli bir giriş karakter argümanlar alıntı değilse kaçmış olması gerek. Yani [s]
örneğin:
$ printf "%q" "[s]"
\[s\]
Başka bir örnek:
$ printf "%q" "[0-9]|[a-z]|.*?$|1<2>3|(foo)"
\[0-9\]\|\[a-z\]\|.\*\?\$\|1\<2\>3\|\(foo\)
Bunu Paylaş:
Neden't "cd" bir parti ...
echo " sudo;bir şey" >&; /...
Bu "yeterli" rasgele algorit...
Neden &; son" Java 8 arabirim yön...
Neden Python's "Ekle" d...