Bash:printf 管道
我有一行代码是在bash中写的,现在我想把它用python来运行。
printf "operator: 'finger ${USER}|grep Name:| cut -f3 -d:(${USER})\n" > temp_header
我对这段代码有点困惑,因为我刚接触shell脚本,特别是bash。不过从我了解的情况来看,这段代码是想从finger命令中获取用户的用户名和姓名,然后把这些信息写入一个新的标题。
我理解得对吗?如果是这样的话,我是不是应该用Windows的命令提示符来从服务器获取用户名和姓名呢?
2 个回答
0
下面这段代码
printf "operator: 'finger ${USER}|grep Name:| cut -f3 -d:(${USER})\n" > temp_header
可以理解为:创建一个名为 temp_header
的文件。在这个文件里打印出一条信息 operator: 'finger ${USER}|grep Name:| cut -f3 -d:(${USER})\n
,其中你需要把 ${USER}
替换成环境变量 $USER
的内容。
所以在Python中,你应该这样做:
import os
with open('temp_header', 'w') as f:
user = os.environ['USER']
txt = "operator: 'finger {0}|grep Name:| cut -f3 -d:({1})\n".format(user, user)
f.write(txt)
不过要注意,temp_header
里面的命令在Windows上是无法直接执行的,除非使用像bash这样的类Unix的命令行工具。
1
如果我理解得没错,你是想获取当前用户的全名。那么,命令行看起来是这样的:
printf "operator: `finger ${USER} | grep Name: | cut -f3 -d:` \n"
补充一下:我发现了一个关于如何在Linux中直接用Python获取用户全名的内容:用户的完整Unix用户名