Linux 基本指令学习笔记
一、文件/目录查看与导航指令
1. ls 指令(列出文件/目录)
-
功能:列出目录下的文件/子目录,或显示文件详情
-
常用选项:
-
-a:显示所有文件(含隐藏文件,以.开头) -
-l:显示详细信息(权限、大小、时间等) -
-d:仅显示目录本身(不展开子文件) -
-t:按时间排序 -
-F:标注文件类型(/表示目录,*表示可执行文件)
-
-
示例:
bash# 列出当前目录所有文件(含隐藏) ls -a # 列出指定目录详细信息 ls -l /home/whb # 按时间排序显示目录 ls -lt
2. pwd 指令(显示当前目录)
-
功能:输出用户当前所在的绝对路径
-
示例:
bashpwd # 输出:/home/whb/test
3. cd 指令(切换目录)
-
功能:改变当前工作目录
-
路径规则:
-
绝对路径:从
/开始(如/home/whb/test) -
相对路径:相对于当前目录(如
../temp表示上级目录下的temp)
-
-
常用用法:
bash# 切换到绝对路径目录 cd /home/whb/test # 切换到上级目录 cd .. # 切换到用户家目录(快捷方式) cd ~ # 切换到上一次访问的目录 cd -
二、文件/目录操作指令
1. touch 指令(创建文件/修改时间)
-
功能:新建空文件,或修改文件的访问/修改时间
-
常用选项:
-
-a:仅修改访问时间 -
-m:仅修改修改时间
-
-
示例:
bash# 新建空文件 touch newFile.txt # 同时新建多个文件 touch file1.txt file2.txt # 修改文件访问时间 touch -a newFile.txt
2. mkdir 指令(创建目录)
-
功能:创建新目录
-
常用选项:
-p:递归创建多级目录(父目录不存在时自动创建)
-
示例:
bash# 创建单个目录 mkdir mydir # 递归创建多级目录 mkdir -p path1/path2/path3
3. rmdir 指令(删除空目录)
-
功能:仅删除空目录
-
常用选项:
-p:删除子目录后,若父目录为空则一并删除
-
示例:
bash# 删除空目录 rmdir mydir # 递归删除空目录链 rmdir -p path1/path2/path3
4. rm 指令(删除文件/目录)
-
功能:删除文件或目录(危险操作,谨慎使用)
-
常用选项:
-
-r:递归删除目录及所有子内容 -
-f:强制删除(忽略只读文件,不提示) -
-i:删除前逐一确认
-
-
示例:
bash# 删除文件(带确认) rm -i file.txt # 强制删除目录及所有内容(常用) rm -rf mydir
5. cp 指令(复制文件/目录)
-
功能:复制文件或目录到指定位置
-
常用选项:
-
-i:覆盖前提示 -
-r:递归复制目录(含子目录和文件) -
-f:强制覆盖
-
-
示例:
bash# 复制文件到目标位置 cp file.txt /home/whb/backup/ # 复制目录(递归) cp -r mydir /home/whb/backup/ # 覆盖前提示 cp -i file.txt file_backup.txt
6. mv 指令(移动/重命名)
-
功能:移动文件/目录,或重命名
-
常用选项:
-i:覆盖前提示
-
示例:
bash# 重命名文件 mv oldname.txt newname.txt # 移动文件到目录 mv file.txt mydir/ # 移动目录到上级目录 mv mydir ../ # 覆盖前提示 mv -i file.txt existing.txt
7. echo 指令(输出内容到终端)
-
功能:在终端输出字符串或变量值
-
常用选项:
-
-n:输出后不换行 -
-e:支持转义字符(如\n换行、\t制表符)
-
-
示例:
bash
# 输出普通字符串
echo "Hello World"
# 输出变量值
name="Linux"
echo "Hello $name"
# 输出后不换行
echo -n "Hello "
echo "World"
# 支持转义字符
echo -e "Line 1\nLine 2"
8. 重定向符号:>、<、>>、<<
> 标准输出重定向
-
功能:将命令的输出内容覆盖写入到指定文件中(文件不存在则创建,存在则清空原有内容)
-
示例:
bash
# 将 ls 命令的输出覆盖写入到 file.txt
ls > file.txt
#将 echo 命令的输出覆盖写入到 data.txt
echo "hello bit" > data.txt
< 标准输入重定向
-
功能:将指定文件的内容作为命令的输入
-
示例:
bash
# 统计 file.txt 的行数(等价于 wc -l file.txt)
wc -l < file.txt
>> 标准输出追加重定向
-
功能:将命令的输出内容追加到指定文件末尾(文件不存在则创建)
-
示例:
bash
# 将 date 命令的输出追加到 log.txt 末尾
date >> log.txt
<< Here Document(输入重定向)
-
功能:从终端读取输入,直到遇到指定的结束符为止,常用于脚本中批量输入
-
示例:
bash
# 将输入内容写入到 file.txt,直到输入 EOF 结束
cat > file.txt << EOF
Line 1
Line 2
Line 3
EOF
📒 理解Linux 标准 I/O 与"一切皆文件"
🔹 核心思想:一切皆文件
在 Linux 系统中,硬件设备、进程通信、网络连接等都被抽象为文件,可以用统一的"读/写/打开/关闭"方式操作。
-
键盘 → 标准输入文件(
stdin,文件描述符0) -
显示器 → 标准输出文件(
stdout,文件描述符1) -
显示器 → 标准错误文件(
stderr,文件描述符2)
这些设备文件在 /dev 目录下,如 /dev/stdin、/dev/stdout、/dev/stderr、/dev/tty。
🔹 echo 命令与标准输出(stdout)
echo 是向 stdout(默认显示器) 输出内容的命令,完美体现"一切皆文件"的抽象思想。
基础用法
bash
# 默认输出到显示器(等价于 echo "Hello" > /dev/stdout)
echo "Hello, Linux"
重定向到普通文件
bash
# 将输出从显示器重定向到普通文件
echo "Hello, File" > output.txt
echo "Append Line" >> output.txt # 追加写入
本质: 把 echo 的写入目标从 /dev/stdout(显示器)换成普通文件,操作方式完全一致。
🔹 标准输入(stdin)
默认关联键盘,文件描述符 0,可以用 < 重定向到其他文件。
bash
# 从 file.txt 读取内容作为 wc 的输入(替代键盘)
wc -l < file.txt
🔹 标准错误(stderr)
默认关联显示器,文件描述符 2,可以用 2> 重定向到文件。
bash
# 将错误信息写入 error.log(而不是显示在屏幕上)
echo_non_existent_command 2> error.log
🔹 重定向符号速记
|----------|-----------------------|
| 符号 | 作用 |
| > | 覆盖写入到文件(stdout) |
| >> | 追加写入到文件(stdout) |
| < | 从文件读取输入(stdin) |
| 2> | 覆盖写入错误信息(stderr) |
| 2>> | 追加写入错误信息(stderr) |
| << EOF | Here Document,批量输入到命令 |
三、文件内容查看指令
1. cat 指令(查看文件内容)
-
功能:读取文件内容并输出到终端(适合小文件)
-
常用选项:
-
-n:显示所有行号(含空行) -
-b:仅显示非空行号 -
-s:压缩连续空行为一行
-
-
示例:
bash# 查看文件内容 cat file.txt # 显示行号查看 cat -n file.txt
2. more 指令(分页查看大文件)
-
功能:分页显示文件内容(仅向前翻页)
-
常用操作:
-
按
Enter:下一行 -
按
Space:下一页 -
按
q:退出
-
-
示例:
bash# 分页查看大文件 more large_file.txt # 指定每页显示10行 more -10 large_file.txt
3. less 指令(灵活分页查看)
-
功能:分页显示(支持前后翻页、搜索,适合大文件)
-
常用操作:
-
PageUp/PageDown:前后翻页 -
/字符串:向下搜索字符串 -
?字符串:向上搜索字符串 -
q:退出
-
-
示例:
bash# 分页查看(带行号) less -N large_file.txt
4. head 指令(查看文件开头)
-
功能:显示文件前N行(默认前10行)
-
常用选项:
-n 行数:指定显示行数
-
示例:
bash# 显示前10行(默认) head file.txt # 显示前5行 head -5 file.txt
5. tail 指令(查看文件结尾)
-
功能:显示文件后N行(默认后10行),支持动态监控
-
常用选项:
-
-n 行数:指定显示行数 -
-f:动态监控文件更新(适合查看日志)
-
-
示例:
bash# 显示后5行 tail -5 log.txt # 动态监控日志文件 tail -f /var/log/messages # 显示文件第180-200行(结合head) head -200 file.txt | tail -20
📒 Linux 管道(|)学习笔记
🔹 核心概念
管道的符号是 |,它的作用是将前一个命令的标准输出(stdout)直接作为后一个命令的标准输入(stdin),实现命令间的"数据流式传递"。
例子理解:
bash
i=0; while [ $i -le 10000 ]; do echo "hello $i"; let i++; done
head -5010 data.txt | tail -11
-
左边
head -5010 data.txt:读取文件前 5010 行 → 输出到stdout -
管道
|:将这 5010 行内容"输送"给右边命令 -
右边
tail -11:从输入的 5010 行中,提取最后 11 行 → 得到原文件第 5000~5010 行
🔹 管道的核心特点
-
连接 stdout 与 stdin
-
管道只传递标准输出(stdout),标准错误(stderr)默认不会被传递。
-
比如,如果左边的命令报错,错误信息会直接显示在屏幕上,不会进入管道。
-
-
数据流式传递
-
数据是边生成边传递的,不需要先把左边命令的所有输出写入临时文件,效率很高。
-
在例子里,
head输出一行,tail就接收一行,不需要等head把 5010 行全部输出完才开始处理。
-
四、搜索与查找指令
1. find 指令(查找文件/目录)
-
功能:在指定路径下按条件查找文件/目录
-
常用选项:
-name:按文件名查找(支持通配符*)
-
示例:
bash# 在当前目录查找名为test.c的文件 find . -name test.c # 在/home目录查找所有.txt文件 find /home -name "*.txt"
2. grep 指令(搜索文件内容)
-
功能:在文件中搜索指定字符串,输出匹配行
-
常用选项:
-
-i:忽略大小写 -
-n:显示匹配行号 -
-v:反向匹配(显示不包含该字符串的行)
-
-
示例:
bash# 在file.txt中搜索"abcd"(区分大小写) grep "abcd" file.txt # 忽略大小写,显示行号 grep -in "abcd" file.txt # 反向匹配(不包含"abcd"的行) grep -v "abcd" file.txt
3. which 指令(查找命令路径)
-
功能:查找系统命令的可执行文件路径
-
说明:指令的本质是Linux特定路径下的可执行文件。(系统默认到 /usr/bin/ 下查找指令)
-
示例:
bash# 查找ls命令的路径 which ls # 查找pwd命令的路径 which pwd
4. whereis 指令(查找程序相关文件)
-
功能:查找命令的二进制文件、源文件和手册页
-
示例:
bash# 查找ls相关文件 whereis ls
五、压缩与解压指令
1. zip/unzip 指令(ZIP格式压缩/解压)
-
功能:压缩文件/目录为ZIP格式,或解压ZIP文件
-
常用选项:
-
zip -r:递归压缩目录 -
unzip -d:指定解压目录
-
-
示例:
bash# 压缩目录(递归) zip -r test.zip mydir/ # 解压到指定目录 unzip test.zip -d /home/whb/unzip/
2. tar 指令(打包/压缩/解压,重要)
-
功能:打包文件/目录,支持gzip、bzip2压缩
-
核心参数:
-
-c:创建打包文件(打包/压缩) -
-x:解压打包文件 -
-t:查看打包文件内容 -
-z:使用gzip压缩/解压(后缀.tar.gz) -
-j:使用bzip2压缩/解压(后缀.tar.bz2) -
-v:显示操作过程 -
-f:指定打包文件名(必须放在参数最后) -
-C:指定解压目录
-
-
示例:
bash# 打包并gzip压缩 tar -zcvf etc.tar.gz /etc/ # 解压gzip压缩包 tar -zxvf etc.tar.gz -C /home/whb/ # 查看压缩包内容 tar -ztvf etc.tar.gz # 打包并bzip2压缩 tar -jcvf data.tar.bz2 /home/whb/data/
六、系统与工具指令
1. date 指令(查看/设置时间)
-
功能:显示当前时间,或设置系统时间(需root权限)
-
常用格式:
-
date +%Y-%m-%d:显示年月日 -
date +%H:%M:%S:显示时分秒 -
date +%s:显示时间戳(秒数,从1970-01-01开始)
-
-
示例:
bash# 显示格式化时间 date +%Y-%m-%d %H:%M:%S # 显示时间戳 date +%s # 时间戳转时间 date -d @1673432636
2. cal 指令(查看日历)
-
功能:显示公历日历
-
常用选项:
-
-3:显示前一个月、当前月、下一个月 -
-y:显示全年日历
-
-
示例:
bash# 显示当前月日历 cal # 显示2024年全年日历 cal -y 2024 # 显示近三个月日历 cal -3
3. alias 指令(设置命令别名)
-
功能:为常用命令设置简化别名(临时生效,重启失效)
-
**说明:**尽量不要这么干,避免到其他的主机上无法使用。
-
示例:
bash# 设置别名ll=ls -l alias ll='ls -l' # 设置别名hello=ls -a -l -n alias hello='ls -a -l -n'
4. bc 指令(浮点运算)
-
功能:简易计算器,支持浮点运算
-
示例:
bash# 启动bc计算器 bc # 计算2.5+3.8(输入后按回车) 2.5+3.8 # 退出计算器(输入quit) quit
5. uname 指令(查看系统信息)
-
功能:显示系统内核、硬件相关信息
-
常用选项:
-
-r:显示内核版本 -
-a:显示所有系统信息
-
-
示例:
bash# 查看内核版本 uname -r # 查看所有系统信息 uname -a
6. man 指令(查看命令手册)
-
功能:查看 Linux 命令的详细帮助手册
-
常用选项:
-
-k:根据关键字搜索相关命令 -
-f:显示命令的简短描述
-
-
示例:
bash
# 查看 ls 命令的手册
man ls
# 搜索包含 "copy" 关键字的命令
man -k copy
# 显示 cp 命令的简短描述
man -f cp
7. wc 指令(统计文本行数、单词数、字节数)
-
功能:统计文件的行数、单词数、字节数
-
常用选项:
-
-l:仅统计行数 -
-w:仅统计单词数 -
-c:仅统计字节数
-
-
示例:
bash
# 统计文件的行数、单词数、字节数
wc test.txt
# 仅统计行数
wc -l test.txt
# 仅统计单词数
wc -w test.txt
# 仅统计字节数
wc -c test.txt
七、关机与重启指令
shutdown 指令(关机/重启)
-
功能:安全关机或重启系统(需root权限)
-
常用选项:
-
-h:关机(halt) -
-r:重启(reboot) -
-t 秒数:延迟指定秒数后执行
-
-
示例:
bash# 立即关机 shutdown -h now # 5分钟后重启 shutdown -r +5 # 23:30关机 shutdown -h 23:30 # 取消关机计划 shutdown -c
八、常用快捷键
-
Tab:命令补全、文件补全(按一次提示,按两次显示所有选项) -
Ctrl + C:终止当前运行的命令 -
Ctrl + D:退出当前终端(等价于exit)