bash - 在linux中格式化输出
问题描述
我正在尝试从教科书中提出问题来复习我的 linux 技能。
问题是 :
- 使用 /etc/passwd,为你的 Kali 机器上的所有用户提取用户和主目录字段,这些用户的 shell 设置为 /bin/false。确保使用 Bash one-liner 将输出打印到屏幕上。输出应该类似于下面的清单 53:
kali@kali:~$ YOUR COMMAND HERE...
The user mysql home directory is /nonexistent
The user Debian-snmp home directory is /var/lib/snmp
The user speech-dispatcher home directory is /var/run/speech-dispatcher
The user Debian-gdm home directory is /var/lib/gdm3
Listing 53 - Home directories for users with /bin/false shells
这是我目前的进展:
┌──(rootkali)-[/home/kali]
└─# cat /etc/passwd | cut -f 1 -d ":" | grep -v '/bin/false' | awk '{print "The user " $0;}'
输出:
The user root
The user daemon
The user games
The user mail
我找不到管道/链接命令的方法,这样我就可以在后面添加“主目录”来格式化我的输出。任何人都可以帮忙吗?
解决方案
当您这样做时,您将丢弃文件的所有其他字段cut -f 1 -d :
。
没有必要使用cut
,您可以通过选项告诉awk
使用:
作为字段分隔符-F
。
您也不需要grep
,因为awk
可以进行模式匹配。您还可以向后检查 - 您正在删除/bin/false
而不是匹配它。
awk -F: '$NF == "/bin/false" { printf("The user %s home directory is %s\n", $1, $6)}' /etc/passwd
样本输出:
The user bin home directory is /bin
The user daemon home directory is /sbin
The user adm home directory is /var/adm
The user lp home directory is /var/spool/lpd
The user news home directory is /var/spool/news
The user uucp home directory is /var/spool/uucp
The user portage home directory is /var/lib/portage/home
The user nobody home directory is /var/empty
The user systemd-journal-remote home directory is /dev/null
The user systemd-coredump home directory is /dev/null
The user systemd-network home directory is /dev/null
The user systemd-resolve home directory is /dev/null
The user systemd-timesync home directory is /dev/null
The user messagebus home directory is /dev/null
The user sshd home directory is /var/empty
The user polkitd home directory is /var/lib/polkit-1
The user u_app1 home directory is /srv/app/app1
The user nagios home directory is /dev/null
The user icinga home directory is /var/lib/icinga2
The user systemd-oom home directory is /dev/null
推荐阅读
- python - 用于替换值python的JSON操作
- windows - 如何获取字符串列表中的每个字符串?
- r - R ezperm() 错误信息:替换有 9 行,数据有 3
- python - Adyen 加密信用卡数据 [python] [请求]
- c - 在 x86_64 (SysV ABI) 上推送/弹出呼叫
- python - 有效地调整图像大小
- javascript - 如何在 React 中从查询选择器到 useRef?
- azure - 如何通过 Terraforn 设置 Azure Web 应用程序防火墙 (WAF) 日志?
- sql - SQL查询多次加入smae表
- lambda - 使用 java 流对具有相同 ID/名称的对象进行分组