「Linux中Shell命令」Shell常见命令

89 阅读9分钟

知识点及案例解析

1. who 命令

功能:显示当前登录系统的用户信息,包括用户名、终端、登录时间、IP等。
案例

who

输出示例

root     tty1         2025-06-13 19:42
root     pts/0        2025-06-13 19:45 (192.168.226.1)

解析
显示两个用户登录信息:

  1. 第一列(用户名) :登录用户的用户名
    root:表示这两个会话都是以 root 用户登录的

  2. 第二列(终端类型) :用户登录使用的终端设备 tty1:本地控制台终端(物理终端)
    pts/0:伪终端(通常是远程SSH连接或终端模拟器)

  3. 第三列(登录时间) :用户登录的时间
    2025-06-13 19:42:第一个会话的登录时间
    2025-06-13 19:45:第二个会话的登录时间

  4. 第四列(来源IP) :(仅伪终端显示)
    (192.168.226.1):表示这个pts/0终端是通过IP为192.168.226.1的客户端建立的连接

2. whoami 命令

功能:显示当前用户的用户名。
适用场景:快速确认当前登录身份。 案例

whoami

输出示例

root

解析:直接输出当前用户的用户名root,直接使用root用户登录系统是一种。

3. hostnamehostnamectl 命令

功能

  • hostname:显示或设置系统主机名。
  • hostnamectl:更强大的主机名管理工具(支持查看、修改主机名及系统信息)。(需systemd支持)。
  • 常用选项--static(静态主机名)、--transient(瞬态主机名)、--pretty(可读性主机名)。

案例

hostname
hostnamectl

输出示例

# hostname 输出
my-linux-server

# hostnamectl 输出
   Static hostname: my-linux-server
         Icon name: computer-vm
           Chassis: vm
        Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           Boot ID: yyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    Virtualization: kvm
  Operating System: Ubuntu 22.04 LTS
            Kernel: Linux 5.15.0-76-generic
      Architecture: x86-64

解析

  • hostname仅显示主机名。
  • hostnamectl显示主机名、系统类型、内核版本等详细信息。
4. date 命令

功能:显示或设置系统日期和时间。
案例

date
date "+%Y-%m-%d %H:%M:%S"
sudo date -s "2023-10-01 12:00:00"  # 设置时间(需root权限)

输出示例

# date 输出
2025年 06月 13日 星期五 20:43:32 CST

# date "+%Y-%m-%d %H:%M:%S" 输出
2025-06-13 20:43:40

# 设置时间后(需root权限)
2025年 04月 01日 星期二 12:00:00 CST

解析

  • date默认格式显示时间。
  • date "+%Y-%m-%d %H:%M:%S"自定义格式输出。
  • date -s用于设置时间(需root权限)。
5. cal 命令

功能:显示日历。
常用选项-y(显示全年日历)、-m(指定月份)。 案例

cal
cal -y
cal 2 2024  # 查看2024年2月的日历(闰年)

输出示例

# cal 输出(当前月份)
      四月 2025
日 一 二 三 四 五 六
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

# cal -y 输出(全年)
                               2025

        一月                   二月                   三月
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
          1  2  3  4                      1                      1
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    2  3  4  5  6  7  8
12 13 14 15 16 17 18    9 10 11 12 13 14 15    9 10 11 12 13 14 15
19 20 21 22 23 24 25   16 17 18 19 20 21 22   16 17 18 19 20 21 22
26 27 28 29 30 31      23 24 25 26 27 28      23 24 25 26 27 28 29
                                              30 31
        四月                   五月                   六月
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
       1  2  3  4  5                1  2  3    1  2  3  4  5  6  7
 6  7  8  9 10 11 12    4  5  6  7  8  9 10    8  9 10 11 12 13 14
13 14 15 16 17 18 19   11 12 13 14 15 16 17   15 16 17 18 19 20 21
20 21 22 23 24 25 26   18 19 20 21 22 23 24   22 23 24 25 26 27 28
27 28 29 30            25 26 27 28 29 30 31   29 30

        七月                   八月                   九月
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
       1  2  3  4  5                   1  2       1  2  3  4  5  6
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    7  8  9 10 11 12 13
13 14 15 16 17 18 19   10 11 12 13 14 15 16   14 15 16 17 18 19 20
20 21 22 23 24 25 26   17 18 19 20 21 22 23   21 22 23 24 25 26 27
27 28 29 30 31         24 25 26 27 28 29 30   28 29 30
                       31
        十月                  十一月                 十二月
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
          1  2  3  4                      1       1  2  3  4  5  6
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    7  8  9 10 11 12 13
12 13 14 15 16 17 18    9 10 11 12 13 14 15   14 15 16 17 18 19 20
19 20 21 22 23 24 25   16 17 18 19 20 21 22   21 22 23 24 25 26 27
26 27 28 29 30 31      23 24 25 26 27 28 29   28 29 30 31
                       30


# cal 2 2024 查看2024年2月的日历(闰年)
      二月 2024
日 一 二 三 四 五 六
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29

解析

  • cal显示当前月份日历。
  • cal -y显示全年日历。
  • cal -m -y输出指定月份和年份的日历。
6. clear 命令

功能:清空终端屏幕。
案例

clear

解析:执行后终端屏幕内容被清空,类似Ctrl + L

7. 查看Linux内核版本

命令

uname -r
cat /proc/version

用途:确认系统内核版本,便于安装兼容软件。
输出示例

# uname -r 输出
3.10.0-1160.el7.x86_64

# cat /proc/version 输出
Linux version 3.10.0-1160.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:59 UTC 2020

解析

  • uname -r显示内核版本。
  • cat /proc/version显示内核版本及编译信息。
8. help 命令

功能:显示Shell内置命令的帮助信息。
适用场景:快速查询内置命令用法(如cdecho)。
案例

help cd

输出示例

cd: cd [-L|[-P [-e]]] [dir]
    Change the shell working directory.

    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.

    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.

    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.

    Options:
        -L      force symbolic links to be followed
        -P      use the physical directory structure without following symbolic
        links
        -e      if the -P option is supplied, and the current working directory
        cannot be determined successfully, exit with a non-zero status

    The default is to follow symbolic links, as if `-L' were specified.

    Exit Status:
    Returns 0 if the directory is changed, and if $PWD is set successfully when
    -P is used; non-zero otherwise.

解析:显示cd命令的帮助信息。

9. man 命令

功能:显示命令的详细手册页(详细文档)。
适用场景:深入学习命令用法(如man ls)。
案例

man ls

解析:打开ls命令的手册页,按q退出。

常见错误及解决方法

  1. 错误command not found
    原因:命令拼写错误或未安装。
    解决方法

    • 检查命令拼写是否正确。
    • 使用which <命令>确认命令是否存在。
    • 安装缺失的命令(如sudo apt install <包名>)。
  2. 错误date: invalid date
    原因:使用-s设置时间时格式错误。
    解决方法:确保时间格式正确(如date -s "2023-10-01 12:00:00")。

  3. 错误hostnamectl: command not found
    原因:系统未安装systemd(如旧版Linux)。
    解决方法

    • 使用hostname命令替代。
    • 升级系统或安装systemd
  4. 错误man: command not found
    原因:未安装man工具。
    解决方法:安装man工具(如sudo apt install man-db)。

理论练习

选择题:以下哪个命令用于显示当前登录用户的信息? A. whoami
B. who
C. hostname
D. date
答案:B

填空题:使用_______命令可以查看当前系统的内核版本。
答案uname -r

判断题hostnamectl命令只能查看主机名,不能修改。( )
答案:×(正确:hostnamectl可以修改主机名)

简答题:简述date命令的两种常见用法。
答案

  • 显示当前时间:date
  • 自定义格式输出:date "+%Y-%m-%d %H:%M:%S"

实操练习

  1. 练习:查看当前登录用户的信息,并确认当前用户的用户名。
    参考答案

    who
    whoami
    
  2. 练习:查看系统主机名,并使用hostnamectl查看详细信息。
    参考答案

    hostname
    hostnamectl
    
  3. 练习:显示当前日期和时间,并自定义格式输出。 参考答案

    date
    date "+%Y-%m-%d %H:%M:%S"
    
  4. 练习: 显示当前月份的日历,并查看全年日历。
    参考答案

    cal
    cal -y
    
  5. 练习:清空终端屏幕,并查看ls命令的帮助信息。
    参考答案

    clear
    help ls
    
  6. 练习:查看Linux内核版本,并查询date命令的详细手册页。
    参考答案

    uname -r
    man date
    
  7. 练习:使用hostnamectl修改主机名为new-hostname(需root权限)。
    参考答案

    sudo hostnamectl set-hostname new-hostname
    hostnamectl  # 验证修改
    
  8. 练习: 设置系统时间为2025-2-1 15:00:00(需root权限)。
    参考答案

    sudo date -s "2025-2-1 15:00:00"
    date  # 验证修改
    

知识总结

  • 用户信息who查看登录用户,whoami确认当前用户。
  • 主机名管理hostname显示主机名,hostnamectl管理详细信息。
  • 时间与日历date显示/设置时间,cal显示日历。
  • 终端操作clear清空屏幕。
  • 系统信息uname -r查看内核版本。
  • 帮助文档help查询内置命令,man查看详细手册。