Linux 命令行基础
这一篇我们从零开始,认识终端、命令的格式,学会最基本的"走路"——知道自己在哪里、怎么列文件、怎么切换目录、怎么建目录建文件。这是后续所有命令的基础。
1. 终端、Shell、提示符
终端(Terminal)是一个让你输入文字命令的程序窗口;Shell是终端背后真正解释并执行这些命令的程序,最常用的是 bash(Bourne Again Shell)。打开终端(Linux 上 Ctrl+Alt+T),你会看到一行提示符,光标闪烁等待你输入。
# pwd:print working directory,显示当前所在目录的绝对路径
pwd
# /home/aden
# 终端提示符长这样:
# aden@ubuntu:~/projects$
# | | | |
# | | | 当前目录(~ 表示主目录)
# | | 主机名
# 当前用户 @
# $ 表示普通用户,# 表示 root(管理员)提示符末尾的 $ 表示你是普通用户;如果是 #,说明你是 root(管理员,权限最大,误操作也最危险)。日常尽量用普通账号,需要时再用 sudo 临时提权。
2. 命令的通用格式
几乎所有 Linux 命令都遵循这个格式:
命令名 [选项] [参数]
例如 ls -l /etc 里,ls 是命令名,-l 是选项(option,通常以 - 开头,改变命令的行为),/etc 是参数(作用对象)。多个选项可以合并:ls -l -a -h 等于 ls -lah。
3. pwd:我在哪
pwd 是 "print working directory" 的缩写,告诉你当前所在目录的绝对路径。新手最容易"迷路",pwd 就是问路的第一步。
# pwd:print working directory,显示当前所在目录的绝对路径
pwd
# /home/aden
# 终端提示符长这样:
# aden@ubuntu:~/projects$
# | | | |
# | | | 当前目录(~ 表示主目录)
# | | 主机名
# 当前用户 @
# $ 表示普通用户,# 表示 root(管理员)4. ls:列出目录内容
ls 是 "list" 的缩写,使用频率可能比任何命令都高。常用选项:
-l:long,长格式(显示权限、大小、时间)。-a:all,显示隐藏文件(以.开头的文件默认不显示)。-h:human-readable,文件大小显示成 K、M、G 而不是字节数。-t:按时间排序;-S:按大小排序;-r:反序。
# ls:list,列出目录内容
ls # 仅列出文件名
ls -l # 长格式:权限、所有者、大小、时间
ls -a # all:含隐藏文件(以 . 开头的)
ls -h # human-readable:文件大小用 K/M/G
ls -lah # 三个选项组合(最常用)
ls -lt # 按修改时间排序(新的在前)
ls -lS # 按文件大小排序(大的在前)
ls -lr # 反向排序
ls /etc # 列出指定目录的内容
ls *.txt # 通配符:所有 .txt 文件看懂 ls -lah 的输出是基本功,每一列都有含义:
# ls -lah 的输出解读(每行一个文件)
total 48K
drwxr-xr-x 3 aden aden 4.0K Aug 5 10:22 .
drwxr-xr-x 30 aden aden 4.0K Aug 5 09:00 ..
-rw-r--r-- 1 aden aden 220 Aug 5 10:00 hello.txt
-rwxr-xr-x 1 aden aden 84K Aug 4 18:30 deploy.sh
drwxr-xr-x 2 aden aden 4.0K Aug 3 14:11 src
# 第 1 列:文件类型 + 权限(d=目录, -=普通文件, l=链接)
# 第 2 列:链接数
# 第 3、4 列:所有者、所属组
# 第 5 列:大小
# 第 6-8 列:修改时间
# 第 9 列:文件名第一列第一个字符表示文件类型:- 是普通文件,d 是目录,l 是软链接。后面 9 位是权限位,下一篇权限专门讲。
5. cd:切换目录
cd 是 "change directory" 的缩写。掌握它的关键是理解绝对路径和相对路径。
# cd:change directory,切换目录
cd /home/aden/projects # 绝对路径(从根 / 开始)
cd projects # 相对路径(从当前目录开始)
cd .. # 上一级目录(两个点)
cd . # 当前目录(一个点,几乎不用)
cd ~ # 回主目录(~ 是 home 的简写)
cd # 不带参数,也回主目录
cd - # 回到上一次所在的目录(来回切换神器)
cd ../.. # 上两级
cd ~/Documents # 主目录下的 Documents几个高频技巧:
cd不带参数直接回主目录,等于cd ~。cd -在两个目录之间来回切换,非常实用。..表示上一级,可以叠加:cd ../..上两级。
6. mkdir 与 touch:创建目录和文件
mkdir 是 "make directory",touch 本意是"摸一下"文件来更新时间戳,但最常用来创建空文件。
# mkdir:make directory,创建目录
mkdir photos # 创建一个名为 photos 的目录
mkdir a b c # 一次创建多个
mkdir -p parent/child/grand # -p:父目录不存在就一起建(常用)
# 不加 -p,父目录不存在会报错
mkdir nope/sub
# mkdir: cannot create directory 'nope/sub': No such file or directory
# touch:创建空文件,或更新已有文件的时间戳
touch notes.txt # 创建空文件(或刷新访问时间)
touch a.txt b.txt c.txt # 一次创建多个mkdir -p 是高频选项:一次性建多级目录而不会因为父目录不存在报错,在写脚本时几乎必加。
7. 绝对路径、相对路径、通配符
把这些概念一次讲清楚,后面所有命令都依赖它:
# 绝对路径 vs 相对路径
# 绝对路径:从根目录 / 开始,唯一确定,任何位置都能用
cat /etc/hostname
cd /var/log
# 相对路径:从当前目录开始,取决于你在哪
cd projects # 当前目录下必须有 projects
cat ../shared/config.yml # 上一级里的 shared 目录
# 两个特殊目录:
# . 当前目录
# .. 上一级目录
# ~ 主目录(等于 /home/用户名)
# 通配符(wildcard)
ls *.py # 所有 .py 文件
ls test?.txt # test1.txt、test2.txt……(? 匹配单字符)
ls [abc].md # a.md、b.md、c.md([] 匹配其中之一)通配符(wildcard)是命令行的杀手锏:* 匹配任意长度字符,? 匹配单个字符,[abc] 匹配方括号里任一字符。批量操作时离不开它,比如 rm *.log 一次删所有日志、cp *.jpg photos/ 一次复制所有图片。
8. 三个提速神器
- Tab 补全:输命令或路径前几个字符按 Tab,终端自动补全。补不全是双击 Tab 看所有候选。这是命令行比鼠标快十倍的关键。
- 上下方向键:翻历史命令。输错过、想改的命令直接调出来改。
- Ctrl+R:反向搜索历史命令。按 Ctrl+R 后输入关键字,从最近往前找匹配的命令。
9. man:命令自带的说明书
忘了某个命令怎么用,不要急着搜百度,先用 man(manual 的缩写):
man ls:看ls的完整文档。- 翻页用方向键或 PgUp/PgDn,按
/搜索关键字,按q退出。 - 只看简短用法用
ls --help(多数命令支持)。 - 更友好的替代:装
tldr(npm i -g tldr),tldr tar直接给最常用例子。
小结
这一篇你学会了"走路":pwd 知道在哪、ls 看周围有什么、cd 切换位置、mkdir 和 touch 创建目录和文件、Tab 键补全加速。下一篇我们学文件操作——复制、移动、删除、查看内容。
← 上一篇 Linux 简介
下一篇 Linux 文件操作 →