LV230-文件相关命令简介
文件管理
1. 查看文件信息:ls
1.1 使用格式
ls 是英文单词 list 的简写,其功能为列出目录的内容。一般格式如下:
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 使用实例
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.bz22. 输出重定向命令:>
2.1 使用格式
Linux 允许将命令执行结果 重定向 到一个文件,本应显示在终端上的内容 保存到指定文件 中, 其实就相当于修改了默认输出的方向。
如: ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )
一般格式如下:
command > file_name【注意】 (1)> 输出重定向会 覆盖 原来的内容。
(2)>> 输出重定向则会追加到文件的 尾部。
(3)若是 file_name 文件不存在,则会直接创建。
2.2 使用实例
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.bz23. 分屏显示:more
查看内容时,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容,此时可以使用 more 命令,每次只显示一页,按下空格键可以显示下一页,按下 q 键 退出显示,按下 h 键 可以获取帮助。一般格式如下:
more4. 管道:|
4.1 使用格式
一个命令的输出可以通过管道作为另一个命令的输入,一般格式如下:
cmd1 | cmd24.2 使用实例
# 命令 1 | 命令 2
ls -lh | more5. 清屏:clear
清除终端上的显示(类似于 DOS 的 cls 清屏功能),也可使用快捷键: Ctrl + l ( “l” 为字母 )。一般格式如下:
clear6. 切换工作目录:cd
6.1 使用格式
cd 命令用于更换工作目录。一般格式如下:
cd <dir_name>【命令说明】
| 命令 | 说明 |
| cd | 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。 |
| cd ~ | 切换到当前用户的主目录(/home/用户目录) |
| cd . | 切换到当前目录 |
| cd .. | 切换到当前目录的上一级目录 |
| cd - | 切换到上次所在的目录 |
(1)Linux 所有的目录和文件名区分大小写。
(2)cd 后面可跟 绝对路径,也可以跟 相对路径。如果省略目录,则默认切换到当前用户的主目录。
(3)如果路径是从根路径开始的,则路径的前面需要加上 “ / ” ,如 “ /mnt ” ,通常进入某个目录里的文件夹,前面不用加 “ / ” 。
6.2 使用实例
cd / # 进入根目录7. 显示当前路径:pwd
7.1 使用格式
pwd 命令用于显示当前的工作目录。一般格式如下:
pwd7.2 使用实例
hk@vm:~/5linux$ pwd
/home/hk/5linux8. 创建目录:mkdir
8.1 使用格式
mkdir 命令用于创建一个新的目录。一般格式如下:
mkdir [option] <dir_name>【参数说明】
- option :选项。
| option | 说明 |
| -p | 递归创建目录 |
【注意】 新建目录的名称 不能 与当前目录中已有的目录或文件 同名,并且目录创建者必须对当前目录 具有写权限。、
8.2 使用实例
hk@vm:~/6temp$ mkdir a
hk@vm:~/6temp$ mkdir -p b/c/d
hk@vm:~/6temp$ tree
.
├── a
└── b
└── c
└── d
4 directories, 0 files9. 删除目录: rmdir
9.1 使用格式
rmdir 命令用于删除一个目录。一般格式如下:
rm <dir_name>【注意】 必须离开目录,并且目录必须为空目录,不然提示删除失败。
9.2 使用实例
hk@vm:~/6temp$ rmdir a/
hk@vm:~/6temp$ ls
b10.删除文件:rm
rm 命令用于删除文件或目录。一般格式如下:
rm [option] <name>【参数说明】
- option :选项。
| option | 说明 |
| -i | 以进行交互式方式执行(提示是否确认删除) |
| -f | 强制删除,忽略不存在的文件,无需提示 |
| -r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
| -v | 显示详细的删除过程 |
10.2 使用实例
- 删除文件
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- 删除目录
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 'b11. 建立链接文件:ln
11.1 软链接与硬链接
- 硬链接
(1)硬链接只能链接普通文件,不能链接目录。
(2)一个源文件可以对应多个硬链接,修改任意一个硬链接,源文件及其他与源文件相关联的硬链接的内容也同步更改;修改源文件,与源文件相关联的硬链接内容也随之更改。
(3)删除一个硬链接,源文件及其相关的其他硬链接不受影响,删除源文件,与其相关的硬链接都不受影响。
- 软链接
(1)软链接既可以链接文件,也可以链接目录。
(2)一个源文件可以对应多个软链接,修改任意一个软链接,源文件及其他与源文件相关联的软链接的内容也同步更改;修改源文件,与源文件相关联的软链接内容也随之更改。
(3)删除软连接就相当于删除了快捷方式,源文件不会受到任何影响,但删除了源文件,与源文件相关联的所有软链接将全部失效。
(4)若软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
总的来说,硬链接相当于拷贝文件,但所有文件内容保持同步,软链接相当于快捷方式,内容保持同步,但都是访问源文件的一个名字而已。
11.2 使用格式
ln 命令用于创建一个链接。一般格式如下:
ln [option] <source_file> <link_file> # ln [选项] 源文件名 链接文件名【参数说明】
- option :选项
| option | 说明 |
| ln | 建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在。 |
| ln -s | 建立一个软链接,软链接不占用磁盘空间,源文件删除则软链接失效。 |
11.3 使用实例
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.md12. 查看或者合并文件内容:cat、nl、head、tail
12.1 使用格式
这几个命令用于文件的内容显示。一般格式如下:
| 命令 | 参数 | 说明 |
| cat | -s | 多个空行合并成一个空行显示。 |
| -b | 加行号显示。 | |
| nl | 无 | 直接加行号显示文件内容。 |
| head | -n(n 为行数) | 显示文件前 n 行数据,默认是 10 行。 |
| tail | -n(n 为行数) | 显示文件倒数 n 行数据,默认是 10 行。 |
12.2 使用实例
# 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 打印包含模式的所有行。一般格式如下:
grep [option] <name>【参数说明】
- option :选项。
| option | 说明 |
| -v | 显示不包含匹配文本的所有行(相当于求反) |
| -n | 显示匹配行与行号 |
| -i | 忽略大小写 |
| -r | 以递归的方式查找符合条件的文件。 |
【注意】
(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 使用实例
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 --update14. 查找文件:find
14.1 使用格式
find 命令用于通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。一般格式如下:
find <dir> [option] <file_name>【参数说明】
- dir :要查找的目录。
- option :选项。
| option | 说明 |
| -name | 查找名字 |
| -size | 查找大小 |
| -perm | 查找权限 |
14.2 使用实例
# 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 参数,将会修改新文件的时间等的相关信息。一般格式如下:
cp [option] <source_name> <target_name>【参数说明】
- option :选项。
| option | 说明 |
| -a | 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。 |
| -f | 覆盖已经存在的目标文件而不给出提示 |
| -i | 交互式复制,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖 |
| -r | 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。 |
| -v | 显示拷贝进度 |
| -p | 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 |
15.2 使用实例
# 1. cp [参数] 要复制的文件或文件夹 目标文件夹
cp –r test/ newtest # 将当前目录 test/ 下的所有文件复制到新目录 newtest 下16. 移动文件:mv
16.1 使用格式
mv (英文全拼: move file )命令用来为文件或目录改名、或将文件或目录移入其它位置。一般格式如下:
mv [option] source_file(文件) target_file(文件)【参数说明】
- option :选项。
| option | 说明 |
| -f | 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。 |
| -i | 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。 |
| -b | 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。 |
| -n | 不要覆盖任何已存在的文件或目录。 |
| -u | 当源文件比目标文件新或者目标文件不存在时,才执行移动操作。 |
| -v | 显示移动进度 |
16.2 使用实例
# 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 使用格式
此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。一般格式如下:
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 压缩用法
# 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 解压用法
# 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 。一般格式如下:
gzip [option] <file_name>【参数说明】
- option :选项。
| option | 说明 |
| -d | 解压 |
| -r | 压缩所有子目录 |
【注意】
(1)一般来说都是隐藏在 tar 命令参数中(-z 表示),不然需要先打包,再压缩,略显繁琐。
(2)一般打包或者解压默认在当前目录中进行。
18.2 使用实例
一般不直接使用,而是放在 tar 命令中调用。
19. 文件压缩解压: bzip2
19.1 使用格式
tar 与 bzip2 命令结合使用实现文件打包、压缩(用法和 gzip 一样)。 tar 只负责打包文件,但不压缩,用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxxx.tar.bz2 。一般格式如下:
bzip2 <file_name>【注意】 一般来说都是隐藏在 tar 命令参数中(-j 表示),不然需要先打包,再压缩,略显繁琐。
19.2 使用实例
# 1. 压缩用法:tar -jcvf 压缩包包名 文件...
tar jcvf bk.tar.bz2 *.c
# 2. 解压用法:tar -jxvf 压缩包包名
tar jxvf bk.tar.bz220. 文件压缩解压: zip、unzip
20.1 使用格式
通过 zip 压缩文件的目标文件不需要指定扩展名,默认扩展名为 xxx.zip 。一般格式如下:
zip [option] <file_name>
unzip [option] <file_name>【参数说明】
- option :选项。
| option | 说明 |
| -d | 解压 |
| -r | 压缩所有子目录 |
20.2 使用实例
# 1. 压缩文件:zip -r 目标文件(没有扩展名) 源文件
# 2. 解压文件:unzip -d 解压后目录文件 压缩文件21. 查看命令位置: which
21.1 使用格式
Linux which 命令用于查找文件。 which 指令会在环境变量 $PATH 设置的目录里查找符合条件的文件,所以多用于查看命令的位置。一般格式如下:
which <command_name>21.2 使用实例
which bash # 显示 bash 命令的位置22. 查看目录结构: tree
22.1 使用格式
tree 用于以树状图列出目录的内容。一般格式如下:
tree [option] [num]【参数说明】
- option :选项。
| option | 说明 |
| -a | 显示所有文件和目录 |
| -A | 用 ASNI 绘图字符显示树状图而非以 ASCII 字符组合 |
| -C | 在文件和目录清单加上色彩,便于区分各种类型 |
| -d | 显示目录名称而非内容 |
| -L | level 限制目录显示层级 |
- num :要显示的目录层数。
22.2 使用实例
tree -L 3 # 列出该目录下3层目录树23. 查看文件类型: file
23.1 使用格式
file 命令用于辨识文件类型。一般格式如下:
file [option] <file_name>【参数说明】
- option :选项。
| option | 说明 |
| -b | 列出辨识结果时,不显示文件名称。 |
| -c | 详细显示指令执行过程,便于排错或分析程序执行的情形。 |
| -l | 直接显示符号连接所指向的文件的类别。 |
| -v | 显示版本信息。 |
| -z | 尝试去解读压缩文件的内容。 |
| -f <名称文件> | 指定名称文件,其内容有一个或多个文件名称时,让 file 依序辨识这些文件,格式为每列一个文件名称。 |
| -m <魔法数字文件> | 指定魔法数字文件。 |
# 1. 查看文件类型
file test.c