ملفات قائمة برامج النص Bash من المستخدم المعطى

StackOverflow https://stackoverflow.com/questions/4118180

  •  29-09-2019
  •  | 
  •  

سؤال

لدي مشكلة مع هذا واحد. إنه يعيدني باستمرار ، وليس دليلًا ، لكنه بالتأكيد هو

#!/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"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top