Linux入门第一部分(Ubuntu入门篇) 第二章 浅尝Ubuntu(一)

参考教程:https://www.bilibili.com/video/BV1vE411h7Fi/?spm_id_from=333.788.videopod.episodes&vd_source=8f8a7bd7765d52551c498d7eaed8acd5

一、Ubuntu终端操作与Shell命令

1、终端的打开方式

(1)在Ubuntu桌面(或者任意其它位置)按下快捷键Ctrl+Alt+T,可以打开终端。

(2)在Ubuntu桌面右键空白区域,选择"在终端中打开",也可以打开终端。

2、常用的Shell命令

(1)目录信息查看命令ls:

①语法:

ls 选项 目录/文件名 # 方括号表示可选参数,选项用"-"引出,选项可多选

②不同选项及组合的作用:

|---------|-------------------------------------------------|
| 命令 | 作用 |
| ls | 只列出当前目录下文件和文件夹名字,不显示隐藏文件 |
| ls -l | 列出当前目录下文件和文件夹的名字、权限、所有者、大小、修改时间,不显示隐藏文件 |
| ls -lh | 列出当前目录下文件和文件夹的名字、权限、所有者、大小(人类可读形式)、修改时间,不显示隐藏文件 |
| ls -a | 列出当前目录下全部文件和文件夹,包含"."开头的隐藏文件 |
| ls -alh | 列出当前目录下文件和文件夹的名字、权限、所有者、大小、修改时间,包含"."开头的隐藏文件 |
| ls -R | 递归列出当前目录及所有子目录的文件 |
| ls -lt | 列出当前目录下文件和文件夹的名字、权限、所有者、大小、修改时间,按修改时间排序,不显示隐藏文件 |
| ls -d | 只看目录本身信息,不进入目录列出内部文件 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~$ ls
snap  下载  公共  图片  文档  桌面  模板  视频  音乐
zevalin@zevalin-VMware-Virtual-Platform:~$ ls -l
total 36
drwx------ 	6 zevalin zevalin 4096 Oct 18 12:00 	snap
drwxr-xr-x 	2 zevalin zevalin 4096 Oct 17 16:26 	下载
drwxr-xr-x 	2 zevalin zevalin 4096 Oct 17 16:26 	公共
drwxr-xr-x 	2 zevalin zevalin 4096 Oct 17 16:26 	图片
drwxr-xr-x 	2 zevalin zevalin 4096 Oct 17 16:26 	文档
drwxr-xr-x 	2 zevalin zevalin 4096 Oct 18 00:49 	桌面
drwxr-xr-x 	2 zevalin zevalin 4096 Oct 17 16:26 	模板
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 视频
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 音乐

(2)目录切换命令cd:

①语法:

cd 目标目录路径 # 方括号表示可选参数

在输入路径时,如果文件或文件夹名太长,可以输入部分字段,然后按下Tab键,直接自动补全,当然,如果输入的字段过短,PC可能无法精准匹配字符串,但也会补全到PC能够识别到的子串,用户可继续输入后续的部分,再按下Tab键,继续自动补全

②不同选项及组合的作用:

|-------------|------------------------------------|
| 命令 | 作用 |
| cd <目录名> | 进入当前目录下的子文件夹,其中参数是子文件夹相对于当前目录的相对路径 |
| cd /xxx/yyy | 进入参数指示的绝对路径(绝对路径从根目录开始跳转) |
| cd .. | 返回上一级目录,其中".."代表父目录 |
| cd ../xxx | 返回上一级目录,接着进入上级目录中的xxx文件夹 |
| cd . | 目录不跳转,仍保持在当前目录工作 |
| cd ~ | 回到用户家目录"/home/user",其中"~"代表家目录 |
| cd - | 回到上一次切换目录时所在的目录 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cd
zevalin@zevalin-VMware-Virtual-Platform:~$ cd snap
zevalin@zevalin-VMware-Virtual-Platform:~/snap$ cd ..
zevalin@zevalin-VMware-Virtual-Platform:~$ cd unclearpath
bash: cd: unclearpath: 没有那个文件或目录

(3)当前路径显示命令pwd:

①语法:

pwd 选项 # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|--------|----------------------------------|
| 命令 | 作用 |
| pwd | 输出当前所在目录的绝对路径 |
| pwd -L | 输出当前所在目录的逻辑路径(跟随软链接,初学阶段无需关注) |
| pwd -P | 输出当前所在目录的物理真实路径(不跟随软链接,初学阶段无需关注) |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ pwd
/home/zevalin/桌面
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ pwd -L
/home/zevalin/桌面
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ pwd -P
/home/zevalin/桌面

(4)系统信息查看命令uname:

①语法:

uname 选项 # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|----------|---------------------------|
| 命令 | 作用 |
| uname | 输出内核名称,用于确认系统类型 |
| uname -s | 输出内核名称,用于确认系统类型 |
| uname -n | 输出主机名(如果是在虚拟机,则是输出虚拟机主机名) |
| uname -r | 输出内核版本号 |
| uname -v | 输出内核编译时间信息 |
| uname -m | 输出硬件架构 |
| uname -a | 输出系统/内核的全部信息 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ uname -a
Linux zevalin-VMware-Virtual-Platform 7.0.0-38-generic #38-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep  4 09:10:14 UTC 2026 x86_64 GNU/Linux

(5)清理屏幕命令clear:

①语法:

clear # 该命令无参数,等效于快捷键Ctrl+L,可以清空终端屏幕内容

②需要说明的是,该命令不是删除历史执行命令记录,清屏后如果按"↑"键,仍然能查到之前输入的命令。(如果是使用快捷键清屏,那只是把屏幕中的记录上推,滚轮回滚依然能看到历史记录)

(6)显示文件内容命令cat:

①语法:

cat 选项 <文件名> # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|----------------|------------------------------------|
| 命令 | 作用 |
| cat <文件名> | 将指定文件的内容输出到终端 |
| cat -n <文件名> | 将指定文件的内容输出到终端,并显示行号 |
| cat -b <文件名> | 将指定文件的内容输出到终端,并显示行号(空白行不编号) |
| cat -E <文件名> | 将指定文件的内容输出到终端,在每行末尾显示"$"符号,用来判断换行符 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cat -nE test.c
     1	#include <stdio.h>$
     2	int main(void)$
     3	{$
     4	    return 0;$
     5	}$

(7)切换用户身份命令sudo:

①语法:

sudo 选项 命令 # 方括号表示可选参数,选项用"-"引出

sudo命令需要输入用户密码,有时候输入密码时窗口没有反应,这是因为密码不可见,并不代表实际输入失败,输入完成后按下回车即可

②不同选项及组合的作用:

|------------------|----------------------------|
| 命令 | 作用 |
| sudo <命令> | 临时用root权限执行这条命令 |
| sudo -i | 切换到root登录shell |
| sudo -s | 切换到root登录shell,但保持当前用户环境变量 |
| sudo passwd root | 设置root用户密码 |
| sudo -k | 清除缓存的密码授权,下次sudo需要重新输密码 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ sudo cat /etc/profile
[sudo: authenticate] 密码:       
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "$(id -u)" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in $(run-parts --list --regex '^[a-zA-Z0-9_][a-zA-Z0-9._-]*\.sh$' /etc/profile.d); do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

(8)切换用户命令su:

①语法:

su 选项 用户名 # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|--------------|------------------------------------|
| 命令 | 作用 |
| su | 尝试切换到root用户 |
| su root | 切换到root用户,只切换身份,环境变量、当前工作目录不变 |
| su - root | 完整切换root,重新加载root的环境变量,自动进入root家目录 |
| su <用户名> | 切换到指定普通用户 |
| su - <用户名> | 完整切换到指定用户,加载该用户全部环境,进入其家目录 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ su - root
密码: 
su: 认证失败
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ su - zevalin
密码: 
zevalin@zevalin-VMware-Virtual-Platform:~$ 

(9)文件拷贝命令cp:

①语法:

cp 选项 <源文件> <目标文件/路径> # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|---------------------------|---------------------------------------------------------------|
| 命令 | 作用 |
| cp src.txt dest.txt | 复制文件src.txt,命名为dest.txt |
| cp src.txt ./test/ | 将src.txt复制到test文件夹内,文件名保持不变 |
| cp -r src_dir dest_dir | 递归复制文件夹,连同里面所有子文件、子目录一起拷贝 |
| cp -i src.txt dest.txt | 复制文件src.txt,命名为dest.txt,如果有重名文件的情况,将提示询问,输入"y"确认覆盖,输入"n"则取消覆盖 |
| cp -f src.txt dest.txt | 复制文件src.txt,命名为dest.txt,如果有重名文件的情况,将强制覆盖,不提示,直接覆盖已有文件 |
| cp -v src.txt <目标文件/路径> | 显示详细复制过程,列出复制的所有文件 |
| cp -rv src_dir dest_dir | 递归复制目录,并打印复制的详细过程 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cp test.c test_bak.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cp test.c ./test/
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
test  test.c  test_bak.c

./test:
test.c

(10)移动文件命令mv:

①语法:

cp 选项 <源文件(可多个)> <目标文件/路径> # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|--------------------------|-----------------------------------------------------------|
| 命令 | 作用 |
| mv old.txt new.txt | 把old.txt改名为new.txt |
| mv test.txt ./dir/ | 将test.txt移动到dir目录下,文件名不变 |
| mv file1 file2 ./target/ | 把多个文件一次性移动到target目录 |
| mv -i test.txt ./dir/ | 将test.txt 移动到dir目录下,如果有重名文件的情况,将提示询问,输入"y"确认覆盖,输入"n"则取消覆盖 |
| mv -f test.txt ./dir/ | 将test.txt移动到dir目录下,如果有重名文件的情况,将强制覆盖,不提示,直接覆盖已有文件 |
| mv -v test.txt ./dir/ | 显示文件移动的详细执行过程,打印操作信息 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mv test.c test_new.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
test  test_new.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mv test_new.c test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
test  test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mv test.c ./test/
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
test

./test:
test.c

(11)创建文件夹命令mkdir:

①语法:

mkdir 选项 <目录名> # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|----------------------|------------------------------------|
| 命令 | 作用 |
| mkdir testdir | 在当前目录,创建单个文件夹 testdir |
| mkdir -p a/b/c | 递归创建多级目录,父目录不存在也自动创建 |
| mkdir -m 755 testdir | 创建文件夹testdir,并直接指定权限 |
| mkdir -v testdir | 在当前目录,创建单个文件夹testdir,显示创建过程,打印创建信息 |
| mkdir -pv a/b/c | 递归创建多级目录,父目录不存在也自动创建,显示创建过程,打印创建信息 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mkdir workspace
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mkdir -pv project/src
mkdir: created directory 'project'
mkdir: created directory 'project/src'
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
project  test  test.c  workspace

./project:
src

./project/src:

./test:

./workspace:

(12)创建文件命令touch:

①语法:

touch 选项 <文件名(可多个,带后缀)> # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|--------------------------------|------------------------------------------|
| 命令 | 作用 |
| touch test.txt | 创建空白文件test.txt;文件已存在时,更新文件访问/修改时间,不会改动内容 |
| touch file1.c file2.h | 一次性创建多个空白文件(示例为file1.c、file2.h) |
| touch -d "2026-10-18" test.txt | 修改文件时间为指定日期(示例为2026-10-18) |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ touch file1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ touch file2.c file3.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
file1.c  file2.c  file3.c  project  test  test.c  workspace

(13)删除命令rm:

①语法:

rm 选项 <目标文件/路径> # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|----------------|---------------------------------------------|
| 命令 | 作用 |
| rm test.txt | 删除普通文件test.txt |
| rm -i test.txt | 删除普通文件test.txt,删除前询问确认,输入"y"确认删除,输入"n"则取消删除 |
| rm -f test.txt | 强制删除文件test.txt,不提示,就算文件不存在也不报错 |
| rm -r dir | 递归删除目录,删除文件夹以及里面所有子文件、子目录 |
| rm -rf dir | 递归强制删除目录,强制删除文件夹以及里面所有子文件、子目录 |
| rm -v test.txt | 删除普通文件test.txt,显示删除的详细过程 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rm file3.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rm -i file2.c
rm: 是否删除regular empty file 'file2.c'? y
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rm -ri project
rm: 是否进入目录 'project'? y
rm: 是否删除directory 'project/src'? y
rm: 是否删除directory 'project'? y
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rm -f file1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
test  test.c  workspace

(14)目录删除命令rmdir:

①语法:

rmdir 选项 <目录名> # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|------------------|-----------------------------------------------------|
| 命令 | 作用 |
| rmdir testdir | 删除空目录testdir,目录非空则报错 |
| rmdir -p a/b/c | 递归删除多级空目录,删除c之后,如果b为空就删 b,b删完之后,为空就删a |
| rmdir -v testdir | 删除空目录testdir,显示删除过程,打印操作信息 |
| rmdir -pv a/b/c | 递归删除多级空目录,删除c之后,如果b为空就删 b,b删完之后,为空就删a,显示删除过程,打印操作信息 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
test  test.c  test_deep1  workspace

./test:

./test_deep1:
test_deep2

./test_deep1/test_deep2:

./workspace:
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rmdir workspace
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rmdir -pv test_deep1/test_deep2
rmdir: removing directory, 'test_deep1/test_deep2'
rmdir: removing directory, 'test_deep1'
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
test  test.c

./test:

(15)查看/配置网卡信息命令ifconfig:

①使用该命令前,需要运行命令"sudo apt install net-tools",安装命令ifconfig。命令ifconfig语法如下:

ifconfig 选项 # 方括号表示可选参数,选项用"-"引出

②不同选项及组合的作用:

|-------------------------------------------------|-------------------------------|
| 命令 | 作用 |
| ifconfig | 查看已启用网卡的全部信息(IP、掩码、MAC、收发数据包) |
| ifconfig -a | 查看所有网卡的全部信息(IP、掩码、MAC、收发数据包) |
| ifconfig ens33 | 只查看ens33这一块网卡信息 |
| sudo ifconfig ens33 up | 启用网卡ens33 |
| sudo ifconfig ens33 down | 关闭网卡ens33 |
| sudo ifconfig ens33 reload | 重启网卡ens33 |
| sudo ifconfig ens33 <IP> netmask <MaskCode> | 临时设置网卡IP和子网掩码(重启网络会失效) |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.176.160  netmask 255.255.255.0  broadcast 192.168.176.255
        inet6 fe80::20c:29ff:feab:8886  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:88:86  txqueuelen 1000  (以太网)
        RX packets 61652  bytes 46868540 (46.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22199  bytes 3149351 (3.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (本地环回)
        RX packets 5410  bytes 693528 (693.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5410  bytes 693528 (693.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(16)重启命令reboot:

①语法:

reboot 选项 # 方括号表示可选参数

②不同选项及组合的作用:

|----------------|-------------------------|
| 命令 | 作用 |
| reboot | 正常安全重启系统,保存会话、卸载文件系统后重启 |
| sudo reboot | 正常安全重启系统,保存会话、卸载文件系统后重启 |
| reboot --halt | 停止系统,但不重启(也不关机) |
| sudo reboot -f | 强制重启,不优雅关闭程序,直接硬重启 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ reboot

(17)关机命令poweroff:

①语法:

poweroff

②不同选项及组合的作用:

|---------------|-------------------------|
| 命令 | 作用 |
| poweroff | 正常安全关闭系统,保存会话、卸载文件系统后关机 |
| sudo poweroff | 正常安全关闭系统,保存会话、卸载文件系统后关机 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ poweroff

(18)系统帮助命令man:

①语法:

man 命令名 # 按"q"退出帮助

②不同选项及组合的作用:

|----------|---------------|
| 命令 | 作用 |
| man ls | 查看ls命令的完整帮助手册 |
| man sudo | 查看sudo命令手册 |
| man man | 查看man命令自身的帮助 |

(19)数据同步写入磁盘命令sync:

①语法:

sync 选项 文件 # 方括号表示可选参数

Linux为提升读写速度,文件写入时先放到内存缓存,不会立刻落盘,断电或重启可能丢失缓存内数据,sync的作用就是强制把内存缓冲区里还没写入磁盘的数据刷写到硬盘

②不同选项及组合的作用:

|---------------|--------------------------|
| 命令 | 作用 |
| sync | 把所有文件系统缓存全部同步到磁盘 |
| sync file.txt | 只同步指定单个文件file.txt的缓存数据落盘 |
| sync dir/ | 同步指定目录dir/相关缓存 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ sync test.txt

(20)查找文件命令find:

①语法:

find 搜索起始路径 匹配条件 动作 # 方括号表示可选参数

②不同选项及组合的作用:

|------------------------------------|---------------------------------------------|
| 命令 | 作用 |
| find . -name "test.c" | 在当前目录("."表示当前目录)递归查找名字为test.c的文件 |
| find ./project -name "*.h" | 在当前目录子文件夹project目录下,查找所有后缀为.h的头文件("*"是通配符) |
| find . -type d -name "src" | 在当前目录递归查找名字为src的目录 |
| find . -type f | 列出当前路径下所有普通文件 |
| find . -name "*.log" -delete | 找到所有后缀为.log的文件,直接删除 |
| find . -type f -exec ls -lh {} \; | 找到文件后,执行ls -lh查看详情 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ find . -name "test.c"
./test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ find . -name "*.c"
./test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ find . -type f
./test.c

(21)查找内容命令grep:

①语法:

grep 选项 "查找的字符串" <文件名/路径> # 方括号表示可选参数,可多选

②不同选项及组合的作用:

|---------------------------|-----------------------------------------|
| 命令 | 作用 |
| grep "int" test.c | 在test.c中,查找包含"int"的行并打印 |
| grep -n "return" test.c | 在test.c中,查找匹配内容"return",同时显示行号 |
| grep -i "INT" test.c | 在test.c中,查找包含"INT"的行并打印,查找时忽略字母大小写 |
| grep -v "//" test.c | 在test.c中,查找并输出不包含字符串"//"的行 |
| grep -r "gpio" ./project | 递归搜索目录,在project下所有文件中查找关键词"gpio" |
| grep -rn "gpio" ./project | 递归搜索目录,在project下所有文件中查找关键词"gpio",同时显示行号 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ grep "int" test.c
int main(void)
    int a;
    int b;    //注释
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ grep -n "int" test.c
2:int main(void)
4:    int a;
5:    int b;    //注释
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ grep -ni "INT" test.c
2:int main(void)
4:    int a;
5:    int b;    //注释
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ grep -v "//" test.c
#include <stdio.h>
int main(void)
{
    int a;
    return 0;
}

(22)文件/文件夹大小查看命令du:

①语法:

du 选项 文件/目录名 # 方括号表示可选参数,可多选

②不同选项及组合的作用:

|------------------|------------------------------------------------|
| 命令 | 作用 |
| du | 统计当前目录下所有子目录占用空间,递归输出每一层大小 |
| du -h | 统计当前目录下所有子目录占用空间,递归输出每一层大小(人类可读单位) |
| du -sh | 输出当前目录占用总容量,不列出子目录详情 |
| du -h project | 查看project目录下各子目录大小,带可读单位 |
| du -ah | 统计当前目录下所有子目录及文件的占用空间,递归输出每一层大小和每个文件的大小(人类可读单位) |
| du --max-depth=1 | 统计当前目录下所有文件(不递归深入子目录)的占用空间 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du
12	./test
20	.
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du -h
12K	./test
20K	.
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du -sh
20K	.
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du -ah
4.0K	./test.c
4.0K	./test/test2.c
4.0K	./test/test1.c
12K	./test
20K	.
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du --max-depth=1
12	./test
20	.

(23)磁盘空间检查命令df:

①语法:

df 选项 文件/目录名 # 方括号表示可选参数

②不同选项及组合的作用:

|-------------|--------------------------------|
| 命令 | 作用 |
| df | 查看所有挂载的文件系统分区信息 |
| df -h | 查看所有挂载的文件系统分区信息(以人类可读单位输出大小信息) |
| df -i | 查看inode使用情况 |
| df -h / | 只查看根分区"/"的磁盘信息 |
| df -h /home | 查看/home分区的磁盘信息 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ df -h
文件系统	        大小  	已用  	可用 	已用% 	挂载点
tmpfs       	1.5G  	2.6M  	1.5G   	1%  	/run
/dev/sda2   	49G   	12G   	36G   	24%  	/
tmpfs       	3.7G   	0  		3.7G   	0%  	/dev/shm
none           	1.0M   	0  		1.0M   	0%    /run/credentials/systemd-journald.service
none           	1.0M   	0  		1.0M   	0%    /run/credentials/systemd-resolved.service
tmpfs       	3.7G  	8.0K   	3.7G   	1%  	/tmp
tmpfs       	738M  	88K  	738M 	1%  	/run/user/1000
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ df -i
文件系统  	    Inodes  	已用I  	可用I	已用I% 挂载点
tmpfs     	    819200 	    1350   	817850 	1%    	/run
/dev/sda2   	3276800	    173888 	3102912	6%    	/
tmpfs       	944200     	1     	944199 	1%    	/dev/shm
none       	    1024       	1     	1023   	1%    /run/credentials/systemd-journald.service
none           	1024   	    1     	1023   	1%    /run/credentials/systemd-resolved.service
tmpfs       	1048576	    56    	1048520	1%    	/tmp
tmpfs       	188840 	    159   	188681 	1%    	/run/user/1000
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ df -h /
文件系统 	    大小  	已用  	可用 	已用%     挂载点
/dev/sda2   	49G   	12G   	36G  	24%   	    /
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ df -h /home
文件系统  	    大小  	已用  	可用 	已用%     挂载点
/dev/sda2   	49G   	12G   	36G  	24%   	    /

(24)打开文件命令gedit:

①使用该命令前,需要运行命令"sudo apt install gedit",安装命令gedit。命令gedit语法如下:

gedit 文件名 # 方括号表示可选参数

②不同选项及组合的作用:

|-----------------------------|----------------------------------|
| 命令 | 作用 |
| gedit | 打开空白编辑器 |
| gedit test.c | 打开/新建test.c文件,可在图形界面中编辑 |
| gedit test.c & | 在后台打开/新建test.c文件,可在图形界面中编辑,不阻塞终端 |
| sudo gedit /etc/resolv.conf | 管理员权限打开系统配置文件,可用于修改系统文件 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ gedit test.c &

(25)系统进程查看命令ps:

①语法:

ps 选项 # 方括号表示可选参数

②不同选项及组合的作用:

|-----------------------|-----------------|
| 命令 | 作用 |
| ps | 查看当前用户终端进程 |
| ps aux | 查看所有终端进程,用户格式显示 |
| ps -ef | 查看全部进程,完整格式显示 |
| ps aux | grep ssh | 查看ssh相关进程 |
| ps -ef | grep python | 查看python相关进程 |
| ps aux | grep R | 查看当前正在运行的进程 |
| ps -p <PID> | 按PID查看指定进程 |
| ps axf | 树状显示进程父子关系 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ps
    PID 		TTY    	    TIME 		    CMD
   4993 		pts/2   	00:00:00 		bash
   7065 		pts/2   	00:00:00 		ps

(26)进程实时运行状态查看命令top:

①语法:

top

②实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ top

③运行top指令后,能在终端实时查看系统 CPU、内存、进程状态工具,默认3秒刷新一次,如下图所示(按"Q"可继续输入命令),其中各字段定义如下:

|---------|----------------|
| 字段 | 定义 |
| PID | 进程ID |
| USER | 运行用户 |
| PR | 优先级 |
| NI | nice值(负数优先级更高) |
| VIRT | 虚拟内存 |
| RES | 常驻物理内存(实际占用内存) |
| %CPU | CPU占用率(单核心占比) |
| %MEM | 物理内存占用率 |
| TIME+ | 进程累计CPU时间 |
| COMMAND | 进程名 |

(27)文件类型查看命令file:

①语法:

file 选项 <文件名或目录> # 方括号表示可选参数,可多选

②不同选项及组合的作用:

|-----------------|-------------------------|
| 命令 | 作用 |
| file <文件名> | 输出文件的类型描述 |
| file -b <文件名> | 输出文件的类型描述(不输出文件名) |
| file -i <文件名> | 输出MIME类型,适合脚本自动化解析 |
| file -L <文件名> | 跟随软链接,查看链接指向的真实文件类型 |
| file -k <文件名> | 持续匹配,找到多个匹配类型全部输出,不提前终止 |
| file -r <目录名> | 递归查看目录下所有文件 |

③实操演示:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ file test.c
test.c: C source, Unicode text, UTF-8 text
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ file -b test.c
C source, Unicode text, UTF-8 text
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ file -i test.c
test.c: text/x-c; charset=utf-8

二、Ubuntu常用操作

1、软件安装

(1)APP Store安装:

①类似于手机的应用中心,在安装Ubuntu的时候,默认也会带一个应用中心,在这里可以直接安装软件。

②需要注意的是,Ubuntu的应用中心中的软件并没有想象中的丰富,大部分软件可能是没法在Ubuntu的应用中心中搜索到的。

(2)sudo apt-get install安装:

①安装软件一般需要权限,如果以普通用户的权限运行apt-get install,基本上是无法安装的。

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ apt-get install git
E: 无法打开锁文件 /var/lib/dpkg/lock-frontend - open (13: 权限不够)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),请查看您是否正以 root 用户运行?

②基于以上原因,在运行apt-get install指令时,需要加前缀"sudo"。

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ sudo apt-get install git
[sudo: authenticate] 密码:       
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
正在解析依赖... 完成
将会同时安装下列软件:
  git-man liberror-perl
建议安装:
  git-doc git-email git-gui gitk gitweb git-cvs git-svn
下列【新】软件包将被安装:
  git git-man liberror-perl
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 75 个软件包未被升级。
需要下载 5,453 kB 的归档。
解压缩后会消耗 28.4 MB 的额外空间。

③需要注意的是,该方式同样只能安装当前系统软件源仓库里面已经收录的软件包。

(3)deb软件包安装:

①.deb是Debian/Ubuntu系列Linux的软件安装包格式,相当于Windows的.msi安装包,内部打包了程序二进制、配置文件、文档、依赖声明、安装/卸载脚本。

②在下载软件的官网中,通常有适配不同操作系统的版本提供给用户,对于Ubuntu,选择Linux版本的安装包下载即可。

③下载完成后,双击下载的.deb文件,会打开应用中心,确认无风险后,直接安装即可。

④除了双击.deb文件以外,还可打开终端,将工作目录切换到.deb文件所在目录,运行命令"sudo dpkg -i <deb文件名>"即可。

(4)除了以上三种方法,还可以自行下载源码然后编译安装(前提是软件有公开的源码以及配套的编译安装步骤文档,比如tree命令工具)。

(5)以上四种办法可能均不支持部分软件的安装,具体情况需要具体分析,可在网络中查找对应的解决办法,此处不过多赘述。

2、压缩与解压缩

(1)Linux下常见的压缩包扩展名有------.tar、.tar.bz2、.tar.gz,这三个格式中比较常用的是.tar.bz2、.tar.gz,如果希望在Windows中打出这两个格式的压缩包,可以借助软件7ZIP实现。

①右键要打包的文件夹,选择"7-ZIP"→"添加到压缩包..",压缩格式选择"tar"(注意这一步是"打包",而不是"压缩"),然后点击"确定",即可将文件夹打包。

②右键打包生成的tar文件,选择"7-ZIP"→"添加到压缩包..",压缩格式选择"bazip2"或"gz",然后点击"确定",即可将文件夹压缩,生成的压缩文件可以直接拖入虚拟机,在虚拟机解压缩。

(2)在Ubuntu中可以使用gzip工具压缩(压缩为.gz格式)或解压缩文件,不过对于压缩文件夹而言,它只能起到压缩的作用,在压缩文件夹之前,需要先将它打包为tar格式。

①gzip命令语法:

gzip 选项 <文件名> # 方括号表示可选参数,选项用"-"引出,选项可多选

②可选参数(仅列出常用,具体可参考帮助文档):

|----------|------------------------------------------|
| 参数 | 作用 |
| -d | 解压文件(等价于gunzip),不加此参数则为压缩文件 |
| -k | 该参数可用于压缩和解压,不加此参数的话,压缩或解压操作只保留产物,源文件会被删除 |
| -v | 显示压缩率和压缩的过程 |
| -l | 查看.gz包的信息,如原始大小、压缩后大小和压缩率 |
| -r | 递归进入目录,压缩里面所有文件(目录本身不会打包) |
| -t | 校验压缩包是否损坏 |
| -1 ~ -9 | 压缩级别,数字越低压缩速度越快,相应地压缩率也越低,默认为6 |
| -c | 输出到标准输出,配合 > 重定向,保留原文件 |

③文件压缩操作示例:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test
│   ├── test1.c
│   └── test2.c
└── test.c

2 directories, 3 files
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ gzip -rk test
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test
│   ├── test1.c
│   ├── test1.c.gz
│   ├── test2.c
│   └── test2.c.gz
└── test.c

2 directories, 5 files

(3)在Ubuntu中还可以使用bzip2工具压缩(压缩为.bz2格式)或解压缩文件,不过对于压缩文件夹而言,它也是只能起到压缩的作用,在压缩文件夹之前,同样需要先将它打包为tar格式。

①bzip2命令语法:

bzip2 选项 <文件名> # 方括号表示可选参数,选项用"-"引出,选项可多选

②可选参数(仅列出常用,具体可参考帮助文档):

|----------|------------------------------------------|
| 参数 | 作用 |
| -d | 解压文件(等价于bunzip2),不加此参数则为压缩文件 |
| -k | 该参数可用于压缩和解压,不加此参数的话,压缩或解压操作只保留产物,源文件会被删除 |
| -v | 显示压缩率和压缩的过程 |
| -t | 校验压缩包是否损坏 |
| -1 ~ -9 | 压缩级别,数字越低压缩速度越快,相应地压缩率也越低,默认为6 |
| -c | 输出到标准输出,配合 > 重定向,保留原文件 |
| -f | 强制覆盖操作目录下已有同名的文件 |
| -s | 操作过程中减少内存占用 |
| -z | 压缩文件,该参数为缺省参数 |

③文件压缩操作示例:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test
│   ├── test1.c
│   └── test2.c
└── test.c

2 directories, 3 files
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ bzip2 -k test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
test  test.c  test.c.bz2

(4)以上介绍了两种压缩工具,对于文件夹而言,在压缩之前还需要打包,在解压之后还需要解包。在Linux中,可以使用tar工具完成打包/解包的工作(该工具同时还支持压缩和解压)。

①tar命令语法:

tar 选项 <打包后的文件名> <源文件/目录> # 如果操作含打包,需写打包后的文件名

②可选参数(仅列出常用,具体可参考帮助文档):

|----|-----------------------------------------------------------------|
| 参数 | 作用 |
| -c | 创建新包 |
| -x | 解包 |
| -t | 查看包内文件列表,不解压 |
| -f | 指定包文件名(该选项要写在所有选项之后) |
| -v | 显示操作的详细过程 |
| -z | 使用gzip压缩,后缀为.tar.gz |
| -j | 使用bzip2压缩,后缀为.tar.bz2 |
| -J | 使用xz压缩,后缀为.tar.xz |
| -C | 将包解压到指定目录(该选项写在<源文件/目录>之后,指定目录写在该选项之后,具体语法参考以下示例),不指定则解压到当前目录 |
| -P | 保留绝对路径的文件 |
| -r | 向已有的.tar包追加文件(不能向压缩包追加文件,只能向.tar包追加) |

③文件压缩操作示例:

1对.tar.gz进行压缩和解压缩:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test.c
└── testdir
    ├── test1.c
    └── test2.c

2 directories, 3 files
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -zcvf test.tar.gz testdir/
testdir/
testdir/test2.c
testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -ztvf test.tar.gz
drwxrwxr-x zevalin/zevalin   0 2026-10-21 00:06 testdir/
-rw-rw-r-- zevalin/zevalin  86 2026-10-18 22:10 testdir/test2.c
-rw-rw-r-- zevalin/zevalin  86 2026-10-18 22:10 testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -zxvf test.tar.gz
testdir/
testdir/test2.c
testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -zxvf test.tar.gz -C /tmp
testdir/
testdir/test2.c
testdir/test1.c

2对.tar.bz2进行压缩和解压缩:

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test.c
└── testdir
    ├── test1.c
    └── test2.c

2 directories, 3 files
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -jcvf test.tar.bz2 testdir/
testdir/
testdir/test2.c
testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -jtvf test.tar.bz2
drwxrwxr-x zevalin/zevalin   0 2026-10-21 00:06 testdir/
-rw-rw-r-- zevalin/zevalin  86 2026-10-18 22:10 testdir/test2.c
-rw-rw-r-- zevalin/zevalin  86 2026-10-18 22:10 testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -jxvf test.tar.bz2
testdir/
testdir/test2.c
testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -jxvf test.tar.bz2 -C /tmp
testdir/
testdir/test2.c
testdir/test1.c

(5)除了以上介绍的常见的两种压缩格式,在Ubuntu下还支持.rar格式和.zip格式,相关命令如下(均需额外下载安装):

①zip命令可将文件夹压缩为.zip,语法与参数如下:

zip 选项 -P \<密码\> <压缩包名> <源文件/目录> # 方括号表示可选参数,选项用"-"引出,选项可多选;压缩包名可直接写生成路径

|----------|--------------------------------|
| 选项 | 作用 |
| -r | 递归压缩目录(压缩文件夹时必须带此参数) |
| -v | 显示操作的详细过程 |
| -q | 压缩过程中不输出信息 |
| -P | 设置密码(该选项需单独用"-"引出,之后填写密码) |
| -1 ~ -9 | 压缩级别,数字越低压缩速度越快,相应地压缩率也越低,默认为6 |

②unzip命令可将.zip压缩包解压,语法与参数如下:

unzip 选项 <压缩包名> -d \<解压目标目录\> # 方括号表示可选参数,选项用"-"引出,选项可多选

|----|----------------------------------------|
| 选项 | 作用 |
| -l | 查看压缩包内容,不解压 |
| -t | 校验压缩包是否损坏 |
| -v | 显示操作的详细过程 |
| -d | 将包解压到指定目录(该选项写在<压缩包名>之后,指定目录写在该选项之后) |
| -o | 解压时遇到重名文件直接覆盖,不询问 |
| -n | 解压时遇到重名文件不覆盖 |

③rar命令可将文件夹压缩为.rar,语法与参数如下:

rar <动作> 选项 <压缩包名> <源文件/目录> # 方括号表示可选参数,选项用"-"引出;压缩包名可直接写生成路径

|-----|-----------------------|
| 动作 | 作用 |
| a | 添加压缩包 |
| 选项 | 作用 |
| -p | 命令行会弹出交互引导,操作者输入压缩包密码 |
| -hp | 压缩过程中加密文件名和内容 |

④unrar命令可将.rar压缩包解压,语法与参数如下:

unrar <动作> 选项 <压缩包名> 解压目标目录 # 方括号表示可选参数,选项用"-"引出

|-----|------------------------------|
| 动作 | 作用 |
| x | 解压时保留压缩包内的目录结构 |
| e | 解压时不保留压缩包内的目录结构,所有文件都解压到当前目录 |
| l | 查看压缩包内容,不解压 |
| t | 校验压缩包是否损坏 |
| 选项 | 作用 |
| -o+ | 解压时遇到重名文件直接覆盖,不询问 |
| -o- | 解压时遇到重名文件不覆盖 |

相关推荐
小大宇1 小时前
Vue知识点-setup语法糖
1024程序员节
嘶哈哈哈1 小时前
PX4 + Livox MID360 + FAST-LIO + MAVROS
1024程序员节
qq_408606861 小时前
C_Primer_Plus_Chapter17_exercise4
1024程序员节
java_logo1 小时前
Docker 部署 Bililive-go:轻松搭建多平台直播录制
docker·1024程序员节·直播录制·轩辕镜像·bililive-go·chigusa/bililive-go
wuminyu1 小时前
JVM规范学习总结-Java源码经过javac编译后产物
java·linux·c语言·jvm·c++
番茄味城市甜菜1 小时前
数据结构:单链表(C语言)
数据结构·链表·1024程序员节
java_nnnn1 小时前
Linux 学习第二篇:从零认识 Linux 文件系统、目录结构与基本命令
linux·运维·学习·1024程序员节
重生之我是Java开发战士1 小时前
【Redis】Redis五大数据类型
1024程序员节
一尺之棰1 小时前
DSP-定时器原理
1024程序员节