1. 为什么需要掌握 Linux 命令行
Linux 在服务器、云计算、大数据、嵌入式等领域应用非常广泛,很多生产环境中的机器并没有图形界面,日常操作基本都是通过终端命令完成。对于开发、运维和测试同学来说,熟练使用 Linux 基础指令是绕不开的基本功。本文从最常用的命令出发,帮助你快速建立命令行的使用手感。
2. Linux 与 Shell:先理解命令是如何执行的
Linux 严格来说指的是操作系统内核 kernel,普通用户通常不会直接和内核打交道,而是通过一个叫做 Shell 的程序来间接操作。Shell 本质上是一个命令行解释器,它的核心作用有两个:
- 把用户输入的命令翻译给内核处理。
- 把内核处理后的结果翻译成用户可以理解的文本输出。
可以把 Shell 理解成用户和内核之间的中间人。常见的 Shell 有 bash、zsh 等,绝大多数 Linux 发行版默认使用 bash。我们日常在终端里输入的 ls、cd 等命令,最终都会先交给 Shell 解析,再由内核执行。
3. 远程登录 Linux
实际工作中,我们往往需要通过 SSH 协议远程登录服务器。常见的终端工具有 XShell、SecureCRT 以及 macOS 和 Linux 自带的终端。登录命令如下:
bash
# 使用 ssh 命令登录远程主机
[whb@linux ~]$ ssh user@192.168.1.100
如果连接成功,系统会提示输入密码。输入密码后即可进入远程主机的命令行环境。也推荐使用 ssh-keygen 和公钥配置实现免密登录,日常使用更加方便。
4. 路径与目录操作:pwd、ls、cd
4.1 pwd:显示当前所在目录
用法非常简单,只输入 pwd 即可,它会输出当前用户所在的工作目录。
bash
[whb@linux test]$ pwd
/home/whb/test
4.2 ls:列出目录内容
ls 是最常用的查看命令之一。对于目录,它会列出目录下的子目录和文件;对于文件,它会显示文件信息。常用选项如下:
-a:显示所有文件,包括以.开头的隐藏文件。-l:以长格式显示文件的详细信息,包括权限、属主、大小、时间等。-h:配合-l使用,以更易读的方式显示文件大小。-R:递归列出所有子目录中的文件。
bash
[whb@linux test]$ ls
dir file.txt
[whb@linux test]$ ls -a
. .. dir file.txt
[whb@linux test]$ ls -l
total 12
drwxrwxr-x 3 whb whb 4096 Jan 11 15:01 .
drwx------ 22 whb whb 4096 Jan 11 14:21 ..
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r-- 1 whb whb 0 Jan 11 14:22 file.txt
ls -l 输出中的第一个字符表示文件类型,例如 d 表示目录,- 表示普通文件,后边的九位字符分别表示属主、属组和其他用户的读写执行权限,这部分我们在权限章节再展开。
4.3 cd:切换目录
cd 用于改变当前工作目录。理解路径非常重要:Linux 的文件系统是一棵目录树,任何一个节点都只有一个父节点,所以从根目录 / 出发定位文件具有唯一性。
- 绝对路径:以
/开头,例如/home/whb/test,不依赖当前目录。 - 相对路径:相对于当前目录定位,例如
../temp。
bash
[whb@linux ~]$ pwd
/home/whb
[whb@linux ~]$ cd ..
[whb@linux home]$ pwd
/home
[whb@linux home]$ cd ~
[whb@linux ~]$ pwd
/home/whb
[whb@linux ~]$ cd -
/home
[whb@linux home]$ pwd
/home
常见技巧:cd ~ 可以快速回到当前用户的家目录,cd - 可以回到最近一次所在的目录。
5. 文件与目录的创建和删除
5.1 touch:创建文件或更新时间
touch 常用于创建空文件,也可以修改文件的访问时间和修改时间。
bash
[whb@linux test]$ touch newfile.txt
[whb@linux test]$ ls
dir file.txt newfile.txt
如果需要查看文件的详细时间信息,可以使用 stat 命令。
5.2 mkdir:创建目录
mkdir 用于创建目录,常用选项是 -p,可以一次递归创建多层不存在的目录。
bash
[whb@linux test]$ mkdir mydir
[whb@linux test]$ mkdir -p path1/path2/path3
5.3 rmdir 与 rm:删除目录和文件
rmdir 只能删除空目录,日常更常用的是 rm。rm 可以删除文件或目录,常用选项:
-f:强制删除,不进行确认。-i:删除前逐一询问确认。-r:递归删除目录及其下所有文件。
bash
[whb@linux test]$ rm file.txt
[whb@linux test]$ rm -r dir
[whb@linux test]$ rm -rf path1
需要特别提醒:rm -rf 不会经过回收站,删除后很难恢复,生产环境下执行前一定要再三确认路径。
6. 查看文件内容
6.1 cat 与 tac
cat 用于把文件内容一次性输出到终端,适合查看较小的文件。tac 则是反向输出,从最后一行开始显示。
bash
[whb@linux test]$ cat file.txt
hello linux
hello world
6.2 more 与 less
对于内容较多的文件,用 cat 会直接刷屏。more 可以分页显示,但只能向后翻;less 更强大,支持前后翻页和搜索,是更推荐的查看工具。
bash
[whb@linux test]$ less -N temp.txt
在 less 中可以使用 /关键词 向下搜索,使用 ?关键词 向上搜索,按 q 退出。
6.3 head 与 tail
head 默认显示文件开头 10 行,tail 默认显示文件末尾 10 行。两者的 -n 参数可以指定行数。tail -f 常用于实时查看不断追加的日志文件。
bash
[whb@linux test]$ head -5 temp.txt
hello 0
hello 1
hello 2
hello 3
hello 4
[whb@linux test]$ tail -3 temp.txt
hello 1998
hello 1999
hello 2000
显示文件的第 180 到 200 行
[whb@linux test]$ head -200 temp.txt | tail -20
7. 复制、移动与查找
7.1 cp 与 mv
cp 用于复制文件或目录,mv 用于移动文件,也可以用来重命名。复制目录时需要加上 -r。
bash
[whb@linux test]$ cp file.txt file.bak
[whb@linux test]$ cp -r dir1 dir2
[whb@linux test]$ mv file.txt /tmp/
7.2 find:按条件查找文件
find 功能非常强大,可以在指定目录树中按名称、类型、大小、修改时间等条件查找文件。最常用的方式是按名称查找。
bash
[whb@linux test]$ find ~ -name test.c
/home/whb/test_code/test.c
7.3 grep:查找文件内容
grep 用于在文件内容中搜索字符串,并把匹配到的行打印出来。常用选项:
-i:忽略大小写。-n:输出匹配行的行号。-v:反向选择,输出不包含目标字符串的行。
bash
[whb@linux test]$ grep -n "hello" temp.txt
1:hello 0
2:hello 1
[whb@linux test]$ grep -i "Hello" temp.txt
7.4 which 与 whereis
which 用于查看某个命令的完整路径,whereis 还可以定位命令的源码和手册页。
bash
[whb@linux test]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
[whb@linux test]$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
8. 打包与压缩
8.1 tar:打包与解包
tar 是 Linux 中使用频率非常高的归档工具,可以只打包不压缩,也可以结合 gzip 或 bzip2 压缩。常用参数:
-c:创建打包文件。-x:解开打包文件。-t:查看包内文件。-z:使用 gzip 压缩或解压。-v:显示处理过程。-f:指定包文件名。-C:解压到指定目录。
bash
# 仅打包,不压缩
[root@linux ~]$ tar -cvf /tmp/etc.tar /etc
打包并使用 gzip 压缩
[root@linux ~]$ tar -zcvf /tmp/etc.tar.gz /etc
解压到 /tmp 目录
[root@linux ~]$ tar -zxvf /tmp/etc.tar.gz -C /tmp
8.2 zip 与 unzip
如果需要在 Windows 和 Linux 之间互传文件,zip 格式会更通用一些。-r 表示递归处理目录。
bash
[whb@linux test]$ zip -r test.zip test_dir/
[whb@linux test]$ unzip test.zip -d /tmp
9. 系统信息、时间与帮助
9.1 uname:查看系统和内核信息
bash
[whb@linux ~]$ uname -a
Linux linux-host 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
9.2 date 与 cal
date 用于查看或设置系统时间,也经常用于格式化时间。cal 用于查看日历。
bash
[whb@linux ~]$ date +%Y/%m/%d-%H:%M:%S
2026/09/12-20:40:36
[whb@linux ~]$ date +%s
1789195236
[whb@linux ~]$ cal -3
9.3 top:查看系统进程和资源占用
top 可以实时查看 CPU、内存使用情况以及进程列表,按 q 退出。可以用 -d 指定刷新间隔,用 -n 指定刷新次数。
bash
[whb@linux ~]$ top -d 1 -n 5
9.4 man:查看命令帮助
遇到不熟悉的命令,第一时间查阅 man 手册是最可靠的学习方式。
bash
[whb@linux ~]$ man ls
10. 权限管理
Linux 是一个多用户操作系统,权限管理是理解 Linux 的重要一环。Linux 下主要有两类用户:
- 超级用户 root:几乎可以做任何事情,命令提示符通常是
#。 - 普通用户:只能执行受限操作,命令提示符通常是
$。
10.1 文件访问者的分类
对于一个文件或目录,访问者分为三类:
- 属主 owner,用
u表示。 - 属组 group,用
g表示。 - 其他用户 others,用
o表示。
10.2 基本权限
每个文件或目录都有读、写、执行三种权限:
r:读权限,数值为 4。w:写权限,数值为 2。x:执行权限,数值为 1。
权限可以同时用字符方式和八进制数字表示,例如 rwxr-xr-x 对应数字 755。第一位 d 表示目录,- 表示普通文件,l 表示软链接。
10.3 chmod:修改文件权限
只有文件属主和 root 可以修改文件权限。可以使用符号方式或者八进制数字方式。
bash
# 给文件属主增加执行权限
[root@linux ~]$ chmod u+x /home/abc.sh
给其他用户去掉写权限
[root@linux ~]$ chmod o-w /home/abc.txt
用八进制数字设置权限
[root@linux ~]$ chmod 755 /home/abc.sh
[root@linux ~]$ chmod 644 /home/abc.txt
10.4 chown 与 chgrp
chown 用于修改文件属主,chgrp 用于修改文件属组,两者都可以使用 -R 递归处理目录。
bash
[root@linux ~]$ chown user1 file.txt
[root@linux ~]$ chgrp users /home/work/f2
[root@linux ~]$ chown -R user1:users /home/project
10.5 umask:默认权限掩码
新建文件时,系统会从默认权限中减去 umask 掩码,从而得到实际权限。例如新建文件的默认权限通常是 666,新建目录的默认权限通常是 777,如果 umask 为 022,那么新建文件的实际权限通常是 644,新建目录的实际权限通常是 755。
bash
[whb@linux ~]$ umask
0022
11. 小结
本文梳理了 Linux 中使用频率最高的一批基础指令,涵盖目录切换、文件增删、内容查看、检索、打包压缩、系统信息和权限管理。初学阶段建议按下面的顺序练习:
- 先用
pwd、ls、cd熟悉目录结构。 - 再用
touch、mkdir、cp、mv、rm练习文件操作。 - 然后练习
cat、less、head、tail、grep查看和检索内容。 - 最后理解
chmod、chown和umask,建立权限意识。
命令记不住很正常,最有效的方法是遇到不会的命令多用 man 查询,并在真实任务中反复练习。