Linux文件管理之二

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 查找文件内容的命令是 grep 命令。该命令的使用方式如下

01

查找文件内容(grep )


查找文件内容的命令是 grep 命令。该命令的使用方式如下:

grep [选项] [查找模式] [文件名1,文件名2,……]

grep 命令常有选项说明:

选项 说明
-b 在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量
-c 只显示匹配行的数量
-i 比较时不区分大小写
-h 在查找多个文件时,指示 grep 不要将文件名加入到输出之前。
-l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名。
-n 在输出前加上匹配串所在行的行号(文件首行行号为 1)
-v 只显示不包含匹配串的行
-x 只显示整行严格匹配的行

例如:





grep ORA-00312 /u01/app/oracle/diag/rdbms/yao/yao/trace/alert_yao.log grep -in ora-00312 /u01/app/oracle/diag/rdbms/yao/yao/trace/alert_yao.log grep -ic ora-00312 /u01/app/oracle/diag/rdbms/yao/yao/trace/alert_yao.log grep -in ora-00312 /u01/app/oracle/diag/rdbms/yao/yao/trace/alert_yao.log |grep -v "online log 1 thread 1"

显示(过滤)以 ab 开头,ac 结束的行,且 ab 和 ac 之间只有二个任意个字符


grep ^ab..ac$ install.log


02

显示文件内容(cat、more、less、head、tail、string)


cat

一次显示整个文件  cat [选项] 文件列表

-n  在文件的每行前面显示行号

cat -n /var/log/mysqld.log

从键盘创建一个文件,能建不能回退编辑,适合编辑短文件。

oracle@yaoyuan ~$ cat > test
this is a example
can not go back;
oracle@yaoyuan ~$ cat test
this is a example
can not go back;

more

主要用于读取大文件,以百分比的形式查看日志,类似cat,不过会以一页一页的显示方便使用者逐页阅读,按空白键(space)就往下一页显示,按b键(back)就会往回一页显示,按回车往下一行,而且还有搜寻字符串的功能(与vi相似),使用中的说明文件,请按h。退出按q。

more +20 file:从第20行开始显示file之档案内容。

less

less命令可以对文件或其他输出进行分页显示,与more命令相似。

head

从文本文件的头部开始查看

用法:head [选项]… [文件]…

-n 制定您想要显示文本多少行,默认10行

-c number 显示多少个字节

tail

tail file.txt :显示文件file.txt的后十行内容。

tail -n 20 file.txt :显示文件file.txt的后二十行内容。

tail -f file.txt :显示文件file.txt的后十行内容并在文件内容增加后,自动显示新增的文件内容。

tail -n 50 -f file.txt :显示文件file.txt的后50行内容并在文件内容增加后,自动显示新增内容。

注:-f非常有用,可用于调试过程实时显示日志

sudo tail -n 10 -f /var/log/mysqld.log

strings

strings命令输出文件中可以用于显示的字符。常用于显示二进制文件中的可以显示的信息。

# strings /bin/mysqlcheck|head

cut

cut是按列提取文件,例如



oracle@yaoyuan ~$ head -n 3 /etc/passwd| cut -d: -f2xxxoracle@yaoyuan ~$ ll|cut -b 22-30|head
 oinstall oinstall oinstall oinstall oinstall oinstall oinstall oinstall oinstall



03

文件操作(touch、cp、rm、mv、wc、dd)

touch

touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。



touch testfilell testfilesleep 60touch testfilell testfile

cp

cp 命令用于复制文件或目录,该命令的使用方式如下:

cp [选项] 源文件或目录 目标文件或目录

选项说明:

-f 删除已经存在的目标文件而不提示

-i 和 f 选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答 y 时目标文件将被覆盖,是交互式复制。

-p 此时 cp 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。

-r 若给出的源文件是一目录文件,此时 cp 将递归复制该目录下的所有的子目录和文件。此时目标文件必须为一个目录名


#  cp file_1 file2#  cp -p file_1 file3# ll file*-rw-r--r--. 1 oracle oinstall 0 Mar  3 15:13 file_1-rw-r--r--. 1 root   root     0 Mar  3 15:14 file2-rw-r--r--. 1 oracle oinstall 0 Mar  3 15:13 file3# cp -i file1 file3cp: overwrite ‘file3’?

rm(非常危险的命令)

rm(英文全拼:remove)命令用于删除一个文件或者目录。

rm [options] 文件名...

-i 删除前逐一询问确认。

-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。

-r 将目录及以下之档案亦逐一删除。



oracle@yaoyuan tmp$ rm -ir *rm: remove regular file ‘a’?

mv

移动文件可使用 mv 命令。mv 命令还可为文件改名,即把源文件以一个新文件名移动到另一个新的目录中去。该命令的使用方式如下:

mv [选项] 源文件名 目标文件名

mv [选项] 源目录名 目标目录名2

mv [选项] 文件列表 目录

-u  当要覆盖的文件或目录比源文件新时,不覆盖目标文件。



oracle@yaoyuan tmp$ touch file1oracle@yaoyuan tmp$ mv file1 file2oracle@yaoyuan tmp$ mkdir fileoracle@yaoyuan tmp$ mv file2 file

wc

wc 命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令使用方式如下:

wc [选项] 文件列表

选 项 说 明
-c 统计字节数
-l 统计行数
-w 统计字数



# wc -c /etc/passwd 2407 /etc/passwd# wc -l /etc/passwd 46 /etc/passwd# wc -w /etc/passwd 91 /etc/passwd# wc /etc/passwd  46   91 2407 /etc/passwd

dd

dd 命令用于读取、转换并输出数据。

if=文件名:输入文件名,默认为标准输入。即指定源文件。

of=文件名:输出文件名,默认为标准输出。即指定目的文件。

ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

bs=bytes:同时设置读入/输出的块大小为bytes个字节。

count=blocks:拷贝blocks个块,块大小等于ibs指定的字节数

/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。/dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。

测试硬盘读写测试,以每块64K大小,写入10240块到SD卡中



oracle@yaoyuan ~$ dd if=/dev/zero of=/tmp/testfile bs=64k count=10240 10240+0 records in10240+0 records out671088640 bytes (671 MB) copied, 0.504251 s, 1.3 GB/soracle@yaoyuan ~$ dd if=/dev/zero of=/u01/testfile bs=64k count=1024010240+0 records in10240+0 records out671088640 bytes (671 MB) copied, 0.655586 s, 1.0 GB/s

测试读

oracle@yaoyuan ~$ dd if=/tmp/testfile of=/dev/null bs=64k count=10240 10240+0 records in10240+0 records out671088640 bytes (671 MB) copied, 0.164918 s, 4.1 GB/s

文件排序(sort)

sort 命令的功能是对文件中的各行进行排序。用法:sort [选项] 文件

-u 对排序后认为相同的行只留其中一行

-r 按逆序输出排序结果


cat /etc/passwd| cut -d: -f5|sort


04

文件比较(comm、diff)


comm

对两个有序的文件进行比较,可以使用comm命令,使用方式如下:

comm [-123] file1 file2
comm --help

该命令是对两个已经排好序的文件进行比较。其中 file1 和 file2 是已排序的文件。comm 读取这两个文件,然后生成三列输出:仅在 file1 中出现的行;仅在 file2 中出现的行;在两个文件中都存在的行。

如果文件名用“-”,则表示从标准输入读取。选项 1、2 或 3 抑制相应的列显示:

  • comm -12 只显示在两个文件中都存在的行,也就是只输出第3类信息。
  • comm -23 只显示在第一个文件中出现而未在第二个文件中出现的行。
  • comm -123 则什么也不显示。
cat /etc/passwd| cut -d: -f5|sort -u> file1
cat /etc/group| cut -d: -f1|sort -u>file2
comm -12 file1 file2

diff

diff 命令的功能为逐行比较两个文本文件,列出其不同之处,不要求事先对文件进行排序。该命令的使用方式如下:

diff [选项] file1 file2

diff 命令常常用于对比经过修改的文件的前后异同。


cp file1 file2vi file2diff file1 file2


05

件拆分和合并(split和cat)


生成一个30MB的大文件



$ dd if=/dev/zero bs=1024 count=30000 of=film.mp430000+0 records in30000+0 records out30720000 bytes (31 MB) copied, 0.0956039 s, 321 MB/s$ ls -lh film.mp4-rw-r--r--. 1 oracle oinstall 30M Mar  3 14:47 film.mp4$ split -b 10m film.mp4 film_part_$ ls -lh film*-rw-r--r--. 1 oracle oinstall  30M Mar  3 14:47 film.mp4-rw-r--r--. 1 oracle oinstall  10M Mar  3 14:47 film_part_aa-rw-r--r--. 1 oracle oinstall  10M Mar  3 14:47 film_part_ab-rw-r--r--. 1 oracle oinstall 9.3M Mar  3 14:47 film_part_ac

可以按照文件大小来进行拆分,如果是文本文件的话,还可以按照行数来进行拆分,默认是 1000 行作为一个拆分单位,使用-d可以指定行数进行拆分。默认情况下,分割后的文件的名称会以 x 作为前缀,以 aa、ab、ac 这样的双字母格式作为后缀,形成 xaa、xab 这样的名称格式。




$ ll /var/log/mysqld.log-rw-r--r--. 1 mysql mysql 71849311 Mar  3 14:29 /var/log/mysqld.log$ split -d -100000 /var/log/mysqld.log mysqld_$ ls -lh mysqld*-rw-r--r--. 1 oracle oinstall 12M Mar  3 14:55 mysqld_00-rw-r--r--. 1 oracle oinstall 12M Mar  3 14:55 mysqld_01-rw-r--r--. 1 oracle oinstall 12M Mar  3 14:55 mysqld_02-rw-r--r--. 1 oracle oinstall 12M Mar  3 14:55 mysqld_03-rw-r--r--. 1 oracle oinstall 12M Mar  3 14:55 mysqld_04-rw-r--r--. 1 oracle oinstall 11M Mar  3 14:55 mysqld_05

合并然后校验:



$ cat film_part_a* >film2.mp4$ ll film*-rw-r--r--. 1 oracle oinstall 30720000 Mar  3 14:57 film2.mp4-rw-r--r--. 1 oracle oinstall 30720000 Mar  3 14:47 film.mp4-rw-r--r--. 1 oracle oinstall 10485760 Mar  3 14:47 film_part_aa-rw-r--r--. 1 oracle oinstall 10485760 Mar  3 14:47 film_part_ab-rw-r--r--. 1 oracle oinstall  9748480 Mar  3 14:47 film_part_ac$ md5sum film.mp4 film2.mp4f5f24b666fea7cc6825ceae8f9750362  film.mp4f5f24b666fea7cc6825ceae8f9750362  film2.mp4


06

文件打包和压缩(tar)


tar 命令将用户所指定的文件或目录打包成一个文件,不过它并不做压缩。一般 UNIX 上常用的压缩方式是先用 tar 命令将许多文件打包成一个文件,再用 gzip 等压缩命令压缩文件,该命令使用方法如下:

tar [选项] 压缩后的文件名 要被压缩的文件

tar 命令选项说明如下表所示。

选项 说明
-c 创建一个新的 tar 文件
-v 显示运作过程信息verbose
-f 指定文件名称
-z 调用 gzip 压缩命令执行压缩
-j 调用 bzip2 压缩命令执行压缩
-t 参看压缩文件内容
-x 解开 tar 文件





oracle@yaoyuan tmp$ sudo rm -rf *oracle@yaoyuan tmp$ cp /var/log/mysqld.log file1oracle@yaoyuan tmp$ lltotal 71264-rw-r--r--. 1 oracle oinstall 72972906 Jul 30 17:46 file1oracle@yaoyuan tmp$ touch file{2,3}  oracle@yaoyuan tmp$ lltotal 71264-rw-r--r--. 1 oracle oinstall 72972906 Jul 30 17:46 file1-rw-r--r--. 1 oracle oinstall        0 Jul 30 17:46 file2-rw-r--r--. 1 oracle oinstall        0 Jul 30 17:46 file3oracle@yaoyuan tmp$ tar cvf a.tar /tmp/*tar: Removing leading `/' from member names/tmp/file1/tmp/file2/tmp/file3oracle@yaoyuan tmp$ tar tvf a.tar       -rw-r--r-- oracle/oinstall 72972906 2022-07-30 17:46 tmp/file1-rw-r--r-- oracle/oinstall        0 2022-07-30 17:46 tmp/file2-rw-r--r-- oracle/oinstall        0 2022-07-30 17:46 tmp/file3oracle@yaoyuan tmp$ tar xvf a.tartmp/file1tmp/file2tmp/file3oracle@yaoyuan tmp$ tar cvfj b.tar /tmp/*tar: Removing leading `/' from member names/tmp/a.tar/tmp/file1/tmp/file2/tmp/file3/tmp/tmp//tmp/tmp/file1/tmp/tmp/file2/tmp/tmp/file3oracle@yaoyuan tmp$ oracle@yaoyuan tmp$ file b.tar b.tar: bzip2 compressed data, block size = 900koracle@yaoyuan tmp$ ll           total 154408-rw-r--r--. 1 oracle oinstall 72980480 Jul 30 17:47 a.tar-rw-r--r--. 1 oracle oinstall 12155452 Jul 30 17:49 b.tar-rw-r--r--. 1 oracle oinstall 72972906 Jul 30 17:46 file1-rw-r--r--. 1 oracle oinstall        0 Jul 30 17:46 file2-rw-r--r--. 1 oracle oinstall        0 Jul 30 17:46 file3drwxr-xr-x. 2 oracle oinstall       45 Jul 30 17:48 tmporacle@yaoyuan tmp$ tar xvf b.tartmp/a.tartmp/file1tmp/file2tmp/file3tmp/tmp/tmp/tmp/file1tmp/tmp/file2tmp/tmp/file3

其他压缩命令有:gzip 、bzip2、 compress等。


07

openssl加密



# 加密oracle@yaoyuan tmp$ openssl enc -e -aes256 -in file1 -out file1.aes256enter aes-256-cbc encryption password:Verifying - enter aes-256-cbc encryption password:#解密oracle@yaoyuan tmp$ openssl enc -d -aes256 -in file1.aes256 -out file2   enter aes-256-cbc decryption password:# 比较oracle@yaoyuan tmp$ diff file1 file2
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 读取命令 read命令使用指南
【Shell 命令集合 文件管理】Linux 读取命令 read命令使用指南
58 0
|
2月前
|
监控 网络协议 Shell
【Shell 命令集合 文件管理】Linux 远程文件复制命令 rcp 命令使用教程
【Shell 命令集合 文件管理】Linux 远程文件复制命令 rcp 命令使用教程
50 0
|
2月前
|
Shell Linux C语言
【Shell 命令集合 文件管理】Linux 删除 rm命令使用指南
【Shell 命令集合 文件管理】Linux 删除 rm命令使用指南
82 0
|
2月前
|
安全 Shell Linux
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
62 0
|
2月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 快速定位文件和目录 slocate命令使用教程
【Shell 命令集合 文件管理】Linux 快速定位文件和目录 slocate命令使用教程
46 0
|
24天前
|
Linux C++
Linux文件管理命令(一)
这是关于Linux命令行的一些内容,主要包括了一些常见的Linux命令及其参数的用法。例如,`ls` 命令用于列出目录内容,不同的参数如 `-a` 显示所有文件(包括隐藏文件),`-l` 以详细模式显示,`-S` 按大小排序等。`mkdir` 命令用于创建目录,`cp` 命令用于复制文件或目录,`mv` 命令用于移动或重命名文件或目录,而`rm` 命令则用于删除文件或目录。在使用这些命令时,可以结合不同的参数来实现不同的操作。
|
24天前
|
Linux Windows
Linux文件管理命令(二)
`Linux`文件管理涉及`ls`显示目录内容,`cd`切换目录,`pwd`显示当前目录,`whoami`显示当前用户,`hostname`显示主机名,目录使用正斜杠 `/` 分隔,根目录始于第一个 `/`。`man`命令用于获取命令帮助,如`man ls`,也可用`--help`参数,如`ls --help`。常用快捷键包括`Ctrl+C`取消操作,`Ctrl+L`清屏,`Ctrl+D`退出用户,`Ctrl+A`移动光标到行首,`Ctrl+E`移动到行尾。查看`PATH`环境变量用`echo $PATH`。
|
2月前
|
Linux 开发者
Linux技术基础(6)——文件管理
这是一个关于文件管理的实验指南,涵盖了`cat`, `cmp`, `diff`, `file`和`find`五个Linux命令。`cat`用于查看和操作文件内容,例如打印、连接和清空文件。`cmp`比较两个文件的差异,`diff`同样比较文件差异但提供更详细输出。`file`识别文件类型,而`find`则在指定目录中搜索文件。实验可在阿里云开发者平台的给定链接进行。
|
2月前
|
Ubuntu Linux 开发工具
【专栏】在Linux上,exa是一个现代化的文件管理系统替代工具,提供直观的文件信息展示。
【4月更文挑战第28天】在Linux上,exa是一个现代化的文件管理系统替代工具,提供直观的文件信息展示。要安装exa,可以在基于Debian的系统(如Ubuntu)上运行`sudo apt install exa`,基于RedHat(如CentOS)的系统运行`sudo yum install exa`,或从源代码编译安装。使用exa的基本命令是`exa`,它列出当前目录的文件和目录。通过选项如`-F`(显示文件类型)、`-h`(人类可读大小)、`-l`(详细信息)和`-s`(排序)可以定制输出。exa还能与其他命令(如grep)结合使用,提升效率。
|
2月前
|
Linux 索引
linux 文件查找 和文件管理常用命令
linux 文件查找 和文件管理常用命令
31 0