[英]Combine two specific Linux commands into one
我想结合使用2个Linux命令:
第一条命令:
cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c "echo -e \"\n{}\"; chage -l {}" >> users-list.log
第二条命令:
cat /etc/passwd | cut -d: -f7
第一个命令获取用户以及每个用户的所有详细信息,第二个命令获取登录shell。
当前,第一个命令具有以下输出:
dante
Last password change : Aug 18, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
marion
Last password change : Aug 28, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
我希望我的users-list.log文件中的新输出看起来像这样(“ Linux sheel”的间距无关紧要):
dante
Last password change : Aug 18, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
Linux shell : /bin/bash
marion
Last password change : Aug 28, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
Linux shell : /bin/bash
有什么方法可以通过单个命令来实现吗?
最好的问候,罗曼
使用以下命令
cat /etc/passwd | xargs -n1 -I{} bash -c 'a=`echo "{}" | cut -f1 -d:`; echo -e "\n$a"; chage -l $a; echo -e "Linux shell\t: " `echo "{}" | cut -f7 -d:`' >> users-list.log
为了便于阅读,下面对其进行了细分
cat /etc/passwd | xargs -n1 -I{} bash -c '
a=`echo "{}" | cut -f1 -d:`;
echo -e "\n$a";
chage -l $a;
echo -e "Linux shell\t: " `echo "{}" | cut -f7 -d:`
' >> users-list.log
反引号内的命令由外壳程序评估。 参考: https : //unix.stackexchange.com/questions/48392/understanding-backtick
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.