Skip to content

LV230-文件相关命令简介

文件管理

1. 查看文件信息:ls

1.1 使用格式

ls 是英文单词 list 的简写,其功能为列出目录的内容。一般格式如下:

shell
ls [option]

【参数说明】

  • option :选项。
option 说明
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合 -l 以人性化的方式显示文件大小
-t 将文件依建立时间之先后次序列出
-R 同时列出所有子目录层
【**注意**】

(1)-h 参数要与 -l 参数一起使用。

(2)多个参数可以合并到一起书写,没有先后顺序。如 -lh 与 -hl 一样。

(3)ls 命令还可与通配符搭配使用

通配符 说明
* 代表文件名中所有字符
? 代表文件名中任意一个字符
[] “[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。
[abc]:匹配a、b、c中的任意一个
[a-f]:匹配从a到f范围内的的任意一个字符
\ 如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。

1.2 使用实例

shell
hk@vm:~/5linux$ ls -alh
总用量 110M
drwxrwxr-x  6 hk hk 4.0K 9月  28 21:32 .
drwxr-xr-x 29 hk hk 4.0K 10月 17 11:39 ..
drwxr-xr-x 37 hk hk 4.0K 9月  29 07:32 busybox-1.29.0
-rwxrwxr-x  1 hk hk 2.2M 9月  28 21:32 busybox-1.29.0.tar.bz2
drwxrwxr-x 24 hk hk 4.0K 9月  27 16:24 linux-3.14
drwxrwxr-x 24 hk hk 4.0K 10月 17 15:16 linux-imx-rel_imx_4.1.15_2.1.0_ga
-rwxrwxr-x  1 hk hk  97M 9月  25 17:22 linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
drwxrwxr-x 25 hk hk 4.0K 10月 15 17:13 uboot-imx-rel_imx_4.1.15_2.1.0_ga
-rwxrwxr-x  1 hk hk  11M 9月  25 17:23 uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

2. 输出重定向命令:>

2.1 使用格式

Linux 允许将命令执行结果 重定向 到一个文件,本应显示在终端上的内容 保存到指定文件 中, 其实就相当于修改了默认输出的方向。

如: ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )

一般格式如下:

shell
command > file_name

注意】 (1)> 输出重定向会 覆盖 原来的内容。

(2)>> 输出重定向则会追加到文件的 尾部

(3)若是 file_name 文件不存在,则会直接创建。

2.2 使用实例

shell
hk@vm:~/5linux$ ls -alh > test.txt
hk@vm:~/5linux$ cat test.txt 
总用量 110M
drwxrwxr-x  6 hk hk 4.0K 10月 20 10:21 .
drwxr-xr-x 29 hk hk 4.0K 10月 17 11:39 ..
drwxr-xr-x 37 hk hk 4.0K 9月  29 07:32 busybox-1.29.0
-rwxrwxr-x  1 hk hk 2.2M 9月  28 21:32 busybox-1.29.0.tar.bz2
drwxrwxr-x 24 hk hk 4.0K 9月  27 16:24 linux-3.14
drwxrwxr-x 24 hk hk 4.0K 10月 17 15:16 linux-imx-rel_imx_4.1.15_2.1.0_ga
-rwxrwxr-x  1 hk hk  97M 9月  25 17:22 linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
-rw-rw-r--  1 hk hk    0 10月 20 10:21 test.txt
drwxrwxr-x 25 hk hk 4.0K 10月 15 17:13 uboot-imx-rel_imx_4.1.15_2.1.0_ga
-rwxrwxr-x  1 hk hk  11M 9月  25 17:23 uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

3. 分屏显示:more

查看内容时,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容,此时可以使用 more 命令,每次只显示一页,按下空格键可以显示下一页,按下 q 键 退出显示,按下 h 键 可以获取帮助。一般格式如下:

shell
more

4. 管道:|

4.1 使用格式

一个命令的输出可以通过管道作为另一个命令的输入,一般格式如下:

shell
cmd1 | cmd2

4.2 使用实例

shell
#  命令 1 | 命令 2
ls -lh | more

5. 清屏:clear

清除终端上的显示(类似于 DOS 的 cls 清屏功能),也可使用快捷键: Ctrl + l ( “l” 为字母 )。一般格式如下:

shell
clear

6. 切换工作目录:cd

6.1 使用格式

cd 命令用于更换工作目录。一般格式如下:

shell
cd <dir_name>

命令说明

命令 说明
cd 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。
cd ~ 切换到当前用户的主目录(/home/用户目录)
cd . 切换到当前目录
cd .. 切换到当前目录的上一级目录
cd - 切换到上次所在的目录
【**注意**】

(1)Linux 所有的目录和文件名区分大小写。

(2)cd 后面可跟 绝对路径,也可以跟 相对路径。如果省略目录,则默认切换到当前用户的主目录。

(3)如果路径是从根路径开始的,则路径的前面需要加上 “ / ” ,如 “ /mnt ” ,通常进入某个目录里的文件夹,前面不用加 “ / ” 。

6.2 使用实例

shell
cd / # 进入根目录

7. 显示当前路径:pwd

7.1 使用格式

pwd 命令用于显示当前的工作目录。一般格式如下:

shell
pwd

7.2 使用实例

shell
hk@vm:~/5linux$ pwd
/home/hk/5linux

8. 创建目录:mkdir

8.1 使用格式

mkdir 命令用于创建一个新的目录。一般格式如下:

shell
mkdir [option] <dir_name>

【参数说明】

  • option :选项。
option 说明
-p 递归创建目录
- dir_name :要创建的目录名称。

注意】 新建目录的名称 不能 与当前目录中已有的目录或文件 同名,并且目录创建者必须对当前目录 具有写权限。、

8.2 使用实例

shell
hk@vm:~/6temp$ mkdir a
hk@vm:~/6temp$ mkdir -p b/c/d
hk@vm:~/6temp$ tree
.
├── a
└── b
    └── c
        └── d

4 directories, 0 files

9. 删除目录: rmdir

9.1 使用格式

rmdir 命令用于删除一个目录。一般格式如下:

shell
rm <dir_name>

注意】 必须离开目录,并且目录必须为空目录,不然提示删除失败。

9.2 使用实例

shell
hk@vm:~/6temp$ rmdir a/
hk@vm:~/6temp$ ls
b

10.删除文件:rm

rm 命令用于删除文件或目录。一般格式如下:

shell
rm [option] <name>

参数说明

  • option :选项。
option 说明
-i 以进行交互式方式执行(提示是否确认删除)
-f 强制删除,忽略不存在的文件,无需提示
-r 递归地删除目录下的内容,删除文件夹时必须加此参数
-v 显示详细的删除过程
【**注意**】 rm 命令删除的文件 **不能恢复**,严禁 sudo rm -rf /* 。

10.2 使用实例

  • 删除文件
shell
hk@vm:~/6temp$ ls
a.c  b  b.vim

hk@vm:~/6temp$ rm -i a.c 
rm:是否删除普通空文件 'a.c'? y
hk@vm:~/6temp$ ls
b  b.vim
  • 删除目录
shell
hk@vm:~/6temp$ rm -v b
rm: 无法删除'b': 是一个目录
hk@vm:~/6temp$ rm -rv b
removed directory 'b/c/d'
removed directory 'b/c'
removed directory 'b

11. 建立链接文件:ln

11.1 软链接与硬链接

  • 硬链接

(1)硬链接只能链接普通文件,不能链接目录。

(2)一个源文件可以对应多个硬链接,修改任意一个硬链接,源文件及其他与源文件相关联的硬链接的内容也同步更改;修改源文件,与源文件相关联的硬链接内容也随之更改。

(3)删除一个硬链接,源文件及其相关的其他硬链接不受影响,删除源文件,与其相关的硬链接都不受影响。

  • 软链接

(1)软链接既可以链接文件,也可以链接目录。

(2)一个源文件可以对应多个软链接,修改任意一个软链接,源文件及其他与源文件相关联的软链接的内容也同步更改;修改源文件,与源文件相关联的软链接内容也随之更改。

(3)删除软连接就相当于删除了快捷方式,源文件不会受到任何影响,但删除了源文件,与源文件相关联的所有软链接将全部失效。

(4)若软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。

总的来说,硬链接相当于拷贝文件,但所有文件内容保持同步软链接相当于快捷方式,内容保持同步,但都是访问源文件的一个名字而已。

11.2 使用格式

ln 命令用于创建一个链接。一般格式如下:

shell
ln [option] <source_file> <link_file> # ln [选项] 源文件名 链接文件名

【参数说明】

  • option :选项
option 说明
ln 建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在。
ln -s 建立一个软链接,软链接不占用磁盘空间,源文件删除则软链接失效。
- source_file :源文件名。 - link_file :我们要创建的链接的名字。

11.3 使用实例

shell
hk@vm:~/6temp$ touch 1.md 2.md 3.md
hk@vm:~/6temp$ ls
1.md  2.md  3.md

# ln 源文件 链接文件
hk@vm:~/6temp$ ln 1.md hardlinks1    # 创建硬链接 hardlinks1,其与 1.md 文件相关联
# ln -s 源文件 链接文件
hk@vm:~/6temp$ ln -s 2.md softlinks1 # 创建软链接 hardlinks1,其与 2.md 文件相关联

hk@vm:~/6temp$ ls -alh
总用量 8.0K
drwxrwxr-x  2 hk hk 4.0K 10月 20 13:36 .
drwxr-xr-x 29 hk hk 4.0K 10月 17 11:39 ..
-rw-rw-r--  2 hk hk    0 10月 20 13:36 1.md
-rw-rw-r--  1 hk hk    0 10月 20 13:36 2.md
-rw-rw-r--  1 hk hk    0 10月 20 13:36 3.md
-rw-rw-r--  2 hk hk    0 10月 20 13:36 hardlinks1
lrwxrwxrwx  1 hk hk    4 10月 20 13:36 softlinks1 -> 2.md

12. 查看或者合并文件内容:cat、nl、head、tail

12.1 使用格式

这几个命令用于文件的内容显示。一般格式如下:

命令 参数 说明
cat -s 多个空行合并成一个空行显示。
-b 加行号显示。
nl 直接加行号显示文件内容。
head -n(n 为行数) 显示文件前 n 行数据,默认是 10 行。
tail -n(n 为行数) 显示文件倒数 n 行数据,默认是 10 行。

12.2 使用实例

shell
#  1. 查看文件内容:cat 文件名
cat test.md # 直接在终端显示 test.md 文件内容
cat /home/test/test.md #  可以使用绝对路径

#  2. 合并文件内容:cat 文件 1 文件 2 >(或 >>) 文件名
cat test1.md test2.md > test.md  #  清空 test.md 所有内容,再将两个文件内容合并
cat test1.md test2.md >> test.md # 将两个文件内容追加到 test.md,原有内容不会被清除

13. 文本搜索:grep

13.1 使用格式

Linux 系统中 grep 命令是一种强大的文本搜索工具, grep 允许对文本文件进行模式查找。如果找到匹配模式, grep 打印包含模式的所有行。一般格式如下:

shell
grep [option] <name>

参数说明

  • option :选项。
option 说明
-v 显示不包含匹配文本的所有行(相当于求反)
-n 显示匹配行与行号
-i 忽略大小写
-r 以递归的方式查找符合条件的文件。
- name:要查找的内容。

注意

(1)在 grep 命令中输入字符串参数时,最好引号或双引号括起来。例如: grep 'a' 1.txt 。

(2)grep 搜索内容串可以是 正则表达式

表达式 说明
^ 表示行首
如:grep '^a' test.txt 表示搜索该文件中以 a 开头的行
$ 行尾
如:grep 'm$' test.txt 表示搜索该文件中以 m 结尾的行
[] “[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。[abc]:匹配a、b、c中的任意一个[a-f]:匹配从a到f范围内的的任意一个字符
.(点)匹配一个非换行符的字符

13.2 使用实例

shell
hk@vm:~$ grep -r update /etc/acpi
/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys --update

hk@vm:~$ grep -n -r update /etc/acpi
/etc/acpi/events/thinkpad-cmos:7:action=/usr/sbin/thinkpad-keys --update

14. 查找文件:find

14.1 使用格式

find 命令用于通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。一般格式如下:

shell
find <dir> [option] <file_name>

参数说明

  • dir :要查找的目录。
  • option :选项。
option 说明
-name 查找名字
-size 查找大小
-perm 查找权限
- file_name :要查找的文件名。

14.2 使用实例

shell
#  1. find 要查找的文件夹 -name 要查找的文件名
find ./ -name test.sh	查找当前目录下所有名为test.sh的文件
find ./ -name '*.sh'	查找当前目录下所有后缀为.sh的文件
find ./ -name "[A-Z]*"	查找当前目录下所有以大写字母开头的文件

#  2. find 要查找的文件夹 -size 文件大小
find /tmp -size 2M	查找在/tmp 目录下等于2M的文件
find /tmp -size +2M	查找在/tmp 目录下大于2M的文件
find /tmp -size -2M	查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M	查找当前目录下大于4k,小于5M的文件

#  3. find 要查找的文件夹 -perm 文件大小
find ./ -perm 0777	查找当前目录下权限为 777 的文件或目录

15. 拷贝文件: cp

15.1 使用格式

cp 命令用于将给出的文件或目录复制到另一个文件或目录中。需要注意的是 cp 命令在复制的时候,若是不加-p 参数,将会修改新文件的时间等的相关信息。一般格式如下:

shell
cp [option] <source_name> <target_name>

参数说明

  • option :选项。
option 说明
-a 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f 覆盖已经存在的目标文件而不给出提示
-i 交互式复制,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖
-r 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v 显示拷贝进度
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
- source_name :要拷贝的源文件名。 - target_name :拷贝后的名称。

15.2 使用实例

shell
#  1. cp [参数] 要复制的文件或文件夹 目标文件夹 
cp –r test/ newtest # 将当前目录 test/ 下的所有文件复制到新目录 newtest 下

16. 移动文件:mv

16.1 使用格式

mv (英文全拼: move file )命令用来为文件或目录改名、或将文件或目录移入其它位置。一般格式如下:

shell
mv [option] source_file(文件) target_file(文件)

参数说明

  • option :选项。
option 说明
-f 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-i 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-b 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-n 不要覆盖任何已存在的文件或目录。
-u 当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
-v 显示移动进度
- source_file :要移动的源文件,可以是目录。 - target_file :要移动的目标文件,可以是目录。

16.2 使用实例

shell
#  1. 修改文件名:mv source_file(文件) dest_file(文件)
mv a b          # 将文件 a 改名为 b 

#  2. 移动文件:mv source_file(文件) dest_directory(目录)
mv test/ mvtest # 将 test 目录放入 mvtest 目录中。注意,如果 mvtest 目录不存在,则该命令将 test 改名为 mvtest。

17. 归档管理:tar

17.1 使用格式

此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。一般格式如下:

shell
tar [option] <压缩包包名> [-C] <target_dir> # 解压
tar [option] <压缩包包名> <文件名>           # 压缩

参数说明

  • option :选项。
参数 说明
-c 生成档案文件,创建打包文件
-v 列出归档解档的详细过程,显示进度
-f 指定档案文件名称,f 后面一定是.tar 文件,所以必须放选项最后
-t 列出档案中包含的文件
-x 解开档案文件
-r 向压缩归档文件末尾追加文件
-z 调用 gzip 实现一个压缩的功能
指定压缩包的格式为:file.tar.gz
-j 调用 bzip2 实现一个压缩的功能
指定压缩包的格式为:file.tar.bz2
-C 目录(C 为大写) 指定解打包位置
【**注意**】

(1)一般打包或者解包默认都是当前目录,若是想要打包或者解包到其他目录的话,就需要使用 -C 参数。

(2)tar 命令很特殊,其参数前面可以使用 “-” ,也可以不使用。

(3)除了 f 需要放在参数的最后,其它参数的顺序任意。

(4)tar 这个命令并没有压缩的功能,它只是一个打包的命令,但是在 tar 命令中增加一个选项 -z 可以调用 gzip 实现一个压缩的功能,实行一个先打包后压缩的过程。

17.2 使用实例

17.2.1 压缩用法
shell
#  1. 压缩 file.tar:tar –cvf 压缩包包名 文件名
tar –cvf jpg.tar *.jpg  # 将当前目录里所有 jpg 文件打包成 jpg.tar

#  2. 压缩 file.tar.gz 用:tar -zcvf 压缩包包名 文件 1 文件 2 ...
tar -zcvf test.tar.gz *  # 将当前路径下所有文件及文件夹打包并压缩到 test.tar.gz 文件

#  3. 压缩 file.tar.bz2 用法:tar -jcvf 压缩包包名 文件 1 文件 2 ...
tar -jcvf test.tar.bz2 *  # 将当前路径下所有文件及文件夹打包并压缩到 test.tar.bz2 文件
17.2.2 解压用法
shell
#  1. 解压 file.tar:tar –xvf 压缩包包名
tar –xvf jpg.tar  # 解压 jpg.tar 包到当前文件夹
#  2. 解压 file.tar 到指定目录:tar -xvf 压缩包包名 -C 文件夹名称
tar -xvf test.tar -C  /test  # 将 test.tar 文件解压到 /test 文件夹下。

#  3. 解压 file.tar.gz: tar -zxvf 压缩包包名
tar -zxvf test.tar.gz  # 将 test.tar.gz 文件解压到当前文件夹。
#  4. 解压 file.tar.gz 到指定目录:tar -zxvf 压缩包包名 -C 文件夹名称
tar -zxvf test.tar.gz -C  /test  # 将 test.tar.gz 文件解压到 /test 文件夹下。

#  5. 解压 file.tar.bz2: tar -jxvf 压缩包包名
tar -jxvf test.tar.bz2  # 将 test.tar.bz2 文件解压到当前文件夹。
#  6. 解压 file.tar.bz2 到指定目录:tar -jxvf 压缩包包名 -C 文件夹名称
tar -jxvf test.tar.bz2 -C  /test  # 将 test.tar.bz2 文件解压到 /test 文件夹下。

18. 文件压缩解压:gzip

18.1 使用格式

tar 与 gzip 命令结合使用实现文件打包、压缩。 tar 只负责打包文件,但不压缩,用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxxx.tar.gz 。一般格式如下:

shell
gzip [option] <file_name>

参数说明

  • option :选项。
option 说明
-d 解压
-r 压缩所有子目录
- file_name :要压缩或者解压的文件名。

注意

(1)一般来说都是隐藏在 tar 命令参数中(-z 表示),不然需要先打包,再压缩,略显繁琐。

(2)一般打包或者解压默认在当前目录中进行。

18.2 使用实例

一般不直接使用,而是放在 tar 命令中调用。

19. 文件压缩解压: bzip2

19.1 使用格式

tar 与 bzip2 命令结合使用实现文件打包、压缩(用法和 gzip 一样)。 tar 只负责打包文件,但不压缩,用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxxx.tar.bz2 。一般格式如下:

shell
bzip2 <file_name>

注意】 一般来说都是隐藏在 tar 命令参数中(-j 表示),不然需要先打包,再压缩,略显繁琐。

19.2 使用实例

shell
#  1. 压缩用法:tar -jcvf 压缩包包名 文件...
tar jcvf bk.tar.bz2 *.c

#  2. 解压用法:tar -jxvf 压缩包包名 
tar jxvf bk.tar.bz2

20. 文件压缩解压: zip、unzip

20.1 使用格式

通过 zip 压缩文件的目标文件不需要指定扩展名,默认扩展名为 xxx.zip 。一般格式如下:

shell
zip [option] <file_name>
unzip [option] <file_name>

参数说明

  • option :选项。
option 说明
-d 解压
-r 压缩所有子目录
- file_name :要压缩或者解压的文件名。

20.2 使用实例

shell
#  1. 压缩文件:zip -r 目标文件(没有扩展名) 源文件

#  2. 解压文件:unzip -d 解压后目录文件 压缩文件

21. 查看命令位置: which

21.1 使用格式

Linux which 命令用于查找文件。 which 指令会在环境变量 $PATH 设置的目录里查找符合条件的文件,所以多用于查看命令的位置。一般格式如下:

shell
which <command_name>

21.2 使用实例

shell
which bash # 显示 bash 命令的位置

22. 查看目录结构: tree

22.1 使用格式

tree 用于以树状图列出目录的内容。一般格式如下:

shell
tree [option] [num]

参数说明

  • option :选项。
option 说明
-a 显示所有文件和目录
-A 用 ASNI 绘图字符显示树状图而非以 ASCII 字符组合
-C 在文件和目录清单加上色彩,便于区分各种类型
-d 显示目录名称而非内容
-L level 限制目录显示层级
  • num :要显示的目录层数。

22.2 使用实例

shell
tree -L 3 # 列出该目录下3层目录树

23. 查看文件类型: file

23.1 使用格式

file 命令用于辨识文件类型。一般格式如下:

shell
file [option] <file_name>

参数说明

  • option :选项。
option 说明
-b 列出辨识结果时,不显示文件名称。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-l 直接显示符号连接所指向的文件的类别。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。
-f <名称文件> 指定名称文件,其内容有一个或多个文件名称时,让 file 依序辨识这些文件,格式为每列一个文件名称。
-m <魔法数字文件> 指定魔法数字文件。
#### 23.2 使用实例
shell
# 1. 查看文件类型
file test.c