Linux学习笔记 1.19

Linux 基本指令学习笔记

一、文件/目录查看与导航指令

1. ls 指令(列出文件/目录)

  • 功能:列出目录下的文件/子目录,或显示文件详情

  • 常用选项

    • -a:显示所有文件(含隐藏文件,以.开头)

    • -l:显示详细信息(权限、大小、时间等)

    • -d:仅显示目录本身(不展开子文件)

    • -t:按时间排序

    • -F:标注文件类型(/表示目录,*表示可执行文件)

  • 示例

    bash 复制代码
    # 列出当前目录所有文件(含隐藏)
    ls -a
    # 列出指定目录详细信息
    ls -l /home/whb
    # 按时间排序显示目录
    ls -lt

2. pwd 指令(显示当前目录)

  • 功能:输出用户当前所在的绝对路径

  • 示例

    bash 复制代码
    pwd
    # 输出:/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 行

🔹 管道的核心特点

  1. 连接 stdout 与 stdin

    1. 管道只传递标准输出(stdout),标准错误(stderr)默认不会被传递。

    2. 比如,如果左边的命令报错,错误信息会直接显示在屏幕上,不会进入管道。

  2. 数据流式传递

    1. 数据是边生成边传递的,不需要先把左边命令的所有输出写入临时文件,效率很高。

    2. 在例子里,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

相关推荐
i建模2 小时前
linux断点续传下载文件
linux·运维·服务器
执笔论英雄2 小时前
【RL]分离部署与共置模式详解
服务器·网络·windows
Leekwen2 小时前
生命的选题
学习·思考·生活·认知高度·认知带宽
xhbaitxl2 小时前
算法学习day31-贪心算法
学习·算法·贪心算法
木卫二号Coding2 小时前
Docker-构建自己的Web-Linux系统-Ubuntu:22.04
linux·前端·docker
拍客圈2 小时前
Discuz CC 防护规则
服务器·网络·安全
小天源2 小时前
CentOS 7介绍及其下载
linux·运维·ubuntu·centos·麒麟·windows11·windows10
TGITCIC3 小时前
丢掉向量数据库!推理型 RAG 正在重新定义长文档问答的准确边界
数据库·ai大模型·推理·ai搜索·大模型ai·rag增强检索·ai检索
十年编程老舅3 小时前
冲刺米哈游|游戏开发一面面经(26 届
linux·c++·米哈游