查看文件夹内容
ls 命令的介绍
- 查看指定或当前目录下的内容
- 在 XShell 中执行 ls 命令,蓝色代表文件夹,白色代表文件
- ls 命令不能查看文件内容(如果使用 ls 命令查看文件内容,那么只会打印出当前文件的文件名),只能查看文件夹下的内容
1.查看所有文件和文件夹(只显示名字)

- 命令: ls -> 查看当前路径下的所有文件和文件夹(只显示名字)
ls
- 命令: ls 路径 -> 查看指定路径下的所有文件和文件夹(只显示名字)
ls /root/xxx/xxx
ls xxx/xxx
2.查看所有文件和文件夹并且包括隐藏文件(只显示名字)

- 命令: ls -a -> 查看当前路径下的所有文件和文件夹并且包括隐藏文件(所有以“.”为开始的文件和目录为隐藏文件)
ls -a
- 命令: ls -a 路径 -> 查看指定路径下的所有文件和文件夹并且包括隐藏文件(所有以“.”为开始的文件和目录为隐藏文件)
ls -a /root/xxx/xxx
ls -a xxx/xxx
3.查看所有文件和文件夹的详细信息

- 命令: ls -l -> 查看当前路径下的所有文件和文件夹的详细信息
ls -l
- 命令: ls -l 路径 -> 查看指定路径下的所有文件和文件夹的详细信息
ls -l /root/xxx/xxx
ls -l xxx/xxx
- 命令: ll -> ls -l 的简写
ll
ll xxx/xxx
4.查看所有文件和文件夹并且包括隐藏文件的详细信息

- 命令: ls -la -> 查看当前路径下的所有文件和文件夹并且包括隐藏文件的详细信息
ls -la
- 命令: ls -la 路径 -> 查看指定路径下的所有文件和文件夹并且包括隐藏文件的详细信息
ls -la /root/xxx/xxx
ls -la xxx/xxx
- 命令: ll -a -> ls -la 的简写
ll -a
ll -a xxx/xxx
5.查看上n级目录的文件夹内容
- 命令: ls . -> 查看当前路径下的所有文件和文件夹
ls .
# 等同于
ls
- 命令: ls .. -> 查看上一级路径下的所有文件和文件夹
ls ..
- 命令: ls ../../ -> 查看上上一级路径下的所有文件和文件夹
ls ../../
添加文件夹
- 命令: mkdir 文件夹名 -> 在当前路径下创建文件夹
mkdir hello
- 命令: mkdir 文件夹名 文件夹名 -> 在当前路径下创建多个文件夹
mkdir hello hello_world movie
- 命令: mkdir 路径/文件夹名 -> 在指定目录下创建文件夹
- 注意: 在指定目录下添加文件夹,前提是该路径下的目录要已存在的,否则就会报错
mkdir xxx/xxx/hello
- 命令: mkdir 路径/文件夹名 路径/文件夹名 -> 分别在不同的指定目录下创建文件夹
- 注意: 在指定目录下添加文件夹,前提是该路径下的目录要已存在的,否则就会报错
mkdir movie/DC/a movie/漫威/b
- 命令: mkdir 路径/{文件夹名,文件夹名,……} -> 在指定目录下创建多个文件夹
- 注意: 在指定目录下添加文件夹,前提是该路径下的目录要已存在的,否则就会报错
mkdir movie/{m1,k1,o1}
- 命令: mkdir -p 路径/文件夹 -> 递归创建文件夹(即: 在指定的路径下创建文件夹,如果该路径下有未存在的文件夹,-p 参数会直接帮你进行创建)
mkdir -p movie/DC/a/b/c # 如果 a、b、c 文件夹都不存在,那么 mkdir -p 就会自动帮你创建
- 命令: mkdir -p 路径/文件夹 路径/文件夹 -> 递归分别在不同的指定目录下创建文件夹(即: 在指定的路径下创建文件夹,如果该路径下有未存在的文件夹,-p 参数会直接帮你进行创建)
mkdir -p a/b c/d # 如果 a、c 文件夹都不存在,那么 mkdir -p 就会自动帮你创建,然后分别在对应的文件夹中创建 b 和 d 文件夹
- 命令: mkdir -p 路径/{文件夹名,文件夹名,……} -> 递归在指定目录下创建多个文件夹(即: 在指定的路径下创建文件夹,如果该路径下有未存在的文件夹,-p 参数会直接帮你进行创建)
mkdir -p test/{a,b,c,d} # 如果 test 文件夹不存在,那么 mkdir -p 就会自动帮你创建,然后就会在test文件夹下分别创建 a、b、c、d 文件夹
删除文件夹
1.删除空文件夹
- 命令: rmdir 文件夹名 -> 删除当前路径下的指定空文件夹
- 注意: 该命令只能删除空文件夹
rmdir hello
- 命令: rmdir 路径/文件夹名 -> 删除指定路径下的指定空文件夹
- 注意: 该命令只能删除空文件夹
rmdir xxx/xxx/hello
2.递归删除文件夹中的内容(即: 删除有内容的文件夹)
- 命令: rm -r 文件夹名 -> 删除当前路径下的指定文件夹
- 注意: 在删除文件的时候会有一个确认是否删除该文件的提醒,此时输入“y” 或 “n” 即可
rm -r hello
- 命令: rm -r 路径/文件夹名 -> 删除指定路径下的指定文件夹
- 注意: 在删除文件的时候会有一个确认是否删除该文件的提醒,此时输入“y” 或 “n” 即可
rm -r xxx/xxx/hello
3.递归强制删除文件夹中的内容(即: 删除有内容的文件夹且没有任何的提示),慎用
- 命令: rm -rf 文件夹名 -> 递归强制删除当前路径下的指定文件夹
rm -rf hello
- 命令: rm -rf 路径/文件夹名 -> 递归强制删除指定路径下的指定文件夹
rm -rf xxx/xxx/hello
4.删除 Linux 系统下的所有文件(传说中的删库跑路代码),慎用
rm -rf /*
添加文件
- 命令: touch 文件名.后缀名 -> 在当前路径下添加文件
touch test.py
- 命令: touch 文件名.后缀名 文件名.后缀名 ->在当前路径下添加多个文件
touch test.py test2.py
- 命令: touch 路径/文件名.后缀名 -> 在指定路径下添加文件
touch xxx/xxx/test.py
- 命令: touch 路径/文件名.后缀名 路径/文件名.后缀名 -> 分别在不同的指定目录下创建文件
touch xxx1/test.py xxx2/test2.py
- 注意: 当我们创建一个已存在的文件的时候,只会修改该文件的更改时间,不会修改已存在文件的内容

- 命令: touch -t '月份日期时分' 路径/文件名.后缀名 -> 修改文件的更改时间
touch -t '12121033' a.py

查看文件内容
1.cat 命令
- 使用场景: cat 命令一般用于查看内容较小的文件 -> 如果内容过大就会出现卡顿的现象,因为一下子将所有内容都放到内存中,从而导致内存不足
- 命令: cat 文件名.后缀名 -> 查看当前目录下的指定文件内容
cat test.py
- 命令: cat 路径/文件名.后缀名 -> 查看指定路径下的指定文件内容
cat xxx/xxx/test.py
- 命令: cat -n 路径/文件名.后缀名 -> 查看文件内容并且显示行号
cat -n test.py
- 命令: cat -n 路径/文件名.后缀名 -> 查看文件内容并且在结尾处加上一个“$” -> 一般用于查看空行
cat -E test.py
- 命令: cat -En 路径/文件名.后缀名 -> 查看文件内容并且显示行号和在每一行后面加上一个“$”
cat -En test.py
2.more 命令
- 使用场景: more 命令一般用于查看内容较大的文件
- more 命令具有分页的效果(注: 如果没有分页效果可以把XShell的高度拉小一点就可以看到分页效果)
- 命令: more 路径/文件名.后缀名
- 相关的按键操作:
- 空格 -> 翻页
- B 键 -> 上一页
- 回车键 -> 向下读取内容
more /etc/passwd
3.less 命令 -> 推荐使用
- 使用场景: less 命令一般用于查看内容较大的文件
- 命令: less 路径/文件名.后缀名
- 相关的按键操作:
- q : 退出分页
- ↑ ↓ ← →: 查看文件内容
less /etc/passwd
4.head 命令
- 命令: head 路径/文件名.后缀名 -> 默认查看文件内容的前10行
head /etc/passwd
- 命令: head -n num 路径/文件名.后缀名 -> 查看文件内容的前num行
head -n 5 /etc/passwd # 查看文件内容的前5行
- 显示文件10-30行
head -30 /tmp/oldboy.txt | tail -21
5.tail 命令
- 命令: tail 路径/文件名.后缀名 -> 默认查看文件内容的后10行
tail /etc/passwd
- 命令: tail -n num 路径/文件名.后缀名 -> 查看文件内容的后num行
tail -n 5 /etc/passwd # 查看文件内容的后5行
- 命令: tail -p -f 路径/文件名.后缀名 -> 持续刷新文件内容(即: 实时监控文件内容)
tail -f /var/xx.log
- 显示文件10-30行
head -30 /tmp/oldboy.txt | tail -21
6. grep命令 -> 筛选文本内容
- 命令: grep [参数] [--color=auto] [字符串(即: 需要筛选的内容)] 文件
- 参数:
- -i : 忽略大小写
- -n : 输出行号
- -v : 反向选择(即: 筛选出不包含【筛选内容】的内容)
- --color = auto : 给关键词部分添加颜色
grep -i -n 'kswapd0' psinfo.txt
- 例题
- 找出/etc/passwd下root用户所在行,以及行号,显示颜色
cat /etc/passwd | grep '^root' --color=auto -n
- 找出/etc/passwd所有不允许登录的用户
grep /sbin/nologin /etc/passwd
- 找到/etc/passwd的所有与mysql有关行,行号
cat /etc/passwd | grep 'mysql' -n
替换文件内容
- 命令: sed 's/想要替换的内容/替换后的内容/g'
- s : 替换指令
- g : 全局替换
- 替换前的内容

- 查看替换后的结果 -> 注意: 此时还没有进行替换
sed 's/127.0.0.1/10.0.0.3/g' /root/ip.txt

- 替换文件内容
sed -i 's/127.0.0.1/10.0.0.3/g' /root/ip.txt

删除文件
1.rm 命令的参数
- -i: 删除前逐一询问确认是否删除
- -f: 直接删除,无需询问
- -r: 递归删除文件夹中的所有内容(需要询问确认是否删除)
2.带提示的删除文件命令
- 命令: rm 文件名.后缀名 -> 删除当前目录下的指定文件
- 注意: 在删除文件的时候会有一个确认是否删除该文件的提醒,此时输入“y” 或 “n” 即可
rm test.py
- 命令: rm 路径/文件名.后缀名 -> 删除指定路径下的指定文件
- 注意: 在删除文件的时候会有一个确认是否删除该文件的提醒,此时输入“y” 或 “n” 即可
rm xxx/xxx/test.py
3.带提示的删除文件命令的原型
- rm -i 命令其实和 rm 命令是一样的,且 -i 参数的作用就是 rm 命令中的提醒功能,只不过在编写 rm 命令时可以省略 -i 参数
- 命令: rm -i 文件名.后缀名
rm -i test.py
- 命令: rm -i 路径/文件名.后缀名
rm -i xxx/xxx/test.py
4.强制删除文件
- 命令: rm -f 文件名.后缀名 -> 强制删除当前目录下的指定文件(即: 没有提示信息直接删除文件),慎用
rm -f test.py
- 命令: rm -f 路径/文件名.后缀名 -> 强制删除指定路径下的指定文件(即: 没有提示信息直接删除文件),慎用
rm -f xxx/xxx/test.py
5.通配符 *
- 删除所有以 test 开头的文件
rm -i test*
文件和文件夹的相关命令
1. mv 命令 -> 修改/移动(即:剪切)文件或文件夹
- 修改文件或文件夹
- 命令: mv 文件夹名 新的文件夹名 -> 修改文件夹名称
mv test test_new
- 命令: mv 文件名.后缀名 新的文件名.后缀名 -> 修改文件名称
mv test.txt test_new.txt
- 移动文件夹
- 注意: 路径最好要以 "/" 结束
- 命令: mv 文件夹名 路径 -> 移动(即: 剪切)当前目录下的文件夹到指定路径下
mv test2 hello/
- 命令: mv 路径/文件夹名 路径 -> 移动(即: 剪切)指定路径下的文件夹到指定路径下
mv xxx/xxx/test2 hello/
- 移动文件
- 注意: 路径最好要以 "/" 结束
- 命令: mv 文件名.后缀名 路径 -> 移动(即: 剪切)当前目录下的文件到指定路径下
mv test2.txt hello/
- 命令: mv 路径/文件名.后缀名 路径 -> 移动(即: 剪切)指定路径下的文件到指定路径下
mv xxx/xxx/test2.txt hello/
2. cp 命令 -> 复制文件或文件夹
- 参数:
- -a: 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
- -d: 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
- -f: 覆盖已经存在的目标文件而不给出提示。
- -i: 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
- -p: 除复制文件并且保持文件属性不便,即: 把修改时间和访问权限也复制到新文件中。
- -r: 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
- -l: 不复制文件,只是生成链接文件。
- 复制文件夹
- 命令: cp -r 文件夹名 新的文件夹名 -> 递归拷贝当前目录下的文件夹到当前目录下(即: 拷贝文件夹中的所有内容)
cp -r test test2
- 命令: cp -r 文件夹名 路径 -> 递归拷贝当前目录下的指定文件夹到指定路径下
- 注意: 路径最好要以 "/" 结束
cp -r test xxx/
- 复制文件
- 命令: cp 文件名 新的文件名 -> 拷贝当前目录下的文件到当前目录下
cp django.py django.py.back
- 命令:cp 文件名 路径 -> 拷贝当前目录下的指定文件到指定路径下
- 注意: 路径最好要以 "/" 结束
cp t.py xxx/
3. stat 命令 -> 查看文件或文件夹的状态
- 命令: stat 文件夹/文件
stat a.py
- 结果说明

4.find 命令 -> 查找文件或文件夹的位置
- 参数:
- 路径: 在什么路径在查找文件
- / -> 在根目录下查找指定的文件或文件夹(即: 全局搜索)
- xxx/xxx/-> 在指定路径下查找指定的文件或文件夹(即: 局部搜索)
- -name 按照指定的名字查找文件或文件夹
- -type 查找某一类型的文件,值如下:
- b -> 查找块设备文件
- d -> 查找文件夹
- c -> 查找字符设备文件
- p -> 查找管道文件
- l -> 查找符号链接文件
- f -> 查找普通文件
- s -> 查找socket文件
- 返回值: 路径
- 命令: find 路径 -name 需要查找的文件名或文件夹名 -> 按照指定的名字查找文件或文件夹
find / -name a.py # 在根目录下查找 a.py(即: 全局搜索 a.py)
find -name a.py # 在当前目录下查找 a.py(即: 局部搜索 a.py)
# 等同于
find . -name a.py # 在当前目录下查找 a.py(即: 局部搜索 a.py)
find movie/ -name a.py # 在 movie 目录下查找 a.py(即: 局部搜索 a.py)
- 命令: find 路径 -type 文件类型 -name 需要查找的文件名或文件夹名 -> 按照指定的 名字 和 文件类型 查找文件或文件夹
find / -type f -name a.py # 在根目录下按照指定文件类型查找 a.py(即: 全局搜索 a.py)
find -type f -name a.py # 在当前目录下按照指定文件类型查找 a.py(即: 局部搜索 a.py)
# 等同于
find . -type f -name a.py # 在当前目录下按照指定文件类型查找 a.py(即: 局部搜索 a.py)
find movie/ -type f -name a.py # 在 movie 目录下按照指定文件类型查找 a.py(即: 局部搜索 a.py)
- 模糊查找
find / -name *.py # 在根目录下查找以所有 py 文件
find -name *.py # 在当前目录下查找以所有 py 文件
# 等同于
find . -name *.py # 在当前目录下查找以所有 py 文件
find movie/ -name *.py # 在 movie 目录下查找以所有 py 文件
find / -type f -name *.py # 在根目录下查找以所有 py 文件
find -type f -name *.py # 在当前目录下查找以所有 py 文件
# 等同于
find . -type f -name *.py # 在当前目录下查找以所有 py 文件
find movie/ -type f -name *.py # 在 movie 目录下查找以所有 py 文件
- 例题
- 找出 /tmp 所有以 .txt 结尾的文件
find /tmp -type f -name "*.txt"
- 找到 /etc 下所有名字以 host 开头的文件
find /etc -name 'host*'
- 找到 /opt 上一个名为 settings.py
find /opt -name 'settings.py'