linux-shell脚本攻略第三章笔记

以文件之名

生成任意大小的文件

# if	input file
# of	output file
# bs	block size
# count	被复制块数
# /dev/zero	特殊的字符设备,返回0值字节
# 可通过dd向/dev/null传输大量数据测试内存操作的速度
[root@localhost bash]# dd if=/dev/zero of=2.sh bs=1M count=3
3+0 records in
3+0 records out
3145728 bytes (3.1 MB) copied, 0.023877 s, 132 MB/s
[root@localhost bash]# ls -hl |grep 2.sh
-rwxrwxrwx. 1 root root 3.0M Nov  7 21:44 2.sh

文本文件的交集与差集

# comm 比较两个已排序的文件
[root@localhost bash]# sort a -o a ; sort b -o b
[root@localhost bash]# comm a b 

		apache
centos
				linux
		mysql
		name
		nginx
		redis
rhel
ubuntu
# 第一列:只在a中出现的行
# 第二列:直在b中出现的行
# 第三列:a、b交集
# -n	指定删除某列

文件权限、所有权与粘滞位

# 设置粘滞位,只有目录所有者才能删除目录中文件
chmod a+t directory_name

# 递归方式修改当前目录下所有文件和子目录的权限
chmod 777 . -R

# setuid 允许other以owner的身份执行文件
# 1.以owner身份登录
chmod +s file
chown user:group file
chmod +s file
./file
# 只能应用在Linux ELF格式的二进制文件上,不能对脚本设置setuid

将文件设置为不可修改

chattr +i file		#将文件设置为不可修改
chattr -i file		#撤销

diff & patch

# 创建测试文件
[root@localhost bash]# cat version1.txt 
this is the original text
line2
line3
line4
happy hacking !
[root@localhost bash]# cat version2.txt 
this is the original text
line2
line4
happy hacking !
GNU is not UNIX
# -u 用于生成一体化输出
[root@localhost bash]# diff -u version1.txt version2.txt 
--- version1.txt	2019-11-17 08:28:45.392134824 -0500
+++ version2.txt	2019-11-17 08:29:23.619589367 -0500
@@ -1,5 +1,5 @@
 this is the original text
 line2
-line3
 line4
 happy hacking !
+GNU is not UNIX
[root@localhost bash]# ls
version1.txt  version2.txt  version.patch
# 更新version1.txt
[root@localhost bash]# patch -p0 < version.patch 
patching file version1.txt
[root@localhost bash]# cat version1.txt 
this is the original text
line2
line4
happy hacking !
GNU is not UNIX
# -R 恢复旧版本,-E 删除空文件
[root@localhost bash]# patch -RE -p0 < version.patch 
patching file version1.txt
[root@localhost bash]# cat version1.txt 
this is the original text
line2
line3
line4
happy hacking !
# 递归
[root@localhost bash]# mkdir prj0
[root@localhost bash]# mkdir prj1
[root@localhost bash]# echo "this is prj0" > prj0/text0
[root@localhost bash]# echo "this is prj1" > prj1/text1
[root@localhost bash]# tree
\.
├── prj0
│   └── text0
└── prj1
    └── text1

2 directories, 2 files
# 创建补丁,-pN表示取消N层目录数
[root@localhost bash]# diff -uNr prj0 prj1 > prj.patch
# 打补丁
[root@localhost bash]# cp prj.patch prj0
[root@localhost bash]# cd prj0
[root@localhost prj0]# patch -p1 < prj.patch 
patching file text0
patching file text1
[root@localhost prj0]# cat text1 
this is prj1
# 回退
[root@localhost prj0]# patch -R -p1 < prj.patch 
patching file text0
patching file text1
[root@localhost prj0]# cat text0 
this is prj0

tail

# -f 参数允许tail关注文件内容的更新并将其显示
# -s 指定睡眠间隔
[root@localhost bash]# tail -f /var/log/btmp

只查找目录

[root@localhost ~]# ls -d */
bash/
# -F 在输出项后面加上代表文件类型的字符
[root@localhost ~]# ls -F | grep "/$"
bash/
[root@localhost ~]# ls -l | grep "^d"
drwxr-xr-x. 2 root root  137 Nov 18 01:21 bash
[root@localhost ~]# find . -type d -maxdepth 1 -print
find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.

.
./.ssh
./bash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值