当前位置: 首页 > news >正文

Linux命令基础(下)

文章目录

    • 一、目录操作相关命令
      • 1. 查看当前目录 `pwd`
      • 2. 切换目录 `cd`
      • 3. 创建目录 `mkdir`
      • 4. 删除空目录 `rmdir`
    • 二、文件相关命令
      • `ls`(list)
      • `touch`
      • `cp`(copy)
      • `rm`(remove)
      • `mv`(move)
    • 三、查看文件内容命令
      • `cat`
      • `more`
      • `less`
      • `head`
      • `tail`
    • 五、`du` 和 `df` 命令
      • `du`(disk usage)
      • `df`(disk free)
    • 六、查找命令
      • `find`—— 查找文件
      • `grep`—— 文本内容搜索
    • 七、管道 `|`
    • 八、压缩包管理
      • `gzip` / `bzip2`
      • 压缩
      • 解压缩
      • `zip` / `unzip`
    • 九、文件权限管理
      • 9.1 文件权限结构
      • 9.2 用户分类
      • 9.3 权限说明示例
      • 9.4 `chmod`
      • 9.5 `chown`
      • 9.6 `chgrp`
    • 十、 进程管理
      • `ps`
      • `top`
      • `kill`
      • `killall`
      • `reboot`
    • 十一、重定向
      • 11.1 标准输出(stdout)重定向
      • 11.2 错误输出(stderr)重定向
      • 11.3 标准输出 + 错误输出重定向
      • 11.4 **标准输入(stdin)重定向**
    • 十二、 其它命令
      • `tree`
      • `ln`

一、目录操作相关命令

1. 查看当前目录 pwd

pwd

输出当前所在的完整路径。

2. 切换目录 cd

cd /path/to/dir       # 进入指定绝对路径
cd ..                 # 返回上一级目录
cd                    # 返回主目录
cd -                  # 返回上一次所在的目录

3. 创建目录 mkdir

mkdir test                    # 创建test目录
mkdir -p a/b/c                # 递归创建多层目录
mkdir "a b"mkdir a\ b    # 创建带空格的目录
mkdir file{1..3}              # 批量创建file1 file2 file3

4. 删除空目录 rmdir

rmdir test                    # 删除空目录test
rmdir file{1..3}              # 批量删除空目录
rmdir "a b"rmdir a\ b     # 删除带空格目录

注意:rmdir 只能删除空目录,不为空时用 rm -r

二、文件相关命令

ls(list)

  • 作用:列出目录内容。

  • 常用参数

    • -l:详细列表
    • -a:显示隐藏文件
    • -h:人类可读大小(配合 -l
  • 示例

    ls -alh
    

touch

  • 作用:创建空文件,或更新文件时间戳。

    touch test.txt
    

cp(copy)

  • 作用:复制文件或目录。

  • 常用参数

    • -r:递归复制目录
    • -i:覆盖前确认
  • 语法:cp 参数A 参数B

    • 参数A文件
      • 参数B是目录,且目录存在:将A文件拷贝放到B目录中
      • 参数B不存在,且不是目录:将A文件拷贝生成B
      • 参数B不存在,是目录:报错
      • 参数B是已存在文件:A覆盖B
    • 参数A目录
      • 必须添加参数:-r 或 -a
      • -r :递归。相当于新建文件
      • -a :all。拷贝时带有文件默认属性
  • 示例

    # 复制文件到另一个文件名
    cp a.txt b.txt# 复制文件到目录中
    cp a.txt /tmp/# 复制整个目录(递归)
    cp -r /etc/nginx/ ./backup/# 保留文件属性复制(推荐方式)
    cp -a ./src ./dest# 覆盖前提示
    cp -i config.conf /etc/# 丢弃提示直接覆盖
    cp -f config.conf /etc/

rm(remove)

  • 作用:删除文件或目录。删除的文件不能恢复。

  • 常用参数

    • -r:递归删除
    • -f:强制删除
  • 示例

    rm file.txt
    rm -rf dir/
    

mv(move)

  • 作用:移动或重命名文件。

    • 操作时不需要额外参数。
    • mv 源文件 目标文件。
      • 目标文件不存在,直接改名。
      • 目标目录存在,移动。
  • 示例

    mv oldname.txt newname.txt
    mv file.txt /tmp/
    

三、查看文件内容命令

cat

  • 显示整个文件内容。
    cat file.txt
    cat file1 > file2  # file2不存在则创建,存在则覆盖
    cat file1 >> file2 # 将file1的内容追加到file1中
    tac file.txt       # 倒序显示
    

more

  • 分页显示,按空格翻页。
    more file.txt
    
    • q 退出
    • Enter 多显示一行
    • Space 多显示一屏

less

  • 分页显示,支持上下滚动。
    less file.txt
    

head

  • 显示文件开头内容,默认 10 行。
    head -n 5 file.txt
    
  • 查看前 5 行

tail

  • 显示文件末尾内容,支持实时查看。

    tail -n 5 file.txt      # 查看后5行
    tail -f /var/log/syslog
    

五、dudf 命令

du(disk usage)

  • 查看文件或目录大小
  • 常用:
    du -sh *
    

df(disk free)

  • 查看磁盘剩余空间
  • 常用:
    df -h
    

六、查找命令

find—— 查找文件

基本语法:

find [搜索路径] [搜索条件] [执行操作]
  1. 按文件名查找
find /path -name "filename"
  • 模糊查找(通配符)如:"*.conf"
  • 忽略大小写:-iname
  • “ * ” 匹配 0~N 个字符,“?”匹配 1 个任意字符
  1. 按大小查找
find /path -size +100k       # 大于100k
find /path -size -50M        # 小于50M
find /path -size +50k -size -100k  # 范围查询
  • 单位大小:k(小写)、M(大写)、G
  1. 按类型查找(-type)
f  # 普通文件
d  # 目录
l  # 符号链接
c  # 字符设备
b  # 块设备
s  # 套接字
p  # 管道
  1. 按时间查找
find / -mtime +2     # 修改时间超过2天前
find / -atime -1     # 最近1天访问过的文件
find / -ctime -3     # 最近3天内状态变化
  • -mtime:内容修改时间
  • -atime:访问时间
  • -ctime:权限/属主/链接数变化时间
  1. 按权限与属主查找
find / -user root        # 属主为root
find / -group root       # 属组为root
find / -perm 777         # 权限为777
find / -nouser           # 没有属主
find / -nogroup          # 没有属组
  1. 高级查找
    • -maxdepth -n 指定搜寻的层级,放在其他参数前
    • -exec :将 find 搜索的结果,指定给某一个其他命令执行
      • find命令 -exec shell命令 {} \;
# 示例 1:查找当前目录下的所有 .txt 文件(不递归子目录)
find . -maxdepth 1 -name "*.txt"
# 说明:
# .            :当前目录
# -maxdepth 1  :最多查找 1 层(即不进入子目录)
# -name        :按照文件名匹配# 示例 2:查找并删除所有 .log 文件(危险操作!)
find . -name "*.log" -exec rm {} \;
# 说明:
# -exec        :对查找到的每一个文件执行后面的命令
# rm {}        :删除文件,{} 是 find 查找到的文件名
# \;           :以分号结尾,必须加反斜杠# 示例 3:查找所有 .c 文件并显示详细信息(ls -l)
find ~/Documents -name "*.c" -exec ls -l {} \;
# 说明:
# 对每一个查找到的 .c 文件,执行 ls -l 查看详细信息# 示例 4:查找 /etc 目录下(最多 2 层)的所有 .conf 文件
find /etc -maxdepth 2 -name "*.conf"
# 说明:
# 限制查找深度为2层,更高效且避免进入过深目录# 示例 5:查找并删除所有 .log 文件(推荐更高效写法)
find . -name "*.log" -exec rm {} +
# 说明:
# 与 \; 相比,+ 会把多个文件名一起传给 rm,提高效率# 示例 6:查找并交互式删除所有 .log 文件(每次询问确认)
find . -name "*.log" -ok rm {} \;
# 说明:
# -ok 和 -exec 类似,但执行命令前会提示用户确认(更安全)

grep—— 文本内容搜索

基本语法:

grep [选项] "关键词" 文件/路径

常用参数与用法:

选项含义
-r递归查找目录下所有文件(搜索目录)
-i忽略大小写
-n显示匹配行号
-v显示不匹配的行
--color高亮显示匹配关键词(推荐)
-w匹配完整单词

示例

grep "hello" file.txt              # 搜索hello
grep -i "hello" file.txt           # 忽略大小写
grep -n "hello" file.txt           # 显示行号
grep -v "hello" file.txt           # 显示未包含hello的行
grep -r "hello" /etc/              # 在目录递归搜索
grep -w "hello" file.txt           # 完整单词匹配
grep --color=auto "hello" file.txt # 高亮匹配

特殊情况处理

grep -a "text" binaryfile          # 在二进制文件中查找文本

七、管道 |

  • 作用:连接多个命令,将前一个输出作为后一个输入。

    ls -l | grep ".txt"
    

八、压缩包管理

Linux 操作系统默认支持的压缩格式:gzip、bzip2,默认这两种压缩模式只能压缩单个文件,不支持打包;压缩后,源文件消失。

在 Linux / Unix 中压缩、解压缩,借助 tar 命令来完成。tar 的作用是“打包”

gzip / bzip2

  • 不能压缩目录,只能一个一个文件进行压缩,压缩之后会使源文件消失
    • gzip* 压缩当前目录下的所有文件,但是目录不能压缩
    • gunzip* 解压当前目录下所有的.gz文件
    • bzip2* 压缩当前目录下的所有文件,但是目录不能压缩
    • bunzip2 解压当前目录下所有的 .bz2 文件

压缩

  • 格式:tar zcvf 压缩包名.tar.gz 压缩原材料
    • z:使用 gzip 压缩格式。如果选用 bzip2,将 z 替换成 j
    • c:创建压缩包
    • v:显示压缩过程
    • f:用来指定压缩包包名。f 必须是最后一个参数,后面紧跟压缩包名称
  • 示例
# 压缩多个文件为一个压缩包
tar zcvf myfiles.tar.gz file1 file2 file3# 使用 bzip2 格式压缩
tar jcvf mydir.tar.bz2 mydir/

解压缩

  • 格式:tar zxvf 压缩包名.tar.gz
    • z:使用 gzip 压缩格式。如果选用 bzip2,将 z 替换成 j
    • x:解包(extract)
    • v:显示压缩过程
    • f:用来指定压缩包包名。f 必须是最后一个参数,后面紧跟压缩包名称
  • 直接解压缩到当前目录,将解压缩的文件存储到指定目录,使用参数 -C
  • 示例
# 解压 mydir.tar.gz 到当前目录
tar zxvf mydir.tar.gz# 解压 bzip2 格式的包
tar jxvf mydir.tar.bz2tar zxvf mydir.tar.gz -C /path/to/destination

zip / unzip

  • zip 格式压缩解压

    zip a.zip file1 file2
    unzip a.zip
    

九、文件权限管理

9.1 文件权限结构

  • rwx,分别代表读/写/执行

9.2 用户分类

  • 所有者(user)

  • 所属组(group)

  • 其他人(other)

  • 添加新用户:

sudo adduser 新用户名
  • 删除用户
sudo deluser 用户名
  • 切换用户
sudo [用户名]

9.3 权限说明示例

Linux 下使用 ls -l 查看文件权限时,会看到类似这样的输出:

-rwxr-xr--

这个 10 个字符 的字符串,可以分为以下部分:

位置含义示例
第 1 位文件类型- 表示普通文件,d 表示目录
第 2-4 位所有者权限rwx 表示读、写、执行权限
第 5-7 位所属组权限r-x 表示读和执行
第 8-10 位其他用户权限r-- 表示只读
  • -:普通文件
  • rwx:所有者有读、写、执行权限
  • r-x:同组用户有读和执行权限(不能写)
  • r--:其他用户只能读

9.4 chmod

一、字母法

格式:

chmod [u/g/o/a] [+/-/=] [r/w/x] 文件名
符号含义
u所有者(user)
g同组用户(group)
o其他用户(other)
a所有人(all)
+添加权限
-删除权限
=直接设置权限(替换原权限)

示例:

  1. 允许其他用户写文件:
chmod o+w notes.txt
  1. 移除所有者的读权限:
chmod u-r secret.txt
  1. 将组用户权限设为“仅执行”:
chmod g=x run.sh

二、数字法

格式:

chmod XYZ 文件名

每一位分别代表:u(所有者)g(同组用户)o(其他用户) 权限,总和如下:

权限数字说明
r4可读
w2可写
x1可执行
-0无权限

示例:

  1. 设置权限为 751:
chmod 751 myscript.sh

权限表示:

  • 所有者:7 → rwx
  • 同组用户:5 → r-x
  • 其他用户:1 → --x
  1. 设置为所有用户都有全部权限:
chmod 777 data.log
  • 所有人均为 rwx 权限,常见于共享目录或测试场景,但不推荐用于生产环境

三、递归设置子目录权限

加上 -R 选项可递归设置目录及其内容:

chmod -R 755 /home/user/project
  • project 及其子目录和文件全部设置为 755 权限。

9.5 chown

  • 更改文件所有者

  • chown 用户名 文件或目录名

    chown user:group file.txt
    

9.6 chgrp

  • 更改所属组

  • chgrp 用户组名 文件或目录名

    chgrp developers file.txt
    

十、 进程管理

ps

ps命令可以查看进程的详细状况,常用选项(选项可以不加“-”)如下:

选项含义
-a显示终端上的所有进程,包括其他用户的进程
-u显示进程的详细状态
-x显示没有控制终端的进程
-w显示加宽,以便显示更多的信息
-r只显示正在运行的进程
  • 查看进程信息
    ps aux | grep firefox
    

top

top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。可以在使用top命令时加上-d 来指定显示信息更新的时间间隔。

  • 实时查看进程状态、资源占用
    top
    

在top命令执行后,可以按下按键得到对显示的结果进行排序:

按键含义
M根据内存使用量来排序
P根据CPU占有率来排序
T根据进程运行时间的长短来排序
U可以根据后面输入的用户名来筛选进程
K可以根据后面输入的PID来杀死进程。
q退出
h获得帮助

kill

  • 杀死进程(通过 PID)

    kill 1234
    kill -9 1234
    
  • 有些进程不能直接杀死,这时候我们需要加一个参数“ -9 ”,“ -9 ” 代表强制结束

killall

  • 通过进程名杀死进程
    killall firefox
    

reboot

  • 重启命令
sudo reboot

十一、重定向

Linux 中的输入/输出流默认有三种类型:

类型编号默认设备
标准输入 stdin0键盘
标准输出 stdout1屏幕
错误输出 stderr2屏幕

11.1 标准输出(stdout)重定向

操作命令说明
覆盖写入>正确输出写入文件,覆盖原内容
追加写入>>正确输出追加到文件末尾

示例:

ls /etc/passwd > output.txt      # 输出写入 output.txt(覆盖)
ls /etc/shadow >> output.txt     # 输出追加到 output.txt

11.2 错误输出(stderr)重定向

操作命令说明
覆盖写入2>错误信息写入文件,覆盖原内容
追加写入2>>错误信息追加到文件末尾
丢弃错误输出2> /dev/null将错误输出丢弃(黑洞)

示例:

ls invalid_dir 2> error.txt      # 错误信息写入 error.txt
ls invalid_dir 2>> error.txt     # 错误信息追加写入
ls invalid_dir 2> /dev/null      # 丢弃错误输出

11.3 标准输出 + 错误输出重定向

操作命令说明
全部重定向(覆盖)&>正确+错误输出都写入文件,覆盖
全部重定向(追加)&>>正确+错误输出都追加到文件
全部重定向到黑洞&> /dev/null屏蔽所有输出

示例:

ls good_dir bad_dir &> all.txt     # 正确+错误都写入 all.txt
ls good_dir bad_dir &>> all.txt    # 正确+错误都追加写入
ls good_dir bad_dir &> /dev/null   # 所有输出丢弃

11.4 标准输入(stdin)重定向

操作命令说明
使用文件作为输入<从文件中读取数据作为输入

示例:

cat < input.txt      # 从 input.txt 读取内容显示

十二、 其它命令

tree

  • 树状结构展示目录,使用该命令需要安装软件 tree

ln

Linux 使用 ln 命令创建链接文件,分为两种类型:

类型符号链接(软链接)硬链接
命令格式ln -s 源文件 链接文件ln 源文件 链接文件
是否跨目录可以跨目录不能跨目录
是否链接目录可以链接目录只能链接普通文件
是否依赖源文件源文件删了,链接就失效源文件删了,链接仍可用
占用空间不额外占用空间(只存路径)占用空间(和原文件共享 inode)
是否常用常用使用较少,限制多
  • 硬链接源文件和链接文件之间,有“同步更新”的特性

创建软链接

ln -s /home/user/original.txt shortcut.txt
  • 创建一个名为 shortcut.txt 的软链接,指向 /home/user/original.txt
  • 如果源文件在不同目录,建议使用绝对路径以防链接失效

示例:

ln -s /etc/passwd passwd_link
  • 创建指向系统用户文件 /etc/passwd 的链接文件 passwd_link

创建硬链接

ln original.txt hardcopy.txt
  • 创建一个与 original.txt 共享 inode 的硬链接
  • 删除 original.txt 后,hardcopy.txt 仍然有效,内容不会丢失
  • 限制:不能链接目录,不能跨分区

使用 readlink 查看软链接的真实目标

readlink 链接文件

示例:

readlink passwd_link
  • 输出:/etc/passwd
  • 说明该链接指向 /etc/passwd
http://www.lryc.cn/news/609326.html

相关文章:

  • 1.内核模块
  • 14.Redis 哨兵 Sentinel
  • 2. 字符设备驱动
  • IO流-对象流
  • 克罗均线策略思路
  • `npm error code CERT_HAS_EXPIRED‘ 问题
  • Java Stream API 编程实战
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 77-1(题目+回答)
  • 《测试驱动的React开发:从单元验证到集成协同的深度实践》
  • 【2025ICCV-目标检测方向】WaveMamba:用于 RGB-红外目标检测的小波驱动曼巴融合
  • 百度招黑产溯源安全工程师
  • SQL注入SQLi-LABS 靶场less31-38详细通关攻略
  • Maxscript在选择的可编辑多边形每个面上绘制一个内部圆形
  • 【高等数学】第七章 微分方程——第十节 常系数线性微分方程组解法举例
  • [硬件电路-140]:模拟电路 - 信号处理电路 - 锁定放大器概述、工作原理、常见芯片、管脚定义
  • 类与对象(中),咕咕咕
  • Zama的使命
  • 零确认双花攻击
  • 8月3日星期日今日早报简报微语报早读
  • 《从原理到实践:MySQL索引优化与SQL性能调优全解析》
  • 【Redis学习路|第一篇】初步认识Redis
  • C的运算符与表达式
  • BP神经网络:当线性模型已到尽头,如何用“人造大脑”挖掘非线性预测规律?
  • 26李林880高数第二章 一元函数微分学及其应用
  • Kafka 是什么?
  • SpringBoot项目数据脱敏(自定义注解)
  • C语言基础03——数组——习题
  • GPIO交换矩阵和IO_MUX
  • 自动驾驶控制算法——LQR控制算法
  • 直流无刷电机(一)