繁体   English   中英

将两个特定的Linux命令合并为一个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM