将两个特定的Linux命令组合成一个命令

将两个特定的Linux命令组合成一个命令,linux,shell,Linux,Shell,我想组合使用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 第二命令: cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c "echo -e \"\n{}\"; chage -l {

我想组合使用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
第二命令:

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”的间距无关紧要):

是否有任何方法可以通过一个命令实现这一点

致以最良好的祝愿,
Romain使用以下命令

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
backticks中的命令由shell计算。
参考:

[first command]>>userlist.log&&cat/etc/passwd|cut-d:-f7>>userlist.log
将命令放入脚本文件,使脚本文件可执行,并将其放在
路径的某个位置。现在您可以将其用作单个命令。您还可以创建一个函数并将其放入例如
~/.bashrc
中。您可能对命令
finger$USER | grep-oP'Shell:\K.*
感兴趣,该命令将返回用户的默认Shell。您可以将其嵌入到第一个命令中。@kvantour:谢谢您的解决方案。您的解决方案可能有效,但我不应该安装默认模块以外的任何其他模块。因此,我更喜欢users666N的解决方案谢谢。这就是我想要的。我更喜欢你的方式,因为它对其他选项卡也是可伸缩的。有没有办法从命令中转义字符?我需要在Ansible跑步。我尝试过类似的方法,但没有成功:
'cat/etc/passwd | xargs-n1-I{}bash-c“a=
echo\{}cut-f1-d:
;echo-e\“\n$a\”chage-l$a;echo-e\'linuxshell\t:\\”
echo\{}\\\\\{}\;cut f7-d:
>用户列表。log'
我认为最好使用带脚本的bash文件。