आप printf
इको की जगह कमांड का भी उपयोग कर सकते हैं :
printf '%s\n' *
printf
echo
इस स्थिति में बेहतर है कि तर्क सूची के अंत को इंगित करने के लिए "डबल डैश" ( ) का सम्मान नहींecho
करता है (कुछ प्रणालियों पर, जिसमें उबंटू 14.04 शामिल है जो मैंने इसे पर परीक्षण किया है):--
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
इस स्थिति में, आप वांछित परिणाम प्राप्त नहीं कर सकते हैं echo
(क्योंकि फ़ाइल नामक -n
विकल्प के रूप में व्याख्या की जाती है, और डबल डैश काम नहीं करता है, इसलिए आपको इसका उपयोग करना होगा printf
)।
ध्यान दें कि आपको हमेशा अज्ञात डेटा से निपटने के दौरान ऊपर की तरह एक प्रारूप स्ट्रिंग का उपयोग करना चाहिए printf
, अन्यथा आप अप्रत्याशित परिणाम प्राप्त कर सकते हैं (टिप्पणियों में इसे इंगित करने के लिए @ जी-मैन का धन्यवाद!)।
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
को एक नई लाइन द्वारा व्याख्यायित किया जाता है printf
। इससे बचने के लिए, हम printf
( %s
) के लिए एक स्वरूपण स्ट्रिंग का उपयोग करते हैं और इसे फ़ाइलों के नाम (ग्लोबिंग के माध्यम से विस्तारित, पहले की तरह) पास करते हैं।
यह printf
+ प्रारूपण स्ट्रिंग समाधान विभिन्न प्रकार के फ़ाइलनामों को संभाल सकता है (और "छिपी हुई" फ़ाइलों को भी व्यवहार करता है, अर्थात, जो एक साथ शुरू होते हैं .
, वही 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
यदि आपका printf
समर्थन करता है %q
, तो आप उसका उपयोग भी कर सकते हैं ( printf '%q\n' *
)। यह रिक्त स्थान, नई सूची आदि से बच जाएगा यदि आपके फ़ाइलनाम में कोई भी अजीब चरित्र हैं। ( यह इंगित करने के लिए चैट में @ muru का धन्यवाद !)
libc*so
या अपनेld-linux*so