2.1 常见命令
2.1.1 查看当前登录用户信息的基础命令
last # 显示上次登录的用户列表信息
who # 显示当前所有登录到系统的用户信息
whoami # 查看当前登录的用户
who am i # 仅显示当前终端登录系统的用户名+终端+登录时间+来源主机,‘i’可以是任意字符,等同于who -m
[wch@wch-rokey-9 ~]$ whoami
wch
[wch@wch-rokey-9 ~]$ who am i
wch pts/1 2025-09-03 08:51 (10.0.0.1)
[wch@wch-rokey-9]$ who
root tty1 2025-09-03 09:45
wch pts/0 2025-09-03 10:54 (10.0.0.1)
id # 查看当前用户的所有信息
su 用户 # 切换用户,切换后保存上一个用户的信息
su - 用户 # 切换一个全新的用户,切换后在新用户的家目录下
w # 显示当前系统登录的用户和活动状态
[wch@wch-rokey-9 ~]$ w09:32:04 up 2:26, 2 users, load average: 0.00, 0.00, 0.00
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
wch pts/0 二10 22:09m 0.06s 0.06s sshd: wch [priv]
wch pts/1 08:51 2.00s 0.03s 0.00s w
2.1.2 简单的shell命令
Shell:操作系统和应用程序之间的命令翻译工具
echo $SHELL # 查看当前系统的shell
cat /etc/shells # 查看当前系统支持的shell
[wch@wch-rokey-9 ~]$ echo $SHELL
/bin/bash
[wch@wch-rokey-9 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash/bin/bash 脚本 # 执行脚本文件
2.1.3 变量相关命令
echo $变量名 # 查看变量
env # 查看系统变量
变量名="/path/to/file" # 临时定义变量
2.1.4 查看系统信息的命令
lscpu # 查看cpu
free # 查看内存
arch # 查看系统架构
uname -r # 查看内核信息
cat /etc/redhat-release # 查看系统发行版本信息(Rokey)
cat /etc/os-release # 查看系统发行版本信息
cat /etc/lsb-release # 查看系统发现版本(Ubuntu)
2.1.5 进程基本命令查看
# PS
ps aux # 常见搭配,列出所有进程,并列出属主
ps -ef # 常见搭配,列出所有进程,并列出属主
ps -eFH # 详细格式列出所有进程
pstree # 树状图的形式直观的显示进程和子进程
2.1.6 历史命令
# 命令行上下箭头可找历史命令
ctrl+p # 显示上一条命令,上箭头一个效果
history # 显示历史命令
history -c # 清除历史命令
!! # 重复执行上一条命令
!n # 执行history的第n条命令
!string # 重复前一个以“string”开头的命令
ctrl+r # 进入历史命令的模式下搜索命令
ctrl+g # 退出搜索模式
2.1.7 命令行快捷键
ctrl+A # 光标回行首
ctrl+E # 光标回行尾ctrl+k # 删除光标到行尾内容
ctrl+u # 删除光标到行首内容
ctrl+y # 粘贴删除的内容
ctrl+c # 终止执行的命令
Esc+b/Alt+b # 移动到单词开头
Esc+f/Alt+f # 移动到单词结尾
2.1.8 命令帮助
# whatis借助linux内部的命令数据库文档显示命令的简单描述# man命令可以获取对应命令的详细手册# --help绝大多数命令都支持该选项,显示对应命令的基本用法# info命令:类似man,但显示的结果更加结构化,包含更多示例(看发行版)
2.2 文件与目录命令
ls # 不加目录默认显示当前目录下文件,加目录显示该目录下文件信息
tree dir # 以树形结构显示dir目录结构
mkdir dir # 创建dir目录
mkdir -p /dir/dir1/dir2 # 递归创建目录
cd dir # 进入到dir目录
cd ~ # 进入到家目录
cd - # 进入到上一次访问的目录下
cd . # 进入当前所在目录
cd .. # 进入上一级目录
pwd # 打印当前所在绝对路径
cp sour_file dest_file # 文件复制
cp file dir1 # 把文件复制到目录,文件可以是多文件
cp -r dir1 dir2 # 复制目录
mv file1 file2 # 同目录下移动相当于重命名,不同目录则实现文件转移
touch file1 # 创建文件
rm -rf file|dir # 删除文件|目录;-f是强制删除,-r是删目录
cat/tac/rev命令
cat -n [file] # 查看文件内容,显示行号
cat -A [file] # 显示所有不可见字符的可见形式
cat -E [file] # 显示结尾符号$
cat -b [file] # 空行不显示行号
cat -s [file] # 压缩连续空行为一行
# tac命令逆向显示文件内容,cat的反义
# rev命令逆向显示文件内容,区别tac,rev行内容也逆向
head/tail命令
head -n N [file] # 显示文件的前N行内容
[wch@wch-rokey-9]$ head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
head -c N [file] # 显示文件的前N个字符(截取字符)
# tail是head的反向命令
tail -n 10 [file] # 显示文件后十行内容
tail -f # 实时监控文件,常用监控日志记录
[wch@wch-rokey-9]$ sudo tail -n1 -f /var/log/messages
[sudo] wch 的密码:
Sep 15 06:20:30 wch-rokey-9 systemd-logind[806]: Removed session 1.
# head和tail可配合获取文件中某一行内容
[wch@wch-rokey-9]$ head -n10 /etc/passwd | tail -n1
operator:x:11:0:operator:/root:/sbin/nologin
echo/printf命令
# 将内容显示到默认的输出设备
echo "hello world!" # 将hello world输出到终端命令行
echo "hello world" >> ./hello # 将字符串hello world追加到文件hello中
echo -e [string] # 启用转义字符的解析
[wch@wch-rokey-9]$ echo -e "The 2021 State of DevOps Report\n\t- is here" # 将\n和\t转换为换行符和tab
The 2021 State of DevOps Report- is here
echo -n [string] # 信息输出是不换行
[wch@wch-rokey-9]$ echo -n "hello world!"
hello world!07:37:29-[当前目录:~]
# printf类似C语言的printf函数,可格式化显示一些信息
[wch@wch-rokey-9]$ printf "hello world\n"
hello world
08:21:05-[当前目录:~]
[wch@wch-rokey-9]$ printf "hello world" # 区别于echo,printf默认不换行,需要加\n
hello world08:21:13-[当前目录:~]
[wch@wch-rokey-9]$ printf "姓名:%s, 语文:%d, 数学:%d\n" "张三" 89 98 # printf占位符
姓名:张三, 语文:89, 数学:98
[wch@wch-rokey-9]$ printf "(%d %s)\n" 1 张三 2 李四 3 王五 # 批量化输出信息
(1 张三)
(2 李四)
(3 王五)
wall/write命令
# wall用于给多用户广播发送消息,一般用于系统管理向登录到系统的用户广播通知
wall "message-hello" # 将该信息发送给所有系统已登录用户
wall message.txt # 将该文件内容发送给所有系统已登录用户
# write区别于wall,write可指定具体用户发送消息
write [用户名] [ttyname]
[wch@wch-rokey-9]$ echo "hello wch pts/0" | write wch pts/0
[wch@wch-rokey-9]$
wch@wch-rokey-9.6 于 pts/1 在 08:07 发的消息...
hello wch pts/0
EOF