linux怎么编写who命令
-
编写Linux上的who命令需要以下步骤:
1. 确定who命令的功能和需求:who命令用于显示当前登录到系统上的用户信息。
2. 打开终端或命令行窗口。
3. 创建一个新的文件,用于编写who命令的代码。可以使用任何文本编辑器,例如vi、nano等。
4. 在代码文件的开始位置,添加一条解释指令,以便系统知道如何执行该文件。例如:
“`
#!/bin/bash
“`5. 下面编写who命令的具体代码逻辑。who命令的实现可以使用Linux系统提供的一些命令和工具,例如w或者whoami命令。
– 使用w命令:w命令用于显示当前登录系统的用户信息,包括用户名、远程登录IP、登录时间等。你可以使用以下方式执行w命令并将结果输出到终端:
“`
w
“`– 使用whoami命令:whoami命令用于显示当前登录用户的用户名。你可以使用以下方式执行whoami命令并将结果输出到终端:
“`
whoami
“`你还可以根据具体需求,对输出结果进行处理和格式化,例如筛选出特定字段、排序、去重等操作。
6. 保存代码文件并退出文本编辑器。
7. 如果你使用了nano编辑器,则可以按Ctrl+O保存文件,然后按Ctrl+X退出编辑器。如果你使用的是vi编辑器,则可以按ESC键,然后输入:wq保存文件并退出。
8. 使用chmod命令为代码文件添加可执行权限。例如,如果代码文件的名称为mywho.sh,则可以执行以下命令:
“`
chmod +x mywho.sh
“`9. 将代码文件移动到一个在系统的可执行路径下的目录中,例如/usr/bin。这样,你就可以在任何位置直接执行该命令。
10. 打开终端或命令行窗口,输入who命令即可执行你编写的who命令,并查看结果。
以上是编写Linux上who命令的一般步骤。根据具体需求和编程经验,你可以对代码进行修改和优化,以满足自己的需求。
2年前 -
编写一个 Linux who 命令需要以下几个步骤:
1. 了解 who 命令的功能和用法:who 是一个用于显示当前活动用户的命令。它可以显示登录系统的用户列表,包括用户名、登录时间、IP 地址等信息。
2. 编写 shell 脚本:打开任意文本编辑器,创建一个新的文件,命名为 who.sh(或任意其他你喜欢的名称)。这将是我们编写 who 命令的脚本。
3. 添加 shebang:在 who.sh 文件的第一行添加下面的代码,以告诉系统这是一个 shell 脚本:
“`
#!/bin/bash
“`这个代码行被称为 shebang,它告诉系统使用 bash 来解析脚本。
4. 编写代码:在 who.sh 文件中添加以下代码以实现 who 命令的功能:
“`bash
#!/bin/bashwho | awk ‘{print “User:”, $1, “Logged in at:”, $3, $4, “from:”, $5}’
“`这段代码使用 who 命令获取当前活动用户的信息,并通过 awk 命令将输出格式化为所需的格式。
5. 保存并退出:保存 who.sh 文件并退出文本编辑器。
6. 设置脚本执行权限:打开终端窗口,使用 chmod 命令为 who.sh 文件添加执行权限:
“`bash
chmod +x who.sh
“`7. 执行脚本:在终端中输入以下命令来执行脚本:
“`bash
./who.sh
“`脚本将显示当前活动用户的列表。
以上是一个简单的示例,只显示了用户的用户名、登录时间和来源。你可以根据需要修改代码,添加其他信息或改变格式。
注意:在编写脚本时需要注意语法及细节,以确保脚本能正确运行。确保 shebang 行位于文件的第一行,并使用合适的解释器(如 bash)。
2年前 -
编写一个who命令的实现可以分为以下几个步骤:
1. 确定功能需求:分析who命令的功能需求,通常来说who命令用于显示当前登录系统的用户信息,包括登录用户、登录时间、登录终端等。
2. 分析实现思路:根据功能需求,可以通过读取系统登录信息文件(如/var/run/utmp或/var/log/wtmp)来获取登录用户的信息。
3. 编写代码:根据实现思路,使用C语言编写代码实现who命令。
下面是一个简单的示例代码,演示了如何实现一个基本的who命令功能:
“`c
#include
#include
#include
#include
#includevoid show_info(struct utmp *utbufp);
void show_time(long timeval);int main()
{
struct utmp current_record;
int utmpfd;
int reclen = sizeof(current_record);if ((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1)
{
perror(UTMP_FILE);
exit(1);
}while (read(utmpfd, ¤t_record, reclen) == reclen)
show_info(¤t_record);close(utmpfd);
return 0;
}void show_info(struct utmp *utbufp)
{
if (utbufp->ut_type != USER_PROCESS)
return;printf(“%-8.8s”, utbufp->ut_name);
printf(” “);
printf(“%-8.8s”, utbufp->ut_line);
printf(” “);
show_time(utbufp->ut_tv.tv_sec);
#ifdef SHOWHOST
if (utbufp->ut_host[0] != ‘\0’)
printf(” (%s)”, utbufp->ut_host);
#endif
printf(“\n”);
}void show_time(long timeval)
{
char *cp;
cp = ctime(&timeval);
printf(“%12.12s”, cp + 4);
}
“`4. 编译和运行:将上述代码保存为一个.c文件(如who.c),然后使用gcc编译器进行编译:
“`
gcc -o who who.c
“`
接着运行生成的可执行文件:
“`
./who
“`
就可以看到当前登录系统的用户信息了。请注意:以上代码为简化版示例,可能不能完全符合who命令的实际需求,你可以根据自己的需求进行修改和扩展。
2年前