ملفات قائمة برامج النص Bash من المستخدم المعطى
سؤال
لدي مشكلة مع هذا واحد. إنه يعيدني باستمرار ، وليس دليلًا ، لكنه بالتأكيد هو
#!/usr/local/bin/bash
DIR=$1
if [ -d "$DIR" ]; then
ls -1Apl /home/$DIR | grep -v /\$
else
echo "not a directory"
fi
شيء آخر ، أحتاج إلى القليل من التلميح. لا بد لي من سرد الملفات من مستخدم معين في دليل معين ، حيث أحصل على كل من المستخدم والدليل كمعلمات. مجرد اقتراحات من فضلك.
المحلول
هل انت في /home
دليل عند تشغيل هذا؟ إذا لم يكن الأمر كذلك ، فقد ترغب في تغييره إلى:
if [ -d "/home/$DIR" ]; then
لمطابقة ls
يأمر. هذا يفترض أنك تديرها بشيء مثل myscript pax
لفحص /home/pax
الدليل ، والذي يبدو أن هذا هو الحال.
وإذا كنت ترغب فقط في إدراج هذه الملفات الموجودة هناك مملوكة لمستخدم معين ، فيمكنك استخدامها awk
لطباعة تلك فقط مع العمود 3 ضبط على القيمة المطلوبة ($usrnm
)، شيء مثل:
ls -1Apl /home/$DIR | grep -v /\$ | awk -v user=${usrnm} '$3==user{print}{}'
نصائح أخرى
أنت لا تختبر وجود الدليل نفسه الذي تحاول إدراجه - ربما تقصد -d "/home/$DIR"
؟ أو من متطلباتك ، هل لديك معلمتان؟
user="$1"
dir="$2"
# and then examine "/home/$user/$dir"
لا تنتمي إلى StackOverflow