Bash:printf 管道

-1 投票
2 回答
752 浏览
提问于 2025-04-18 08:51

我有一行代码是在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用户名

撰写回答