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