Linux 基本命令3
- 工具使用命令
- 使用 vim 编辑器命令 vim
- 使用 nano 文本编辑器命令 nano
- 使用 gcc/g++ 编译器命令 gcc/g++
- 使用 gdb/cgdb 调试器命令 gdb/cgdb
- 使用自动化构建命令 make
- 使用版本控制器命令 git
- 系统或进程相关命令
- 读取输入并赋值给变量命令 read
- 设置或修改 shell 环境命令 set
- 设置环境变量命令 export
- 测试网络连接命令 ping
- 显示系统登录记录命令 last
- 显示失败登录尝试记录命令 lastb
- 显示当前登录用户及其活动命令 w
- 实时动态查看系统状态命令 top
- 实时系统监控命令 htop
- 显示虚拟内存统计信息命令 vmstat
- 显示系统内存的使用情况命令 free
- 显示用户失败登录的相关信息命令 faillog
- 查看当前系统进程状态命令 ps
- 向进程发送信号命令 pkill
- 显示当前 shell 会话中后台运行的任务命令 jobs
- 将后台任务切换到前台命令 fg
- 将已停止的任务放到后台继续运行命令 bg
- 快捷键
- Ctrl + z 快捷键将当前正在运行的前台进程任务挂起
- 其它命令
- 显示可执行文件或共享库依赖的动态链接库命令 ldd
- 复制文件、设置权限以及创建目录命令 install
- 对文本文件或输入内容进行排序命令 sort
- 反向显示文件内容命令 tac
- 格式打印命令 printf
- 其它操作
- 执行当前目录的可执行文件表达方式 ./
工具使用命令
使用 vim 编辑器命令 vim
语法:vim [选项] [文件名]
功能:选择 vim 的打开方式
常用选项:
- -R:以只读模式打开文件
- -r:恢复崩溃前的文件(用于恢复未保存的修改)
- +[行号]:打开文件并跳转到指定行的行号
- +[“命令”]:启动 vim 时 vim 可直接执行双引号中的 命令
- -c ‘命令’ :启动后执行 vim 命令,同上
vim -d [文件名1] [文件名2]
:对比两个文件(进入 diff 模式)- --noplugin :禁用插件加载
- -u NONE :不加载任何配置文件(安全模式)
vim -c "oldfiles
:显示最近打开的文件列表- -x:创建或编辑加密文件(首次需设置密码)
- -X:禁用与 X Server 的连接(加速启动)
- -b:以二进制模式打开文件
其它操作:
vim [文件名1] [文件名2] [文件名3] ...
同时打开多个文件- 不写文件名默认打开一个新文件
关于 vim 更详细介绍请参考:(学习总结25)Linux工具:vim 编辑器 和 gcc/g++ 编译器
使用 nano 文本编辑器命令 nano
语法:nano [选项] [文件名]
功能:使用 nano 文本编辑器
常用选项:
- -w :关闭自动换行(适合编辑代码)
- -l :显示行号
使用 gcc/g++ 编译器命令 gcc/g++
语法:
gcc [选项] [源文件] ... -o [输出文件]
g++ [选项] [源文件] ... -o [输出文件]
功能:gcc 将 .c 文件编译成可执行文件,g++ 将 .cpp 文件编译成可执行文件。
常用选项:
- -c :只编译不链接,生成目标文件(.o)
- -g :生成调试信息,用于 gdb 调试
- -Wall :启用所有警告信息
- -O1/-O2/-O3 :优化级别(1 为基本优化,3 为最高优化)
- -I [目录] :指定目录搜索头文件
- -L [目录] :指定目录搜索库文件
- -I(等价 shift+i) [库名] :链接指定的库(如 -lm 链接数学库)
- -std=[标准] :指定语言标准(如 -std=c11 或 -std=c++17)
预处理选项:
- -E :只进行预处理,输出到标准输出
- -D[宏] :定义宏(如 -DDEBUG 定义 DEBUG 宏)
- -U[宏] :取消定义宏
- -I[目录] :添加头文件搜索路径
- -M:生成依赖关系(用于 Makefile)
- -MM :生成依赖关系,忽略系统头文件
编译选项:
- -S :只编译到汇编代码,生成 .s 文件
- -fPIC :生成位置无关代码(用于动态库)
- -fno-stack-protector :禁用栈保护
- -fstack-protector :启用栈保护
- -fomit-frame-pointer :省略帧指针(优化性能)
- -pipe :使用管道代替临时文件(加快编译速度)
优化选项:
- -O0 :不优化(默认)
- -O1 :基本优化
- -O2 :更多优化(推荐)
- -O3 :最高优化
- -Os :优化代码大小
- -Ofast :激进优化(可能不符合标准)
- -flto :启用链接时优化
调试选项:
- -g :生成调试信息
- -ggdb :生成 GDB 专用调试信息
- -g3 :生成更多调试信息(如宏定义)
- -p :生成性能分析信息(用于 gprof)
- -pg :生成性能分析信息(用于 gprof)
链接选项:
- -static :静态链接
- -shared :生成共享库(动态库)
- -L[目录] :添加库文件搜索路径
- -l[库名] :链接指定库(如 -lm 链接数学库)
- -nostdlib :不链接标准库
- -nodefaultlibs :不链接默认库
- -pie :生成位置无关可执行文件
警告选项:
- -w :不生成任何警告信息
- -Wall :启用所有常见警告
- -Wextra :启用额外警告
- -Werror :将警告视为错误
- -Wno-[警告] :禁用特定警告
- -pedantic :严格遵循标准
- -pedantic-errors :严格遵循标准并将警告视为错误
语言标准选项:
- -std=c89 :使用 C89 标准
- -std=c99 :使用 C99 标准
- -std=c11 :使用 C11 标准
- -std=c++98 :使用 C++98 标准
- -std=c++11 :使用 C++11 标准
- -std=c++14 :使用 C++14 标准
- -std=c++17 :使用 C++17 标准
- -std=c++20 :使用 C++20 标准
其它选项:
- -v :显示编译过程详细信息
- -### :显示但不执行编译命令
- -save-temps :保存临时文件(如 .i、.s、.o)
- -march=[架构] :指定目标架构(如 -march=native)
- -mtune=[架构] :优化目标架构(如 -mtune=native)
关于 gcc/g++ 更详细介绍请参考:(学习总结25)Linux工具:vim 编辑器 和 gcc/g++ 编译器
使用 gdb/cgdb 调试器命令 gdb/cgdb
语法:
gdb [可执行文件]
cgdb [可执行文件]
功能:调试程序,查找 bug
关于 gdb/cgdb 更详细介绍请参考:(学习总结26)Linux工具:make/Makefile 自动化构建、Git 版本控制器 和 gdb/cgdb 调试器
使用自动化构建命令 make
语法:make [选项] [目标]
功能:执行 Makefile 文件中的目标
常用选项:
- -f [文件名] :指定使用的 Makefile 文件名。默认情况下,make 会在当前目录下查找名为 Makefile 或 makefile 的文件
- -n :只打印要执行的命令,但不实际执行
- -s :安静模式,不显示执行的命令,只显示执行结果
- -B :强制重新构建所有目标
- -C [目录路径] :切换到指定目录后执行 make
- -k 出错时继续执行其他目标
- -j [并行任务数] :指定并行执行的任务数,加快编译速度
其它操作:
- 不指定文件名,make 默认会在当前目录搜索并使用名为 Makefile 或 makefile 的文件。
关于 make 自动化构建更详细介绍请参考:(学习总结26)Linux工具:make/Makefile 自动化构建、Git 版本控制器 和 gdb/cgdb 调试器
使用版本控制器命令 git
关于 git 详细命令介绍请参考:(学习总结26)Linux工具:make/Makefile 自动化构建、Git 版本控制器 和 gdb/cgdb 调试器
系统或进程相关命令
读取输入并赋值给变量命令 read
语法:read [选项] [变量名]
功能:从标准输入(通常是键盘)读取用户输入并将其赋值给变量的命令,通常用于脚本中与用户交互,获取数据。
常用选项:
-p "提示信息"
:在读取输入前显示提示信息- -s :静默模式,输入内容不会显示在屏幕上(常用于密码输入)
-t [秒数]
:设置超时时间,超过指定时间未输入则命令退出-n [字符数]
:限制输入的字符数,达到指定字符数后自动结束输入-a [数组名]
:将输入的内容按空格分隔并存入数组- -r :禁止反斜杠
\
转义字符
其它操作:
- 如果未指定变量名,read 命令会将输入内容存储到默认变量
REPLY
中
设置或修改 shell 环境命令 set
语法:set [选项] [参数]
功能:用于设置或修改 Shell 环境,它可以用来控制 shell 的特性、显示变量、设置位置参数
常用选项:
- -e :如果命令返回非零退出状态(失败),立即退出脚本
- -x :打印执行的每一行命令及其结果(用于调试脚本)
- -u :使用未定义的变量时,报错并退出脚本
- -o :启用特定的 shell 选项(例如 nounset、errexit 等)
- +o :禁用特定的 shell 选项
- -a :自动导出所有定义的变量(相当于 export)
- -v :打印读取的每一行输入(用于调试)
- -n :读取命令但不执行(用于检查脚本语法)
其它操作:
- 不写选项和参数时,会显示当前 shell 环境中所有已定义的变量和函数,包括环境变量、局部变量和 shell 函数
设置环境变量命令 export
语法:export [选项] [变量名]=[值]
功能:设置的变量会在整个 shell 会话中生效,直到会话结束或被取消设置
常用选项:
- -p :显示当前所有已导出的环境变量
测试网络连接命令 ping
语法:ping [选项] [目标主机]
功能:发送 ICMP 回显请求 数据包到目标主机,并等待目标主机返回回显应答,从而检测网络是否连通以及测量网络延迟
常用选项:
- 没有选项默认会一直发送,直到按
Ctrl+c
停止 -c [次数]
:指定发送数据包的次数-i [间隔]
:设置发送数据包的时间间隔(单位为秒)-s [大小]
:设置发送的数据包大小(单位为字节)-t [生存时间]
:设置数据包的生存时间-W [超时]
:设置等待回显应答的超时时间(单位为秒)- -q :静默模式,只显示统计信息
- -4 :强制使用 IPv4
- -6 :强制使用 IPv6
目标主机:可以是 IP 地址 或 域名。
显示系统登录记录命令 last
语法:last [选项] [用户名] [终端]
功能:last 命令会从 /var/log/wtmp
文件中读取登录和注销信息,并按时间顺序显示用户的登录历史
用户名:显示指定用户的登录记录
终端:显示指定终端的登录记录
常用选项:
-n [行数]
:限制显示的行数- -x :显示系统关机、重启等事件
- -i :显示 IP 地址而不是主机名
- -a :在最后一列显示主机名或 IP 地址
- -d :将 IP 地址解析为主机名
-f [文件名]
:指定替代/var/log/wtmp
的文件- -R :不显示主机名或 IP 地址
-t [年][月][日][小时][分钟][秒]
:显示指定时间之前的记录
显示失败登录尝试记录命令 lastb
语法:lastb [选项] [用户名] [终端]
功能:会从 /var/log/btmp
文件中读取失败的登录尝试信息,并按时间顺序显示
用户名:显示指定用户的失败登录记录
终端:显示指定终端的失败登录记录
常用选项:
-n [行数]
:限制显示的行数- -x :除了常规的失败登录记录,还会显示系统的启动、关机和运行级别更改等信息
- -i :显示 IP 地址而不是主机名
- -a :在最后一列显示主机名或 IP 地址
- -d :将 IP 地址解析为主机名
-f [文件名]
:指定替代/var/log/wtmp
的文件- -R :不显示主机名或 IP 地址
-t [年][月][日][小时][分钟][秒]
:显示指定时间之前的记录
显示当前登录用户及其活动命令 w
语法:w [选项] [用户名]
功能:显示当前登录用户及其活动
常用选项:
- -h :不显示头部信息(系统时间、运行时间等)
- -u :显示详细的空闲时间和进程 CPU 时间
- -s :使用短格式显示信息
- -f :切换是否显示登录来源(默认显示)
- -i :显示 IP 地址而不是主机名
实时动态查看系统状态命令 top
语法:top [选项]
功能:显示系统的整体运行情况(如 CPU 使用率、内存使用率、负载等)以及当前运行的进程信息
常用选项:
-d [秒数]
:设置刷新间隔时间(单位为秒)-p [PID]
:仅显示指定 PID 的进程信息-u [用户名]
:仅显示指定用户的进程信息-n [次数]
:刷新指定次数后退出- -b :以批处理模式运行,适合将输出重定向到文件
- -H :显示线程信息(而不是进程)
- -c :显示完整的命令行(而不仅仅是命令名称)
实时系统监控命令 htop
语法:htop [选项]
功能:增强版的实时系统监控工具,类似于 top,但提供了更友好的交互式界面和更丰富的功能。
常用选项:
-d [秒数]
:设置刷新间隔时间(单位为秒)-p [PID]
:仅显示指定 PID 的进程信息-u [用户名]
:仅显示指定用户的进程信息- -t :显示树状结构(进程父子关系)
- -C :禁用颜色显示
-s [列名]
:按指定列排序(如 PID、CPU%、MEM% 等)
显示虚拟内存统计信息命令 vmstat
语法:vmstat [选项] [间隔时间] [次数]
功能:报告系统的进程、内存、分页、块 I/O、中断和 CPU 活动等信息
间隔时间:每次报告之间的时间间隔(单位为秒)
次数:报告的次数,如果未指定次数,会持续运行
常用选项:
- -a :显示活跃和非活跃内存
- -f :显示系统启动以来的 fork 数量
- -m :显示 slab 内存信息
- -s :显示内存统计信息的汇总表
- -d :显示磁盘统计信息
-p [分区]
:显示指定分区的 I/O 统计信息-S [单位]
:指定内存显示的单位(如k
=KB,m
=MB)- -t :在输出中增加时间戳
显示系统内存的使用情况命令 free
语法:free [选项]
功能:报告物理内存、交换分区(swap)和内核缓冲区的使用情况。
常用选项:
- -b :以字节为单位显示内存使用情况
- -k :以 KB 为单位显示内存使用情况(默认)
- -m :以 MB 为单位显示内存使用情况
- -g :以 GB 为单位显示内存使用情况
- -h :以人可读的格式显示内存使用情况(自动选择合适的单位)
- -t :在输出中增加一行总计信息
-s [秒数]
:定期刷新显示内存使用情况(单位为秒)-c [次数]
:指定刷新次数
显示用户失败登录的相关信息命令 faillog
语法:faillog [选项]
功能:会从 /var/log/faillog
文件中读取失败登录尝试的记录,并允许管理员查看、重置或配置失败登录的限制
常用选项:
- -a :显示所有用户的失败登录记录
-u [用户名]
:显示指定用户的失败登录记录- -r :重置指定用户的失败登录计数
-m [最大次数]
:设置允许的最大失败登录次数-l [时间]
:设置失败登录后的锁定时间(单位为秒)-t [天数]
:显示指定天数内的失败登录记录
查看当前系统进程状态命令 ps
语法:ps [选项]
功能:显示正在运行的进程及其详细信息,如进程 ID(PID)、CPU 使用率、内存使用率等
常用选项:
- -e 或 -A:显示所有进程
- -f:显示完整格式的进程信息
- -F:显示更详细的完整格式
- -u [用户名]:显示指定用户的进程
- -U [用户名]:显示指定用户的所有进程(包括未关联终端的进程)
- -T:显示进程的线程信息
- -L:显示线程信息,并包含 LWP(轻量级进程 ID)和 NLWP(线程数)
- -p [PID]:显示指定进程 ID 的信息
- -j 提供详细的任务信息
- -H 以层级结构显示进程,将进程按照进程树的形式输出
- --forest:以树状结构显示进程及其子进程
- -aux:显示所有用户的进程,包括详细信息(CPU、内存等)
- -o [字段]:自定义输出字段
向进程发送信号命令 pkill
语法:pkill [选项] [模式]
功能:根据进程名或其它属性向进程发送信号,它是 kill 命令的扩展版本。
常用选项:
- 没有选项默认向匹配的进程发送 SIGTERM(15) 信号,请求进程终止。
-[信号]
:指定发送信号(如 -9 表示 SIGKILL,强制终止)- -f :匹配完整的命令行(不仅是进程名)
-u [用户名]
:仅匹配指定用户的进程-t [终端]
:仅匹配指定终端运行的进程- -x :精确匹配进程名(避免部分匹配)
- -n :仅匹配最近启动的进程
- -o :仅匹配最早启动的进程
-P [父进程ID]
:仅匹配指定父进程的子进程- -c :统计匹配的进程数量(不发送信号)
显示当前 shell 会话中后台运行的任务命令 jobs
语法:jobs [选项]
功能:可以列出所有后台任务的状态(如运行中、已停止等),并允许用户管理这些任务(如切换到前台、继续运行等)。
常用选项:
- -l :显示任务的 PID
- -p :仅显示任务的 PID
- -n :仅显示状态发生变化的任务
- -r :仅显示正在运行的任务
- -s :仅显示已停止的任务
将后台任务切换到前台命令 fg
语法:fg [%任务编号] 或 fg [任务编号]
功能:将后台任务切换到前台
其它操作:
- 不带任务编号默认切换最近后台任务到前台
将已停止的任务放到后台继续运行命令 bg
语法:bg [%任务编号] 或 bg [任务编号]
功能:将已停止的任务放到后台继续运行
其它操作:
- 恢复最近的后台任务到后台运行
快捷键
Ctrl + z 快捷键将当前正在运行的前台进程任务挂起
Ctrl + z
是一个常用的快捷键,用于将当前正在运行的前台进程任务挂起(暂停),并将其放入后台的作业列表。
-
当用户在终端运行一个命令或程序时,按下
Ctrl + z
会立即暂停该进程,并释放终端控制权,返回到 shell 命令行。 -
进程被挂起后,其状态(如内存数据、运行位置等)会被保留,不会被终止。
其它命令
显示可执行文件或共享库依赖的动态链接库命令 ldd
语法:ldd [选项] [文件名或共享库]
功能:显示一个可执行文件或共享库所依赖的所有共享库(动态链接库)。
常用选项:
- -v :显示详细的版本信息
- -u :显示未使用的直接依赖项
- -d :执行重定位并报告丢失的函数
- -f :执行重定位并报告丢失的函数和数据
- -r :执行数据对象和函数的重定位,并报告任何丢失的对象和函数
复制文件、设置权限以及创建目录命令 install
语法:
install [选项] [源文件] [目标文件]
install [选项] [源文件1] [源文件2] ... [目标目录]
功能:安装脚本或文件到指定位置,并确保文件具有正确的权限和所有权。
常用选项:
-m [模式]
:设置文件的权限模式-o [用户]
:设置文件的所有者-g [组]
:设置文件的所属组- -d :创建目录(类似于 mkdir -p)
- -T :将目标视为文件而不是目录
- -v :显示详细操作信息
对文本文件或输入内容进行排序命令 sort
语法:sort [选项] [文件名]
功能:对文本文件或输入内容进行排序。
常用选项:
- -r :逆序排序(默认是升序)
- -n :按数值大小排序(而不是按字母顺序)
-k [列数]
:指定按某一列或字段排序(字段从 1 开始计数)-t '字段'
:指定字段分隔符(默认是空格)- -u :去重,仅输出唯一的行
- -f :忽略大小写
-o [文件名]
:将排序结果输出到指定文件(而不是标准输出)- -c :检查文件是否已排序,如果未排序则报错
- -b :忽略行首的空白字符
反向显示文件内容命令 tac
语法:tac [选项] [文件名]
功能:反向显示文件内容,与 cat 命令相反。
常用选项:
- -b 或 --before :在行首(而非默认的行尾)添加分隔符(需配合 -s 使用)
- -r 或 --regex :将分隔符视为正则表达式(默认分隔符为换行符 \n)
-s [分隔符]
:指定自定义行分隔符(默认按换行符 \n 分块)
格式打印命令 printf
语法:printf "格式字符串" [参数1] [参数2] ...
功能:将规定的参数结构化输出到屏幕,类似于 C 语言的 printf 函数。
常用格式符说明:
- %s : 表示字符串
- %d :表示整数(十进制)
- %f :浮点数(默认保留 6 位小数)
- %x :16 进制整数(小写字母)
- %X :16 进制整数(大写字母)
- %% :输出 ’ % ’ 符号
其它操作
执行当前目录的可执行文件表达方式 ./
语法:./[可执行文件名]
功能:其不是一个命令,而是一个路径的表达方式,用于执行当前目录的可执行文件或脚本。