查看文件夹内容


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'