一、文件与目录2命令
1.1.echo命令
用于在终端输出指定的文本内容。
语法:
echo [选项] 文本内容
选项:
| 选项 | 作用 |
|---|---|
| -n | 在输出内容后不换行。 |
| -e | 启用转义字符的解析。“\"转义符号;\n:换行;\r:回车;\t:水平制表符(tab) |
2.1.cp命令用来复制文件和目录的命令
语法:
cp [options] source destination
选项:
| 选项 | 作用 |
|---|---|
| -i(交互式) | 如果在目标位置存在一个文件且该文件会 被覆盖时,cp命令会询问用户是否继续。 |
| -n(不覆盖) | 在目标位置存在文件时,不会覆盖该文件,即不会进行复制操作。 |
| -r或-R(递归) | 用于复制目录以及目录内所有子目录和文件。 |
| -p(保留属性) | 复制文件的同时保留源文件的属性如权限和时间戳。 |
| -v(详细模式) | 显示详细的复制过程信息。 |
3.1.mv命令用来移动文件或目录,或者重命名文件和目录的命令。
语法:
mv [options] source destination
选项:
| 选项 | 作用 |
|---|---|
| -i(交互式) | 如果移动或重命名目标位置已存在且会覆盖时,mv 命令会询问用户是否继续。 |
| -n(不覆盖) | 在目标位置存在文件时,不会覆盖该文件,即不会进行移动或重命名操作。 |
| -v(详细模式) | 显示详细的移动或重命名过程信息。 |
4.1.rm命令用于删除文件的命令。它的全称是 "remove",意思是 "删除"。
语法:
rm [options] file ...
选项:
| 选项 | 作用 |
|---|---|
| -i 或 --interactive | 在删除之前,显示每个文件是否确认删除。 |
| -f 或 --force | 强制删除,即使文件正在被使用,或者存在打开的文件描述符。 |
| -r 或 --recursive | 递归地删除目录及其内容。 |
| -v 或 --verbose | 详细模式,显示删除的每个文件。 |
5.1.nl 命令是 Linux 和类 Unix 系统中的一个用于将文本文件中的行号添加到内容的命令。它主要用于向文本文件中的每一行添加行号,便于阅读和查找
语法:
nl [options] [file]
选项:
| 选项 | 作用 |
|---|---|
| -b | 指定要将行号添加到的行。 |
| -b a | 添加行号到非空行。 |
| -b t | 添加行号到所有行。 |
| -b n | 不添加行号到任何行。 |
| -n | 设置行号的开始值。 |
| -w | 指定行号字段的宽度。 |
| -s | 设置行号与文本之间的分隔符。 |
案例:
将行号添加到文件中的所有行,并将行号输出到标准输出:
nl file.txt
将行号添加到文件中的非空行,并使用制表符作为分隔符:
nl -b a -s $'\t' file.txt
将行号添加到文件中的所有行,从指定的行号开始:
nl -n 100 file.txt
设置行号字段的宽度为 3 个字符,并将行号添加到所有行:
nl -w 3 file.txt
6.1.alias用于创建或显示当前目录下的别名。别名是一种用户定义的命令或函数,可以用来简化复杂的命令序列。使用unalias name可以删除一个别名。
语法:
alias [options] name=command
选项:
| 选项 | 作用 |
|---|---|
| -p | 显示当前目录下的所有已定义的别名列表。 |
7.1.stat 命令是 Unix 和 Linux 系统中的一个实用程序,用于显示关于文件的状态信息。stat 命令提供比 ls -l 更详细的文件信息,包括文件的大小、创建时间、最后访问时间、最后修改时间等。
语法:
stat [options] file
选项:
| 选项 | 作用 |
|---|---|
| -c 或 --format | 指定输出信息的格式。 |
| -f 或 --file-system | 显示文件系统级别的。 |
| -t 或 --terse | 以更紧凑的方式显示输出信息。 |
| --all 或 -a | 显示所有可用的信息。 |
| --dereference | 跟随符号链接。 |
8.1.tree 命令是一个用于以树状结构显示目录及其内容的实用程序,常用于显示文件系统的层次结构。tree 命令会递归地列出指定目录下的所有子目录和文件,并以树的形式展示它们之间的关系。
语法:
tree [options] [directory]
选项:
| 选项 | 作用 |
|---|---|
| -L | 指定要显示的层级深度。 |
| -d | 只显示目录,不显示文件。 |
| -f | 显示完整路径。 |
| -a | 显示所有文件和目录,包括隐藏的。 |
| -I | 排除符合模式的文件或目录。 |
9.1.dd 用于复制文件和转换数据。它用于将源文件复制到目标文件,或者用于在目标文件上进行数据转换。
功能:
-
生成块文件
-
复制文件内容
-
测试I/O性能
语法:
dd [选项] [输出选项] [输入选项]
选项:
| 选项 | 作用 |
|---|---|
| if=filename | 指定输入文件。 |
| of=filename | 指定输出文件。 |
| bs=size | 指定块大小。 |
| count=num | 指定要复制的块数。 |
| conv=参数 | 进行数据转换,例如tec进行techeus格式转换,auto允许尽可能多的转换(这对于大量数据是安全的)。 |
| skip=num | 跳过第一个num块。 |
| status=progress | 显示进度信息。 |
10.1.ln 命令用于在文件系统中创建链接(links)。链接分为两种类型:硬链接(hard link)和符号链接(symbolic link)。
硬链接(hard link):(目录不允许创建硬链接)
-
硬链接是文件系统中的一个目录条目,它指向另一个文件的数据块。
-
硬链接和原始文件共享同一个 inode,因此对文件的修改会影响到所有硬链接。
-
硬链接不能跨越文件系统边界。
符号(软)链接(symbolic link):
-
符号链接是一个特殊的文件,其内容是指向另一个文件的路径。
-
符号链接和原始文件不共享 inode,因此删除原始文件后,符号链接仍然存在,但无法访问。
-
符号链接可以跨越文件系统边界。
语法:
ln [options] source destination
选项:
| 选项 | 作用 |
|---|---|
| -s 或 --symbolic | 创建符号链接而不是硬链接。 |
| -f 或 --force | 如果目标文件已存在,则覆盖它。 |
| -i 或 --interactive | 在覆盖目标文件之前询问用户。 |
| -p 或 --preserve | 保留源文件的属性,如权限和时间戳。 |
11.1.在UNIX和Linux系统中,file命令用于确定文件的类型或属性。它可以提供有关文件的内容、文件系统类型、文件权限等信息。
语法:
file [选项] 文件名
选项:
| 选项 | 作用 |
|---|---|
-b | 以二进制形式输出文件类型信息。 |
-f | 仅显示文件类型,不显示其他信息。 |
-i | 以人类可读的格式显示文件类型。 |
-L | 对符号链接进行特殊处理,查看链接指向的真实文件。 |
思考:
1、dd和cp,以及参数有哪些区别,完成以下实验题。
| 特性 | dd 命令 | cp 命令 |
|---|---|---|
| 主要用途 | 低级别数据复制(如磁盘、分区)、转换数据格式 | 常规文件/目录复制 |
| 操作单位 | 按块(block)操作,可指定块大小(bs) | 按文件操作 |
| 适用场景 | 磁盘克隆、生成空文件、数据转换(如大小写转换) | 日常文件备份、目录复制 |
| 是否保留元数据 | 默认不保留权限、时间戳 | 可保留权限、时间戳(-p参数) |
| 性能 | 适合大文件或精确控制复制过程 | 适合常规文件操作 |
1.1:dd 命令实验
1.1.1用 dd 创建一个 10MB 的空文件
题目:
-
进入
/home/user/dd_experiment目录。 -
使用
dd创建一个名为empty_10mb.img的空文件,大小为 10MB。 -
检查文件大小是否正确。
实验环境准备:
mkdir -p /home/user/dd_experiment
cd /home/user/dd_experiment
# 1. 进入目录
cd /home/user/dd_experiment
# 2. 创建 10MB 空文件(bs=1M 表示块大小为1MB,count=10 表示10块)
dd if=/dev/zero of=empty_10mb.img bs=1M count=10
# 3. 检查文件大小
ls -lh empty_10mb.img

1.1.2:用 dd 复制文件并转换大小写
题目:
-
在
/home/user/dd_experiment下创建一个文件original.txt,内容为"Hello World"。 -
使用
dd复制该文件为uppercase.txt,并将内容转为大写。 -
检查
uppercase.txt的内容。
# 1. 创建原始文件
echo "Hello World" > original.txt
# 2. 复制并转换大写(conv=ucase 表示转大写)
dd if=original.txt of=uppercase.txt conv=ucase
# 3. 检查结果
cat uppercase.txt

1.2:cp 命令实验
1.2.1.复制文件并保留原属性
题目:
-
进入
/home/user/cp_experiment目录。 -
复制
source.txt为backup.txt,保留原文件的权限和时间戳。 -
检查两个文件的属性是否一致。
实验环境准备:
mkdir -p /home/user/cp_experiment
cd /home/user/cp_experiment
touch source.txt
echo "This is a test file." > source.txt
# 1. 进入目录
cd /home/user/cp_experiment
# 2. 复制并保留属性(-p 参数)
cp -p source.txt backup.txt
# 3. 检查属性
ls -l source.txt backup.txt
1.2.2.递归复制目录
题目:
-
在
/home/user/cp_experiment下创建目录data和子文件data/file1.txt。 -
递归复制
data目录到data_backup。 -
检查
data_backup是否包含原目录内容。
# 1. 创建目录和文件
mkdir -p data
echo "File content" > data/file1.txt
# 2. 递归复制目录(-r 参数)
cp -r data data_backup
# 3. 检查备份目录
ls -R data_backup
2、more和less以及参数有哪些区别,完成以下实验题。
| 特性 | more 命令 | less 命令 |
|---|---|---|
| 导航功能 | 仅支持向前翻页(空格键)和逐行查看(Enter键) | 支持向前/向后翻页(Page Up/Down)、搜索、跳转等高级功能 |
| 搜索功能 | 不支持 | 支持(/ 搜索,n/N 跳转匹配项) |
| 文件加载 | 一次性加载整个文件 | 按需加载,适合大文件 |
| 退出方式 | 按 q 退出 | 按 q 退出 |
| 适用场景 | 快速查看小文件 | 查看大文件或需要复杂操作的场景 |
2.1.使用 more 查看文件内容
题目:
-
进入
/home/user/more_experiment目录。 -
使用
more查看sample.txt文件内容,逐页翻动并退出。
实验环境准备:
mkdir -p /home/user/more_experiment
cd /home/user/more_experiment
# 创建一个多行文件
echo -e "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nLine 8\nLine 9\nLine 10" > sample.txt
# 1. 进入目录
cd /home/user/more_experiment
# 2. 使用 more 查看文件
more sample.txt

2.2.使用 less 搜索和导航
题目:
-
进入
/home/user/less_experiment目录。 -
使用
less打开fruits.txt,搜索关键字Grape,并跳转到文件末尾。
实验环境准备:
mkdir -p /home/user/less_experiment
cd /home/user/less_experiment
# 创建一个多行文件
echo -e "Apple\nBanana\nCherry\nDate\nFig\nGrape\nKiwi\nLemon\nMango\nOrange" > fruits.txt
# 1. 进入目录
cd /home/user/less_experiment
# 2. 使用 less 查看文件
less fruits.txt

3、用echo完成以下实验
3.1.使用 echo 创建多行文件
题目:
-
进入
/home/user/echo_experiment目录。 -
使用
echo和转义字符\n创建一个文件multiline.txt,内容为三行:Hello Linux World -
检查文件内容。
实验环境准备:
mkdir -p /home/user/echo_experiment
cd /home/user/echo_experiment
# 1. 进入目录
cd /home/user/echo_experiment
# 2. 使用 echo -e 启用转义字符,创建多行文件
echo -e "Hello\nLinux\nWorld" > multiline.txt
# 3. 检查文件
cat multiline.txt

4、ln和nl和stat以及参数有哪些区别,,完成以下实验
| 命令 | 功能 | 主要用途 | 关键区别 |
|---|---|---|---|
ln | 创建链接 | 创建文件或目录的硬链接或符号链接 | 用于文件系统链接管理 |
nl | 添加行号 | 为文本文件添加行号 | 用于文本处理,显示行号 |
stat | 显示文件状态 | 显示文件或文件系统的详细状态信息 | 用于获取文件元数据 |
4.1.ln命令实验
题目:
-
在用户主目录下创建一个名为
test_ln的目录 -
进入该目录,创建一个名为
original.txt的文件,内容为"Hello World" -
为
original.txt创建一个硬链接hard_link.txt -
为
original.txt创建一个符号链接sym_link.txt -
查看三个文件的inode号和内容
-
删除
original.txt后,检查两个链接文件的状态
# 1. 创建test_ln目录
mkdir ~/test_ln
# 2. 进入目录并创建original.txt文件
cd ~/test_ln
echo "Hello World" > original.txt
# 3. 创建硬链接
ln original.txt hard_link.txt
# 4. 创建符号链接
ln -s original.txt sym_link.txt
# 5. 查看inode和内容
ls -li # 查看inode号,注意hard_link.txt和original.txt的inode相同
cat original.txt
cat hard_link.txt
cat sym_link.txt # 所有文件内容应该相同
# 6. 测试删除原始文件
rm original.txt
cat hard_link.txt # 仍然可以访问,因为是硬链接
cat sym_link.txt # 会报错,因为原始文件已删除


关键点说明:
-
硬链接和原始文件共享相同的inode和数据块
-
符号链接是一个独立的文件,只包含指向原始文件的路径
-
删除原始文件后,硬链接仍然可用,但符号链接会失效
4.2.nl命令实验
题目:
-
在用户主目录下创建一个名为
test_nl的目录 -
进入该目录,创建一个名为
poem.txt的文件,内容如下:Roses are red Violets are blue Sugar is sweet And so are you -
使用nl命令为文件添加行号,只显示非空行
-
使用nl命令为所有行添加行号,包括空行
-
使用nl命令设置行号宽度为3,行号与文本间用冒号分隔
# 1. 创建test_nl目录
mkdir ~/test_nl
# 2. 进入目录并创建poem.txt文件
cd ~/test_nl
cat > poem.txt <<EOF
Roses are red
Violets are blue
Sugar is sweet
And so are you
EOF
# 3. 为文件添加行号(只显示非空行)
nl -b a poem.txt
# 4. 为所有行添加行号(包括空行)
nl -b t poem.txt
# 5. 设置行号宽度为3,用冒号分隔
nl -w 3 -s ": " poem.txt
-
-b a选项只为非空行添加行号 -
-b t选项为所有行添加行号 -
-w设置行号宽度,-s设置分隔符
4.3.stat命令实验
题目:
-
在用户主目录下创建一个名为
test_stat的目录 -
进入该目录,创建一个名为
data.txt的文件,内容为"Linux File System" -
使用stat命令查看文件的完整状态信息
-
使用stat命令只显示文件的大小(字节数)
-
使用stat命令显示文件的访问时间、修改时间和变更时间
-
修改文件内容后,再次查看状态信息的变化
# 1. 创建test_stat目录
mkdir ~/test_stat
# 2. 进入目录并创建data.txt文件
cd ~/test_stat
echo "Linux File System" > data.txt
# 3. 查看完整状态信息
stat data.txt
# 4. 只显示文件大小
stat -c %s data.txt
# 5. 显示时间信息
stat -c "Access: %x\nModify: %y\nChange: %z" data.txt
# 6. 修改文件并查看变化
echo "New content" >> data.txt
stat data.txt # 观察修改时间和变更时间的变化


-
stat默认显示完整文件状态信息
-
-c选项允许自定义输出格式 -
文件有三个主要时间戳:
-
访问时间(Access)
-
修改时间(Modify) - 内容修改
-
变更时间(Change) - 元数据修改
-
二、VIM编辑器
1、VIM操作模式
1.1、命令模式
| 操作 | 作用 |
|---|---|
| G | 跳转到文件末尾 |
| gg | 返回文件首行 |
| home键或者^ | 跳到首字符 |
| end键或者$ | 跳到尾字符 |
| yy | 单行复制 |
| nyy | n行复制 |
| P | 将光标移动到想要粘贴位置的上一行 |
| p | 将光标移动到想要粘贴位置的下一行 |
| u | 撤销操作,注意:进行保存且退出后无效 |
| dd | 单行删除 |
| ndd | n行删除 |
| D或者d$ | 从所在行的光标处删除到末尾 |
| d^ | 从所在行的光标处删除到行首 |
| r | 替换某一个字符 |
| del键 | 光标所在字符的后一个字符 |
| /关键字 | 根据关键字查找,n:上翻;N:下翻 |
| ZZ | 保存且退出 |
1.2、插入模式
作用:进行文件内容编辑
| 操作 | 作用 |
|---|---|
| a | 进入插入模式,在当前光标的后一个字符插入 |
| o | 在当前光标的下一行插入 |
| i | 在当前光标所在字符插入,返回命令模式时会将光标迁移一个字符 |
| A | 在光标所在行的尾字符后插入 |
| I(大写i) | 在光标所在行的首字符插入 |
| O | 在当前光标的上一行插入 |
| ESC(按键) | 返回命令模式 |
1.3、末行模式
作用:保存、退出及字符串替换
| 操作 | 作用 |
|---|---|
| :w | 保存 |
| :q | 不保存退出 |
| :wq或:x | 保存退出 |
| ! | 强制 |
| :X->输入密码->:wq | 设置密码并保存退出 |
| :X->回车两次->:wq<br>或者 :set key=""->:wq | 取消密码 |
| :set nu | 设置行号 |
| :set nonu | 取消行号 |
| :nohl | 取消高亮 |
| :行号 | 跳转到指定行 |
| :%s/keyword/neword/ | 全文替换,首个匹配替换,当包含路径时,#替换/作为匹配符号 |
| :%s/keyword/neword/g | 全文替换,所有匹配替换,当包含路径时,#替换/作为匹配符号 |
| :指定行号s/keyword/neword/ | 指定行替换,首个匹配替换,当包含路径时,#替换/作为匹配符号 |
| :指定行号s/keyword/neword/g | 指定行替换,所有匹配替换,当包含路径时,#替换/作为匹配符号 |
| :起始行号,结束行号s/keyword/neword/ | 范围替换,首个匹配替换,当包含路径时,#替换/作为匹配符号 |
| :起始行号,结束行号s/keyword/neword/g | 范围替换,所有匹配替换,当包含路径时,#替换/作为匹配符号 |
1.4、视图模式
| 操作 | 作用 |
|---|---|
| v | 进行行选中 |
1.5、视图快模式
| 操作 | 作用 |
|---|---|
| ctrl + v | 进行列选中 |
| 选中要删除的“#”,按del | 批量删除注释 |
| 选中要添加的列,输入 大写i ,输入#,按两次ESC | 批量增加注释 |
2、vim高级用法
| 操作 | 作用 |
|---|---|
| :r!command | 将命令结果插入文件,command命令的结果插入光标下一行 |
| :nr! command | 将命令结果插入文件,command命令的结果插入n行后 |
| :m,n! command | 使用页面内容作为输入,command以m,n之间的行作为标准输入,<br>标准输出会代替m,n之间的行. 注意这个操作似乎是不可用ctrl+r撤销的。要谨慎使用。 |
| :! /bin/bash | 暂时离开vim来执行命令,使用完sh后exit又可以返回vim |



1477

被折叠的 条评论
为什么被折叠?



