Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第四天

一、文件与目录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 的空文件

题目

  1. 进入 /home/user/dd_experiment 目录。

  2. 使用 dd 创建一个名为 empty_10mb.img 的空文件,大小为 10MB。

  3. 检查文件大小是否正确。

实验环境准备

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 复制文件并转换大小写

题目

  1. 在 /home/user/dd_experiment 下创建一个文件 original.txt,内容为 "Hello World"

  2. 使用 dd 复制该文件为 uppercase.txt,并将内容转为大写。

  3. 检查 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.复制文件并保留原属性

题目

  1. 进入 /home/user/cp_experiment 目录。

  2. 复制 source.txt 为 backup.txt,保留原文件的权限和时间戳。

  3. 检查两个文件的属性是否一致。

实验环境准备

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.递归复制目录

题目

  1. 在 /home/user/cp_experiment 下创建目录 data 和子文件 data/file1.txt

  2. 递归复制 data 目录到 data_backup

  3. 检查 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 查看文件内容

题目

  1. 进入 /home/user/more_experiment 目录。

  2. 使用 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 搜索和导航

题目

  1. 进入 /home/user/less_experiment 目录。

  2. 使用 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 创建多行文件

题目

  1. 进入 /home/user/echo_experiment 目录。

  2. 使用 echo 和转义字符 \n 创建一个文件 multiline.txt,内容为三行:

    Hello
    Linux
    World
  3. 检查文件内容。

实验环境准备

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命令实验

题目

  1. 在用户主目录下创建一个名为test_ln的目录

  2. 进入该目录,创建一个名为original.txt的文件,内容为"Hello World"

  3. original.txt创建一个硬链接hard_link.txt

  4. original.txt创建一个符号链接sym_link.txt

  5. 查看三个文件的inode号和内容

  6. 删除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命令实验

题目

  1. 在用户主目录下创建一个名为test_nl的目录

  2. 进入该目录,创建一个名为poem.txt的文件,内容如下:

    Roses are red
    Violets are blue
    Sugar is sweet
    And so are you
  3. 使用nl命令为文件添加行号,只显示非空行

  4. 使用nl命令为所有行添加行号,包括空行

  5. 使用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命令实验

题目

  1. 在用户主目录下创建一个名为test_stat的目录

  2. 进入该目录,创建一个名为data.txt的文件,内容为"Linux File System"

  3. 使用stat命令查看文件的完整状态信息

  4. 使用stat命令只显示文件的大小(字节数)

  5. 使用stat命令显示文件的访问时间、修改时间和变更时间

  6. 修改文件内容后,再次查看状态信息的变化

# 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单行复制
nyyn行复制
P将光标移动到想要粘贴位置的上一行
p将光标移动到想要粘贴位置的下一行
u撤销操作,注意:进行保存且退出后无效
dd单行删除
nddn行删除
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值