Linux常用命令详细介绍

一、文件操作(最常用场景)

1. ls:查看目录下的文件/目录

  • 功能:列出当前目录或指定目录下的内容(文件、文件夹)。
  • 语法ls [选项] [目录路径]
  • 常用选项
    • -l(长格式):显示文件详细信息(权限、所有者、大小、修改时间);
    • -a(all):显示所有文件(包括隐藏文件,以.开头);
    • -h(human-readable):文件大小以"K/M/G"显示(如1K、2M);
    • -t:按修改时间排序(最新修改的在前)。
  • 示例
    • ls:查看当前目录下的可见文件/目录;
    • ls -la /home:长格式显示/home目录下的所有文件(包括隐藏文件);
    • ls -lh:查看当前目录文件,大小以易读格式显示。

2. cat:查看/合并文件内容

  • 功能:读取文件内容并打印到终端,也可合并多个文件。
  • 语法cat [选项] [文件1] [文件2...]
  • 常用选项
    • -n:显示行号;
    • -b:只给非空行显示行号。
  • 示例
    • cat test.txt:查看test.txt的内容;
    • cat -n test.txt:查看test.txt并显示行号;
    • cat file1.txt file2.txt > file3.txt:合并file1file2的内容,输出到file3(覆盖原有内容)。

3. touch:创建空文件/更新文件修改时间

  • 功能:创建一个或多个空文件,若文件已存在,会更新其"最后修改时间"。
  • 语法touch [文件名1] [文件名2...]
  • 示例
    • touch note.txt:创建空文件note.txt
    • touch a.txt b.txt:同时创建a.txtb.txt
    • touch -d "2025-01-01" test.txt:修改test.txt的最后修改时间为2025年1月1日。

4. cp:复制文件/目录

  • 功能:复制文件或目录到指定位置。
  • 语法cp [选项] 源文件/目录 目标位置
  • 常用选项
    • -r(recursive):递归复制目录(复制目录必须加此选项);
    • -i(interactive):覆盖目标文件前提示确认;
    • -v(verbose):显示复制过程。
  • 示例
    • cp test.txt /home/user:将test.txt复制到/home/user目录下;
    • cp -r dir1 /home/user:将dir1目录及里面所有内容复制到/home/user
    • cp -iv a.txt b.txt:复制a.txtb.txt,覆盖前提示,且显示复制过程。

5. mv:移动/重命名文件/目录

  • 功能:移动文件/目录到新位置,或给文件/目录重命名(同一目录下移动即为重命名)。
  • 语法mv [选项] 源文件/目录 目标位置
  • 常用选项
    • -i:覆盖前提示;
    • -v:显示移动过程。
  • 示例
    • mv test.txt /home/user:将test.txt移动到/home/user
    • mv old.txt new.txt:将old.txt重命名为new.txt
    • mv -i dir1 dir2:若dir2已存在,提示后再移动dir1dir2

6. rm:删除文件/目录

  • 功能:删除文件或目录(谨慎使用,删除后难以恢复)。
  • 语法rm [选项] 文件/目录
  • 常用选项
    • -r:递归删除目录(删除目录必须加);
    • -f(force):强制删除,不提示(慎用);
    • -v:显示删除过程。
  • 示例
    • rm test.txt:删除test.txt(会提示确认,按y确认);
    • rm -rf dir1:强制删除dir1目录及所有内容(无提示,慎用);
    • rm -v *.txt:删除当前目录下所有.txt文件,并显示删除过程。

7. vi/vim:编辑文件(Linux自带编辑器)

  • 功能:创建或编辑文本文件,vim是vi的增强版(支持语法高亮、行号等)。
  • 语法vim [文件名]
  • 核心操作(新手必记)
    1. 打开文件:vim test.txt(文件不存在则创建);
    2. 进入编辑模式:按i键(左下角显示"INSERT");
    3. 保存退出:按Esc键退出编辑模式,输入:wq(write+quit),回车;
    4. 不保存退出:Esc:q!(强制退出,不保存修改);
    5. 查找内容:Esc/关键词(如/hello),按n下一个匹配,N上一个;
    6. 显示行号:Esc:set nu;隐藏行号::set nonu
  • 示例vim note.txt→按i输入内容→Esc:wq,保存并退出。

二、目录操作

1. pwd:查看当前所在目录路径

  • 功能 :打印当前工作目录的绝对路径(如/home/user/doc)。
  • 语法pwd(无复杂选项)
  • 示例 :在/home/user目录下执行pwd,输出/home/user

2. cd:切换目录

  • 功能 :切换到指定目录(Linux中.表示当前目录,..表示上级目录)。
  • 语法cd [目录路径]
  • 常用场景示例
    • cd /home:切换到/home目录(绝对路径,从根目录开始);
    • cd doc:切换到当前目录下的doc子目录(相对路径);
    • cd ..:切换到上级目录;
    • cd ~:切换到当前用户的家目录(如/home/user);
    • cd -:切换到上一次所在的目录。

3. mkdir:创建目录

  • 功能:创建一个或多个目录。
  • 语法mkdir [选项] [目录名1] [目录名2...]
  • 常用选项
    • -p(parents):递归创建多级目录(如创建a/b/c,若aa/b不存在则自动创建);
    • -v:显示创建过程。
  • 示例
    • mkdir dir1:创建dir1目录;
    • mkdir -p a/b/c:递归创建abc三级目录;
    • mkdir -v dir2 dir3:创建dir2dir3,并显示创建信息。

4. rmdir:删除空目录

  • 功能:删除空目录(若目录非空,需先删除里面的文件/子目录)。
  • 语法rmdir [选项] 目录名
  • 常用选项-p:递归删除空目录(如rmdir -p a/b/c,若a/b/ca/ba均为空,则依次删除)。
  • 示例rmdir dir1:删除空目录dir1;若dir1非空,提示"目录非空"。

三、系统管理(查看系统状态、硬件信息)

1. uname:查看系统内核信息

  • 功能:显示操作系统内核版本、主机名、硬件架构等。
  • 语法uname [选项]
  • 常用选项-a(all):显示所有信息(最常用)。
  • 示例uname -a,输出示例:Linux localhost 5.4.0-125-generic #141-Ubuntu SMP Wed Aug 10 13:42:03 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux(依次为系统名、主机名、内核版本、编译时间、架构)。

2. top:实时查看系统进程与资源占用

  • 功能:实时监控系统CPU、内存、进程的占用情况(类似Windows的任务管理器)。
  • 语法top
  • 核心操作
    • q退出;
    • P:按CPU占用率排序(默认);
    • M:按内存占用率排序;
    • k:输入进程ID(PID)杀死进程(需确认);
    • 1:显示所有CPU核心的占用情况。
  • 示例top,终端会实时刷新进程列表,显示PID、进程名、CPU使用率、内存使用率等。

3. free:查看内存使用情况

  • 功能:显示系统物理内存、交换内存(swap)的使用和空闲情况。

  • 语法free [选项]

  • 常用选项-h:以易读格式(K/M/G)显示。

  • 示例free -h,输出示例:

    复制代码
                total        used        free      shared  buff/cache   available
    Mem:           15Gi       2.3Gi        10Gi       224Mi       3.1Gi        13Gi
    Swap:          19Gi          0B        19Gi
    • total:总内存;used:已使用;free:完全空闲;available:可分配给应用的内存(含缓存可释放部分)。

4. df:查看磁盘空间使用情况

  • 功能 :显示文件系统的磁盘空间占用情况(如/根目录、/home目录的剩余空间)。

  • 语法df [选项]

  • 常用选项

    • -h:易读格式显示;
    • -T:显示文件系统类型(如ext4、xfs)。
  • 示例df -h,输出示例:

    复制代码
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda1       200Gi   50Gi  140Gi  27% /
    /dev/sdb1       500Gi  120Gi  380Gi  24% /home

5. du:查看文件/目录占用的磁盘空间

  • 功能 :计算文件或目录的磁盘占用大小(与df的区别:df看整体磁盘,du看单个文件/目录)。
  • 语法du [选项] [文件/目录]
  • 常用选项
    • -h:易读格式;
    • -s(summary):只显示总大小(不显示子目录/文件细节);
    • -a:显示所有文件和子目录的大小。
  • 示例
    • du -sh dir1:显示dir1目录的总占用空间(如2.5G);
    • du -h test.txt:显示test.txt的大小(如100K);
    • du -ha /home/user:显示/home/user下所有文件和目录的大小。

6. hostname:查看/修改主机名

  • 功能:查看当前主机名,或临时修改主机名(重启后失效)。
  • 语法
    • 查看:hostname
    • 临时修改:hostname 新主机名(如hostname mylinux)。
  • 示例hostname,输出当前主机名(如localhost)。

四、用户与权限管理(Linux核心安全特性)

1. whoami:查看当前登录用户

  • 功能:显示当前登录的用户名。
  • 语法whoami
  • 示例 :root用户登录时执行,输出root;普通用户登录输出user

2. su:切换用户

  • 功能:切换到其他用户(如从普通用户切换到root)。
  • 语法su [选项] 用户名
  • 常用选项-(或-l):切换用户的同时,加载该用户的环境变量(推荐使用)。
  • 示例
    • su root:切换到root用户(需输入root密码);
    • su - user:切换到user用户,并加载其家目录和环境变量;
    • su -:默认切换到root用户(等价于su - root)。

3. sudo:以其他用户权限执行命令

  • 功能 :普通用户临时以root或其他用户权限执行命令(需在sudoers文件中配置权限)。
  • 语法sudo [选项] 命令
  • 常用选项
    • -i:切换到root环境(等价于sudo su -);
    • -u 用户名:以指定用户权限执行(如sudo -u user ls);
    • -l:列出当前用户可执行的sudo命令。
  • 示例
    • sudo apt install nginx(Ubuntu):以root权限安装nginx;
    • sudo systemctl restart sshd:以root权限重启ssh服务;
    • sudo -i:切换到root环境,后续命令无需再加sudo。

4. chmod:修改文件/目录权限

  • 功能 :修改文件或目录的访问权限(读r、写w、执行x,对应数字421)。
  • 权限说明
    • 权限对象:所有者(u)、所属组(g)、其他用户(o)、所有用户(a);
    • 权限类型:读(r=4)、写(w=2)、执行(x=1);
    • 数字权限计算:如rwx=4+2+1=7rw-=4+2=6r--=4
  • 语法
    • 符号模式:chmod [对象][操作][权限] 文件(如chmod u+x test.sh);
    • 数字模式:chmod [权限数字] 文件(如chmod 755 test.sh)。
  • 示例
    • chmod u+x test.sh:给文件所有者(u)添加执行权限(x);
    • chmod g-w test.txt:给所属组(g)移除写权限(w);
    • chmod 755 dir1:目录权限设为rwxr-xr-x(所有者可读可写可执行,其他用户可读可执行);
    • chmod 644 test.txt:文件权限设为rw-r--r--(所有者可读可写,其他用户只读)。

5. chown:修改文件/目录的所有者和所属组

  • 功能:更改文件或目录的所有者(用户)和所属组。
  • 语法chown [选项] 所有者:所属组 文件/目录
  • 常用选项-R:递归修改目录及里面所有内容的权限。
  • 示例
    • chown user:user test.txt:将test.txt的所有者和所属组改为user
    • chown -R root:root dir1:递归将dir1目录及内容的所有者和所属组改为root;
    • chown user test.txt:只修改所有者为user,所属组不变。

五、网络操作(查看网络状态、连接、下载)

1. ifconfig/ip:查看网络接口信息

  • 功能 :查看网卡IP地址、MAC地址、网络状态等(ifconfig是老命令,ip是新版推荐)。

  • 语法

    • ifconfig(直接执行,显示所有网卡信息);
    • ip addr(等价于ifconfig,显示IP相关信息);
    • ip link:显示网卡链路状态(如是否启用)。
  • 示例ip addr,输出示例:

    复制代码
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:16:3e:00:11:22 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
           valid_lft forever preferred_lft forever
    • inet后为IP地址(192.168.1.100),link/ether后为MAC地址。

2. ping:测试网络连通性

  • 功能:向目标IP或域名发送数据包,测试是否能连通(基于ICMP协议)。
  • 语法ping [选项] 目标IP/域名
  • 常用选项
    • -c 次数:指定发送数据包的次数(默认无限发送);
    • -i 间隔:指定发送间隔(秒);
    • -w 超时时间:指定总超时时间(秒)。
  • 示例
    • ping baidu.com:测试与百度的连通性(默认无限发送,按Ctrl+C停止);
    • ping -c 4 192.168.1.1:向网关192.168.1.1发送4个数据包;
    • ping -w 5 baidu.com:超时时间5秒,5秒内无响应则停止。

3. netstat/ss:查看网络连接状态

  • 功能 :查看系统的TCP/UDP连接、端口监听状态(netstat老命令,ss更高效)。
  • 语法ss [选项]netstat [选项]
  • 常用选项
    • -t(tcp):只显示TCP连接;
    • -u(udp):只显示UDP连接;
    • -l(listen):只显示监听状态的端口;
    • -n:显示IP和端口(不解析域名和服务名);
    • -p:显示占用端口的进程(需root权限)。
  • 示例
    • ss -tlnp:查看所有监听的TCP端口及对应进程;
    • netstat -anp | grep 80:查看端口80的连接状态(如是否被nginx占用)。

4. wget:命令行下载文件

  • 功能:从网络上下载文件(支持HTTP、HTTPS、FTP协议)。
  • 语法wget [选项] 下载链接
  • 常用选项
    • -O 文件名:指定下载后的文件名(默认用链接中的文件名);
    • -P 目录:指定下载到的目录;
    • -c:断点续传(下载中断后可继续下载);
    • -q:静默下载(不显示下载进度)。
  • 示例
    • wget https://example.com/file.zip:下载file.zip到当前目录;
    • wget -O new.zip -P /home/user https://example.com/file.zip:下载文件并重命名为new.zip,保存到/home/user
    • wget -c https://example.com/large.file:断点续传大文件。

5. curl:发送HTTP请求/下载文件

  • 功能 :比wget更灵活,可发送GET/POST等HTTP请求,也可下载文件。
  • 语法curl [选项] 链接
  • 常用选项
    • -O:下载文件(默认用链接文件名);
    • -o 文件名:指定下载后的文件名;
    • -X 方法:指定HTTP方法(GET/POST/PUT/DELETE);
    • -d 数据:发送POST请求的数据(如表单数据);
    • -H 头部:添加HTTP请求头(如-H "Content-Type: application/json")。
  • 示例
    • curl -O https://example.com/file.txt:下载file.txt
    • curl -X POST -d "name=test" https://example.com/api:发送POST请求,携带表单数据name=test
    • curl https://example.com:发送GET请求,打印响应内容(如网页HTML)。

六、文件搜索与查找

1. find:查找文件/目录(按名称、大小、时间等)

  • 功能:在指定目录下递归查找文件或目录,支持多条件筛选(最强大的查找命令)。
  • 语法find [查找目录] [选项] [查找条件]
  • 常用选项与条件
    • -name "文件名":按名称查找(支持通配符*?);
    • -size 大小:按大小查找(如+10M大于10M,-5K小于5K,1G等于1G);
    • -type 类型:按类型查找(f文件,d目录,l符号链接);
    • -mtime 天数:按修改时间查找(+7修改时间超过7天,-3修改时间小于3天);
    • -user 用户名:按所有者查找;
    • -exec 命令 {} \;:对找到的文件执行指定命令({}代表找到的文件)。
  • 示例
    • find /home -name "*.txt":在/home目录下查找所有.txt文件;
    • find / -size +100M -type f:在根目录下查找大于100M的文件;
    • find ./ -mtime -1 -type f:在当前目录下查找24小时内修改过的文件;
    • find /tmp -name "test*" -exec rm -rf {} \;:在/tmp目录下查找以test开头的文件/目录,并删除。

2. grep:在文件中搜索字符串

  • 功能:在文件或命令输出中查找匹配的字符串(支持正则表达式)。
  • 语法grep [选项] "搜索字符串" [文件/命令]
  • 常用选项
    • -i:忽略大小写;
    • -n:显示匹配行的行号;
    • -r(recursive):递归搜索目录下的所有文件;
    • -v:反向匹配(显示不包含搜索字符串的行);
    • -E:支持扩展正则表达式(如|表示"或")。
  • 示例
    • grep "hello" test.txt:在test.txt中查找"hello"字符串;
    • grep -in "error" app.log:在app.log中查找"error",忽略大小写并显示行号;
    • grep -r "import" ./src:在./src目录下递归搜索所有文件中的"import";
    • ps aux | grep "nginx":查找nginx相关的进程(结合管道|,对ps aux的输出进行过滤)。

3. which:查找命令的绝对路径

  • 功能 :查找系统命令的绝对路径(如lsvim的安装位置)。
  • 语法which 命令名
  • 示例which ls,输出/bin/lswhich vim,输出/usr/bin/vim

七、压缩与解压(常用格式:zip、tar.gz、tar.bz2)

1. zip/unzip:压缩/解压zip格式文件

  • 功能:创建或解压zip格式压缩包(跨平台兼容,Windows也支持)。
  • 语法
    • 压缩:zip [选项] 压缩包名 要压缩的文件/目录
    • 解压:unzip [选项] 压缩包名
  • 常用选项
    • zip -r:递归压缩目录;
    • unzip -d 目录:指定解压到的目录;
    • unzip -l:查看压缩包内的文件列表。
  • 示例
    • zip -r docs.zip ./doc:将./doc目录压缩为docs.zip
    • unzip docs.zip:解压docs.zip到当前目录;
    • unzip docs.zip -d /home/user:将docs.zip解压到/home/user目录;
    • unzip -l docs.zip:查看docs.zip内的文件。

2. tar:压缩/解压tar.gz、tar.bz2格式文件(Linux最常用)

  • 功能 :打包文件/目录(tar本身不压缩,需结合gzipbzip2实现压缩),支持tar.gz(常用)、tar.bz2(压缩率更高)格式。
  • 语法tar [选项] 压缩包名 要压缩/解压的文件/目录
  • 核心选项(必记)
    • -c(create):创建压缩包(打包);
    • -x(extract):解压压缩包;
    • -z:用gzip压缩/解压(tar.gz格式);
    • -j:用bzip2压缩/解压(tar.bz2格式);
    • -v(verbose):显示压缩/解压过程;
    • -f(file):指定压缩包文件名(必须放在所有选项最后);
    • -C 目录:指定解压到的目录(解压时用)。
  • 示例
    • 压缩为tar.gz:tar -zcvf docs.tar.gz ./doc(将./doc压缩为docs.tar.gz);
    • 解压tar.gz:tar -zxvf docs.tar.gz(解压到当前目录);
    • 解压到指定目录:tar -zxvf docs.tar.gz -C /home/user
    • 压缩为tar.bz2:tar -jcvf docs.tar.bz2 ./doc
    • 解压tar.bz2:tar -jxvf docs.tar.bz2
    • 查看压缩包内容:tar -tvf docs.tar.gz(不解压,只看里面的文件)。

八、进程管理(启动、停止、查看进程)

1. ps:查看系统进程(静态快照)

  • 功能 :查看系统当前运行的进程(top是实时监控,ps是静态快照)。
  • 语法ps [选项]
  • 常用选项组合
    • ps aux:查看所有用户的所有进程(最常用);
    • ps -ef:查看进程的父进程ID(PPID)、进程ID(PID)等详细信息。
  • 示例ps aux | grep "java":查看所有java相关的进程;ps -ef | grep "nginx":查看nginx进程的PID和父进程ID。

2. kill:终止进程

  • 功能:向进程发送信号,终止指定进程(需知道进程ID(PID))。
  • 语法kill [信号] PID
  • 常用信号
    • -15(默认):正常终止进程(SIGTERM,进程有时间清理资源);
    • -9(强制终止):强制杀死进程(SIGKILL,无清理过程,慎用);
    • -1:重启进程(SIGHUP,如重启nginx)。
  • 示例
    • kill 1234:正常终止PID为1234的进程;
    • kill -9 1234:强制杀死PID为1234的进程(无法抗拒);
    • kill -1 5678:重启PID为5678的进程。

3. systemctl:管理系统服务(CentOS 7+/Ubuntu 16+)

  • 功能 :启动、停止、重启、设置开机自启等(替代老的service命令)。
  • 语法systemctl [操作] 服务名
  • 常用操作
    • start:启动服务;
    • stop:停止服务;
    • restart:重启服务;
    • status:查看服务状态;
    • enable:设置开机自启;
    • disable:取消开机自启。
  • 示例
    • systemctl start nginx:启动nginx服务;
    • systemctl stop sshd:停止ssh服务;
    • systemctl restart mysql:重启mysql服务;
    • systemctl status docker:查看docker服务的运行状态;
    • systemctl enable nginx:设置nginx开机自启;
    • systemctl disable firewalld:取消防火墙开机自启。

九、新手必备快捷键

  • Ctrl+C:终止当前命令(如停止pingtop);
  • Ctrl+D:退出当前终端或用户(等价于exit);
  • Ctrl+Z:暂停当前命令(后续可用fg恢复到前台,bg放到后台);
  • Ctrl+L:清屏(等价于clear命令);
  • Tab:自动补全命令、文件名、目录名(按一次补全,按两次显示所有候选);
  • ↑/↓:查看历史命令(之前执行过的命令);
  • history:查看所有历史命令(输入!命令序号可重复执行该命令)。

核心总结

Linux常用命令集中在「文件/目录操作、系统监控、权限管理、网络操作」四大场景,新手优先掌握:

  1. 文件/目录:ls、cd、pwd、mkdir、cp、mv、rm、vim、cat
  2. 系统监控:top、free、df、ps
  3. 权限管理:chmod、chown、sudo、su
  4. 网络操作:ip、ping、netstat、wget
  5. 压缩解压:tar、zip、unzip

记住"选项辅助功能,示例落地用法",多实操就能熟练,遇到不懂的命令可执行man 命令(如man ls)查看官方手册。

相关推荐
Y淑滢潇潇1 小时前
RHCE Day 9 SHELL条件测试
linux·运维·服务器
激动的兔子1 小时前
Geoserver修行记-SLD样式内的中文字体乱码
运维·geoserver
cqsztech1 小时前
oracle linux 9.6上安装oracle database 19.3 标准版 docker
linux·数据库·oracle
ii_best1 小时前
用鹰眼投屏软件注册Vinted,跨境入门效率翻倍教程
大数据·运维·服务器
yenggd1 小时前
Centos7.9系统安装kvm
linux
..过云雨1 小时前
14.【Linux系统编程】进程间通信详解(管道通信、System V共享内存、消息队列、信号量)
linux·c语言·c++·后端
却话巴山夜雨时i1 小时前
295. 数据流的中位数【困难】
java·服务器·前端
深耕AI1 小时前
【wordpress系列教程】01本地部署和云服务器部署
运维·服务器
嵌入式郑工1 小时前
UBUNTU开发环境下的一些实用的工具
linux·运维·ubuntu