printf
Echo yerine komutu da kullanabilirsiniz :
printf '%s\n' *
printf
daha üstün echo
olduğunu, bu durumda echo
yok değil "çift çizgi" saygı ( --
) bağımsız değişken listesinin sonunu belirtmek için (bunu test nedir Ubuntu 14.04 dahil bazı sistemleri üzerinde):
llama@llama:~$ mkdir -p Misc/unix210948
llama@llama:~$ cd !$
cd Misc/unix210948
llama@llama:~/Misc/unix210948$ touch -- -n
llama@llama:~/Misc/unix210948$ ls
-n
llama@llama:~/Misc/unix210948$ echo *
llama@llama:~/Misc/unix210948$ echo -- *
-- -n
llama@llama:~/Misc/unix210948$ printf '%s\n' *
-n
Bu durumda, istenen sonucu elde edemezsiniz echo
(adlı -n
bir seçenek bir seçenek olarak yorumlanır ve çift çizgi çalışmaz, bu nedenle kullanmanız gerekir printf
).
Eğer gerektiği Not hep birlikte bilinmeyen veriler ile uğraşırken yukarıdaki gibi bir biçim dizesi kullanmak printf
aksi beklenmeyen sonuçlar alabilir çünkü (yorumlarda bu işaret için @ G-Man sayesinde!):
llama@llama:~/Misc/unix210948$ rm ./-n
llama@llama:~/Misc/unix210948$ touch '\n'
llama@llama:~/Misc/unix210948$ ls
\n
llama@llama:~/Misc/unix210948$ printf -- *
llama@llama:~/Misc/unix210948$ printf '%s\n' *
\n
\n
Adlı bir dosya tarafından yeni satır olarak yorumlanır printf
. Bundan kaçınmak için, printf
( %s
) için bir biçimlendirme dizesi kullanırız ve dosya adlarını (daha önce olduğu gibi globbing yoluyla genişletilir) geçiririz.
Bu printf
+ biçimlendirme dize çözeltisi (bu bir ile başlayan ve aynı zamanda davranır "gizli" dosyaları, dosya adları çeşitli işleyebilir .
, aynı ls
):
llama@llama:~/Misc/unix210948$ rm ./*
zsh: sure you want to delete all the files in /home/llama/Misc/unix210948/. [yn]? y
llama@llama:~/Misc/unix210948$ touch -- '-n' '\n' 'name with spaces' '.hidden'
llama@llama:~/Misc/unix210948$ ls
-n \n name with spaces
llama@llama:~/Misc/unix210948$ printf '%s\n' *
-n
\n
name with spaces
Senin Eğer printf
desteklerin %q
, bunu da kullanabilirsiniz ( printf '%q\n' *
). Dosya adlarınızda garip karakterler varsa boşluklardan, yeni satırlardan vb. Kaçacaktır. ( Bunu işaret ettiği için sohbet eden muru'ya teşekkürler !)
libc*so
ya da senin berbatld-linux*so