Linux/Unix:logname命令示例以显示登录名

时间:2020-01-09 10:46:01  来源:igfitidea点击:

如何使用命令提示符查找Linux或者类似Unix的操作系统上的当前登录名?
您可以使用logname命令显示或者打印当前用户(也称为呼叫用户)的名称。

此命令读取var/run/utmp或者/etc/utmp文件以显示当前用户的名称。

语法

基本语法:

logname 
logname --help 
logname --version 

logname命令示例

只需执行以下命令即可显示用户登录名:

logname

输出示例:gif动画01:正在运行的logname命令以及id和whoami命令

您可以使用命令替换功能在shell脚本中使用logname命令,如下所示:

#/bin/bash
## 
## My backup function
###
do_backup(){
  tar -zcvf /nas01/backup/home.files.tar.gz /home/ 
}
##
## Only run backup job, if it is backup user else die with message ##
##
[ "$(logname)" == "backup" ] && { echo "Starting backup..."; do_backup; } 
                             || { echo "Requires backup user account."; exit 1; }
 
exit 0

等效于日志名的历史命令

logname命令等效于运行以下id命令或者whoami命令:

id -un

或者

whoami

$USER和$LOGNAME shell变量

您还可以如下使用$USER shell变量来显示用户登录名:

echo "Hi, $USER! Let us be friends."
echo "Hello, $LOGNAME! "

输出示例:

Hi, Hyman! Let us be friends.
Hello, Hyman!

请注意,由于无法信任该环境,logname实用程序会显式忽略LOGNAME和USER环境变量。
这是使用logname命令的主要原因。
试试下面的演示

#!/bin/bash
# getlogin-name.sh : A shell script to display login name
 
## Let us change variable values ##
USER="foo"
LOGNAME="bar"
 
## Greet user ##
## Display imposter name i.e. you can not trust $USER and $LOGNAME ##
echo "Hi,$USER! You are Imposter, for sure. Sorry, I can not trust you."
echo "Hello, $LOGNAME! You are Imposter, for sure. I cannot trust you. Go away! "
 
## Display real login name ##
echo "Hello, $(logname)! Let us be friends."

输出示例:

Hi,foo! You are Imposter, for sure. Sorry, I can not trust you.
Hello, bar! You are Imposter, for sure. I cannot trust you. Go away! 
Hello, Hyman! Let us be friends.