Linux 操作系统 02 - 文件篇

Hello~大家好!我是今越,本文内容来源于平时的学习笔记,希望对大家有所帮助。鉴于个人水平有限,文中难免会有不足之处,欢迎留言评论。需要转载的朋友,请注明出处。感谢点赞和收藏。一起加油!:)

往期文章回顾
Linux 操作系统 01 - 目录篇

一、基本命令

1.1 cp

功能描述:拷贝文件到指定目录

cp [选项] source dest

选项

-a 等价于 -pdr,通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-d 复制时保留链接,这里所说的链接相当于 Windows 系统中的快捷方式
-r 递归复制,如果给出的源文件是一个目录文件,将复制该目录下所有的子目录和文件
-f 覆盖已经存在的目标文件而不给出提示
-i-f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖
-l 不复制文件,只是生成链接文件
-u 当源文件比目标文件新或者目标文件不存在时,才执行复制操作

1.2 rm

功能描述:删除文件或目录

rm [选项] 文件或目录

选项

-r 递归删除
-f 强制删除不提示
-i 删除前逐一询问确认

注意

1)文件一旦通过 rm 命令删除,则无法恢复,所以必须格外小心地使用该命令;

案例

1)删除当前目录下的所有文件及目录: rm -r *

1.3 mv

功能描述:重命名文件或移动文件

mv [选项] source dest
mv [选项] source directory

选项

-f 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件
-i 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件
-u 当源文件比目标文件新或者目标文件不存在时,才执行移动操作

1.4 touch

功能描述:创建文件

touch 文件名

1.5 ln

功能描述:生成链接文件

ln [选项] 源文件 链接文件

选项

-s 创建软链接

说明

1)使用 pwd 命令查看当前目录,显示的是软链接所在的目录;
2)使用 ls 命令查看目录,显示的是软链接所指向目录的内容;

硬链接特征

1)拥有相同的 i 节点和存储 block 块,可以看做是同一个文件;
2)可通过 i 节点识别;
3)不能跨分区;
4)不能针对目录使用;

软链接特征

1)软链接也称为符号链接,类似于 Windows 里的快捷方式,主要存放了链接其他文件的路径;
2)软链接拥有自己的 i 节点和 block 块,但数据块中只保存源文件的文件名和节点号,并没有实际的文件数据;
3)lrwxrwxrwx l 软链接,软链接的文件权限都为 rwxrwxrwx;
4)修改任意文件,另一个都改变;
5)删除源文件,软链接不能使用;
6)不同于硬链接的创建,软链接创建时源文件要使用绝对路径;

案例
硬链接&软链接1
从结果可以发现,原文件 file1 与硬链接文件 file2 的 inode 节点相同,与软链接文件 file3 的 inode 节点不同。
硬链接&软链接2
从结果可以发现,当删除原文件 file1 后,硬链接文件 file2 不受影响,软链接文件失效!

1.6 echo

功能描述:输出内容到控制台

echo [选项] [输出内容]

选项

-e 支持反斜线控制的字符转换,如下表

控制字符作用
\a输出警告音
\b退格键,即向左删除键
\n换行符
\r回车键
\t制表符,即 TAB 键
\v垂直制表符
\0nnn按照八进制 ASCII 码表输出字符,其中 0 为数字零,nnn 是三位八进制数
\xhh按照十六进制 ASCII 码表输出字符,其中 hh 是两位十六进制数

说明

1)echo 支持颜色显示

文字颜色码

重置=0
黑色=30,红色=31,绿色=32,黄色=33
蓝色=34,洋红=35,青色=36,白色=37

背景颜色码

重置=0
黑色=40,红色=41,绿色=42,黄色=43
蓝色=44,洋红=45,青色=46,白色=47

文字闪烁

0 关闭所有属性
1 设置高亮度(加粗),4 下划线,5 闪烁,7 反显,8 消隐

案例

1)echo $PATH 输出环境变量
2)echo -e "hell\bo" 输出 helo
3)颜色显示,如图
echo颜色显示

1.7 > & >>

功能描述:输出重定向

>

功能描述:追加

>>

说明

1)标准输出的文件描述符是 1,标准错误输出的文件描述符是 2;
标准输出1
标准输出2
2)将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等);

案例

1)ls -l > 文件 列表的内容写入文件中,覆盖写
2)ls -al >> 文件 列表的内容追加到文件的末尾
3)cat 文件1 > 文件2 将文件1的内容覆盖到文件2
4)echo "内容" >> 文件 追加内容

1.8 <

功能描述:输入重定向

<

说明

1)标准输入的文件描述符是 0;
2)命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入;

案例

1)命令 < 文件 把文件作为命令的输入
2)把标识符之间的内容作为命令的输入

命令 << 标识符
...
标识符

3)mysql -u root -p -h test < test.sql 导入数据

1.9 history

功能描述:查看已经执行过的历史命令,也可以执行历史命令

history [选项] [历史命令保存文件]

选项

-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

说明

1)历史命令默认会保存 1000 条,可以在环境变量配置文件 /etc/profile 中进行修改;
2)使用上下箭头调用以前的历史命令;
3)使用 !n 重复执行第 n 条历史命令;
4)使用 !! 重复执行上一条命令;
5)使用 !字串 重复执行最后一条以该字串开头的命令;
6)在输入命令或文件时,按 TAB 键就会自动进行补全;

案例

1)history 显示所有历史命令
2)history 10 显示最近使用的10个命令
3)!5 执行历史编号为5的命令

1.10 date

功能描述:显示当前日期时间

date [选项] [参数]

选项 & 参数

-s 根据字符串设置日期时间
+%Y 显示当前年份
+%m 显示当前月份
+%d 显示当前是哪一天
"+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
+%T 显示当前时间

说明

1)具体使用规则可以通过 man date 命令来查看;

案例

1)date -s "2021-05-25 12:01:01" 设置系统当前时间为 2021-05-25 12:01:01

1.11 cal

功能描述:显示本月日历

cal [选项] [月份] [年份]

选项

-m 显示星期一作为一周的第一天
-j 显示今天是一年的第几天
-y 显示当前年份的日历

说明

1)具体使用规则可以通过 man cal 命令来查看;

1.12 bc

功能描述:一个简单好用的计算器

bc

说明

1)运算符号:+-*/% 取余 ^ 指数;
2)默认仅输出整数,如果要输出全部小数,必须执行 scale=number,number 指的是小数点后的位数;
2)输入 quit 退出 bc 计算器;

案例
bc计算器

1.13 man

功能描述:获得命令的帮助信息

man [选项] 命令名

选项

-f 查看命令拥有运行级别的帮助信息,等同于使用 whatis 命令名
-k 查看所有相关的命令,等同与使用 apropos 命令名

案例
man

1.14 help

功能描述:获得 Shell 内置命令的帮助信息

help Shell内部命令名

说明

1)确定是否是 Shell 内部命令,例如 whereis cd
2)内部命令是 Shell 自带的命令,外部命令是后来装入 Linux 系统的;

功能描述:获取命令选项的帮助信息

命令名 --help

案例
help

1.15 info

功能描述:获取命令的详细帮助信息

info 命令名

说明

1)Enter 进入子帮助页面(带有*号标记);
2)u 进入上层页面;
3)n 进入下一个帮助小节;
4)p 进入上一个帮助小节;
5)q 退出;

1.16 alias

功能描述:命令别名

# 查看命令别名
alias [别名]

# 设置命令别名,但只是暂时生效
alias 别名 = ‘原命令’

# 设置命令别名,永久生效,写入环境变量配置文件
vi ~/.bashrc

# 删除命令别名
unalias 别名

说明

1)使用 source .bashrc 可以让配置文件立即生效,不需要重启系统;

1.17 wc

功能描述:输入重定向

wc [选项] [文件名]

选项

-c 统计字节数
-w 统计单词数
-l 统计行数

二、查看文件

Linux系统中使用以下命令来查看文件的内容:
1)cat : 从第一行开始显示文件内容,用来读文章、配置文件都使用该命令
2)tac : 从最后一行开始显示文件内容,可以看出 tac 是 cat 的倒着写;
3)nl : 显示的时候,顺道输出行号!看代码时,希望显示行号
4)more : 一页一页的显示文件内容;
5)less : 与 more 类似,但是比 more 更好的是,它可以往前翻页
6)head : 只看文件头几行,通过 -n 参数来控制显示几行;
7)tail : 只看文件尾几行,通过 -n 参数来控制显示几行;

2.1 cat

功能描述:从第一行开始显示文件内容

cat [选项] 文件名

选项

-A 等价于 -vET,可列出一些特殊字符而不是空白而已
-b 列出行号,仅针对非空白行做行号显示,空白行不标行号
-E 将结尾的断行字节 $ 显示出来
-n 列出行号,连同空白行也会有行号,与 -b 的选项不同
-TTAB 按键以 ^I 显示出来
-v 列出一些看不出来的特殊字符

说明

1)cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道符命令 | more

案例

1)查看网络配置目录下的文件
切换到指定目录 cd /etc/sysconfig/network-scripts
cat

2.2 tac

功能描述:从最后一行开始显示文件内容

tac 文件名

案例
tac

2.3 nl

功能描述:显示文件内容,并输出行号

nl [选项] [参数] 文件名

选项 & 参数

-b 指定行号指定的方式,主要有两种:
-b a 表示不论是否为空行,也同样列出行号(类似 cat -n)
-b t 如果有空行,空的那一行不要列出行号(默认值)
-n 列出行号表示的方法,主要有三种:
-n ln 行号在荧幕的最左方显示,且不加 0
-n rn 行号在自己栏位的最右方显示,且不加 0
-n rz 行号在自己栏位的最右方显示,且加 0

案例
nl

2.4 more

功能描述:一页一页的显示文件内容

more 文件名

说明

操作功能说明
空格键 (space)向下翻一页
回车 (Enter)向下翻一行
q退出 more,不再显示文件内容
Ctrl + F向下滚动一屏
Ctrl + B返回上一屏
=输出当前行的行号
:f输出文件名和当前行的行号

2.5 less

功能描述:与 more 类似,但是比 more 更好的是,它可以往前翻页

less 文件名

说明

操作功能说明
空白键 (space)向下翻一页
上下键向上或向下翻一行
pagedown向下翻动一页
pageup向上翻动一页
/ 字符串向下搜索字符串;n:向下查找;N:向上查找
? 字符串向上搜索字符串;n:向上查找;N:向下查找
q推出 less,不再显示文件内容

2.6 head

功能描述:用于显示文件的开头部分内容

head [选项] [参数] 文件名

选项 & 参数

-n + 数字

说明

1)默认情况下,head 命令显示文件的前 10 行内容;

案例
head

2.7 tail

功能描述:用于显示文件的末尾部分内容

tail [选项] [参数] 文件名

选项 & 参数

-n + 数字
-f 实时追踪文件的所有更新内容

说明

1)默认情况下,tail 命令显示文件的尾 10 行内容;

案例
tail

三、搜索文件

3.1 locate

功能描述:快速定位文件路径

locate 文件名

说明

1)/var/lib/mlocate/mlocate.db locate 所搜索的后台数据库;
2)updatedb 更新后台数据库;
3)/etc/updatedb.conf locate 搜索时遵循的规则在该配置文件中;
4)由于 locate 命令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 命令创建 locate 数据库;

3.2 find

功能描述:在系统中搜索符合条件的文件

find [搜索范围] [搜索条件] [参数]

说明

1)可以使用通配符匹配,通配符是完全匹配,Linux 系统中的通配符包括:

* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符

2)搜索条件主要有 name、iname、user、size 四种;
3)注意避免进行大范围搜索,因为会非常耗费系统资源;
4)find 搜索速度最慢,但是功能最强大;

案例

1)find / -name passwd 精确查找
2)find / -name 'pass*' 模糊查找
3)find / -name 'pass??' pass + 两个字符
4)find / -user 'root' 查找 root 用户创建的目录及文件
5)find /root -iname passwd 不区分大小写
6)find /root -nouser 查找没有所有者的文件
7)find /var/log/ -mtime +10 查找 10 天前修改的文件

-10 10天内;10 10天当天;+10 10天前
atime 文件访问时间;ctime 改变文件属性;mtime 修改文件内容

8)find . -size 25k 查找当前目录下大小是 25kb 的文件

-25k 小于25kb;25k 等于25kb的文件;+25k 大于25kb

9)find . -inum 262422 查找当前目录下 i 节点是 262422 的文件
10)查找/etc目录下,大于20KB并且小于50KB的文件,并显示详细信息
find /etc -size +20k -a -size -50k -exec ls -lh {} \

-a and 逻辑与 两个条件都满足
-o or 逻辑或,两个条件满足一个即可
-exec 命令 {} \ 对搜索结果执行操作

3.3 grep

功能描述:在文件中搜索符合条件的内容

grep [选项] 查找内容 文件名

选项

-i 忽略字母大小写
-v 排除指定字符串
-n 显示匹配行及行号

说明

1)grep 是在文件中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行包含匹配,与模糊匹配相近;
2)find 是在系统中搜索符合条件的文件名,如果需要匹配,使用通配符进行完全匹配;
3)配合管道符 |,表示将前一个命令的处理结果输出传递给后面的命令处理;

案例

1)在 hello.txt 文件中,查找 “yes” 所在行,并且显示行号
写法 1:cat /root/hello.txt | grep -n "yes"
写法 2:grep -n "yes" /root/hello.txt

3.4 whatis

功能描述:查询命令执行什么功能

whatis 命令名

说明

1)等同于使用 man -f 命令名;

案例
whatis

3.5 whereis

功能描述:搜索命令所在路径及帮助文档所在位置

whereis [选项] 命令名

选项

-b 只查找可执行文件
-m 只查找帮助文件

3.6 which

功能描述:搜索命令所在路径及别名

which 命令名

3.7 apropos

功能描述:查看所有相关的命令

apropos 命令名

说明

1)等同于使用 man -k 命令名;

案例
apropos

四、压缩与解压缩

常见压缩格式:.zip .gz .bz2 .tar.gz .tar.bz2

4.1 .zip

功能描述:压缩文件

zip 压缩文件名 源文件

功能描述:压缩目录

zip -r 压缩文件名 源目录

功能描述:解压缩 .zip 文件

unzip [选项] 压缩文件名

选项

zip 常用选项
-r 递归压缩,即压缩目录
unzip 常用选项
-d<目录> 指定解压后文件的存放目录

案例

1)zip -r myroot.zip /root/ 将 /root 下的所有文件/文件夹压缩成 myroot.zip
2)mkdir /opt/tmp unzip -d /opt/tmp /root/myroot.zip 将 myroot.zip 解压到 /opt/tmp 目录下

4.2 .gz

功能描述:压缩为 .gz 格式,不保留源文件

gzip 源文件

功能描述:压缩为 .gz 格式,保留源文件

gzip -c 源文件 > 压缩文件名

功能描述:压缩目录下所有的子文件,但是不能压缩目录

gzip -r 源目录

功能描述:解压缩文件

gzip -d 压缩文件名
gunzip [-r] 压缩文件名

4.3 .bz2

功能描述:压缩为 .bz2 格式,不保留源文件

bzip2 源文件

功能描述:压缩为 .bz2 格式,保留源文件

bzip2 -k 源文件

功能描述:解压缩,-k 保留压缩文件

bzip2 -d 压缩文件名
bunzip2 压缩文件名

注意

1)bzip2 命令不能压缩目录;

4.4 tar

功能描述:打包目录,压缩后的文件格式 .tar.gz

tar [-ctxzjJvf] 压缩文件名 [源文件]

选项

-c 产生 .tar 打包文件
-t 查看内容
-x 解打包解压缩
-z 使用 gzip 进行压缩或解压缩
-j 使用 bzip2 进行压缩或解压缩
-J 使用 xz 进行压缩或解压缩
-v 显示详细信息
-f 指定压缩后的文件名

说明

1)tar 命令使用时候 c\t\x 方式选一种;
2)使用 gzip、bzip2、xz 方式压缩,压缩文件后缀 gz、bz2、xz;
3)在 CentOS 中,bz2、zip 格式的压缩需要安装相应命令;

案例

1)压缩多个文件,将 /home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz
tar -czvf pc.tar.gz /home/pig.txt /home/cat.txt
2)将 /home 的文件夹压缩成 myhome.tar.gz
tar -czvf myhome.tar.gz /home/
3)将 pc.tar.gz 解压到当前目录
tar -xzvf pc.tar.gz
4)将 myhome.tar.gz 解压到 /opt/tmp2 目录下
mkdir /opt/tmp2
tar -xzvf /home/myhome.tar.gz -C /opt/tmp2


慢慢来,保持专注,一点一点进步!
文章持续更新,感谢大家的点赞、收藏和评论,我是今越,我们下期再见:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值