linux 第三篇

脚本,文件管理

  1. vim  文本编辑器
  2.  command(命令模式) 默认模式

ZQ强制退出不保存
ZZ保存并退出
G:跳到最后一行
gg:跳到第一行
numG 或 :num 回车 跳到指定行
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
~:转换大小写
J:删除当前行后的换行符
r:单个字符的替换
dd 剪切一行
p 在当前行的下一行粘贴
P 在当前行的上一行粘贴
dw 剪切一个单词
d$ 剪切光标所在位置到行尾
d^ 剪切光标所在位置到行首
num d: 剪切当前行及其向下指定数量的行
yy 复制一行
yw 复制一个单词
y$ 复制光标所在位置到行尾
y^ 复制光标所在位置到行首
num y: 复制当前行及其向下指定数量的行

v 选择模式
p 粘到光标所在处之后
P 粘到光标所在处之前
V 多行选择模式
p 在当前行的下一行粘贴
P 在当前行的上一行粘贴

insert(插入模式) 编辑文本内容
i ESC回到命令模式
I 光标跳至行首并进入插入模式
A 光标跳至行尾并进入插入模式
a 光标向后移动一个字符并进入插入模式
o 光标向下插入一个新行并进入插入模式
O 光标向上插入一个新行并进入插入模式

exit(退出模式) 保存,退出 :
w保存
q退出
q!强制退出不保存
wq保存并退出
w!强制保存:
1.root
2.文件的owner
3.当前用户对当前文件所在目录有wx权限时,实际会删除该文件再新建。
x=wq
x!
回到命令模式
EscEsc
Esc 等一会
Enter
:r /etc/issue 读取文件内容,将内容输入到当前文本的最后
:! ifconfig ens33 将命令的输出结果显示,并不存入文件,按q结束命令输出
:r! ifconfig ens33 将命令的输出结果输入到当前光标所在行的下一行
:.! ifconfig ens33 将命令的输出结果输入到前当行,替换原有内容

:%s/\<root\>/rooter/g

:%s/\(\<r..t\>\)/\1er/gi 支持基本正则表达式 不加g时每行的第一个关键字替换,加g则全替换

地址定界
:start_pos,end_pos
# 具体第#行,例如2表示第2行
#,# 从左侧#表示起始行,到右侧#表示结尾行
#,+# 从左侧#表示的起始行,加上右侧#表示的行数
:2,+3 表示2到5行
. 当前行
$ 最后一行
.,$-1 当前行到倒数第二行
% 全文, 相当于1,$
:%s/\/bin\/bash/\/sbin\/nologin/g 或使用:%s@/bin/bash@/sbin/nologin

 

test用法 [ ]

== 表示字符串是否相同
-eq 表示两个整数是否相等(可以为负,不能为浮点数)
-gt 大于左边的数是否大于右边的数
-ge 大于等于
-lt 小于
-le 小于等于
-ne 不等于

字符串比较

== 是否相同
!= 或 <> 表示是否不同
~= 左侧字符串是否能够被右侧的PATTERN所匹配
[[ ab =~ a ]]
>
[[ b > a ]] 表示在默认编码表中的顺序,排后面的是较大的。
<
[[ a < b ]]

文件判断

-a 或 -e filename 判断文件是否存在,若存在则为真
-b 判断文件是否为块设备
-c 判断文件是否为符号设备
-d FILE:是否存在且为目录文件
-f FILE:是否存在且为普通文件
-h FILE 或 -L FILE:存在且为符号链接文件
-p FILE:是否存在且为命名管道文件
-S FILE:是否存在且为套接字文件

文件权限测试:
-r FILE:是否存在且可读
-w FILE: 是否存在且可写
-x FILE: 是否存在且可执行
文件特殊权限测试:
-u FILE:是否存在且拥有suid权限
-g FILE:是否存在且拥有sgid权限
-k FILE:是否存在且拥有sticky权限

文件大小测试:
-s FILE: 是否存在且非空
文件是否打开:
-t fd: fd 文件描述符是否在某终端已经打开
-N FILE:文件自从上一次被读取之后是否被修改过
-O FILE:当前有效用户是否为文件属主
-G FILE:当前有效用户是否为文件属组

双目测试:
FILE1 -ef FILE2: FILE1是否是FILE2的硬链接
FILE1 -nt FILE2: FILE1是否新于FILE2(mtime)
FILE1 -ot FILE2: FILE1是否旧于FILE2

 

find

根据属主、属组查找:
-user USERNAME:查找属主为指定用户(UID)的文件
-group GRPNAME: 查找属组为指定组(GID)的文件
-uid UserID:查找属主为指定的UID号的文件
-gid GroupID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件

 

根据文件类型查找:
-type TYPE:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件

 

根据文件大小来查找:
-size [+|-]#UNIT
常用单位:k, M, G,c(byte)
#UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k 表示[0,5k]
+#UNIT:(#,∞)
如:+6k 表示(6k,∞)

据时间戳:
以“天”为单位;
-atime [+|-]#,
#: [#,#+1)
+#: [#+1,∞]
-#: [0,#)
-mtime
-ctime
以“分钟”为单位:
-amin
-mmin
-cmin

 

根据权限查找:
-perm [/|-]MODE
MODE: 精确权限匹配
/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰
-MODE:每一类对象都必须同时拥有指定权限,与关系
0 表示不关注

 

bzip2
-k 保持原文件或原压缩包不变
-d 或 bunzip2 解压
-c 文件名 > 压缩包 压缩后保持原文件不变,但权限会根据umask变化
-cd 压缩包 > 文件名 或 bzcat 压缩包 > 文件名 解压后保持压缩包不变,但权限会根据umask变化
-v 详细信息
-# 表示指定压缩比,默认是9,数字越小,表示压缩比越小,速度越快。反之,数字越大,压缩比越大,速度却越慢。

 

 

xz
-k 保持原文件或原压缩包不变
-d 或 unxz 解压
-c 文件名 > 压缩包 压缩后保持原文件不变,但权限会根据umask变化
-cd 压缩包 > 文件名 或 xzcat 压缩包 > 文件名 解压后保持压缩包不变,但权限会根据umask变化
-v 详细信息
-# 表示指定压缩比,默认是6,数字越小,表示压缩比越小,速度越快。反之,数字越大,压缩比越大,速度却越慢。

 

tar ***
-可以不要
-c 创建包
-v 详细过程
-f 指定生成后的文件名 源文件……
tar -tvf mage.tar 预览归档文件
tar -r /etc/fstab -f mage.tar 往归档中增加文件
tar –delete etc/fstab -f mage.tar 从归档中减少文件
tar -xv passwd -f mage.tar 从归档中解出指定的文件
tar -xvf mage.tar 从归档中解出所有文件
tar xvf mage.tar -C /app2 解压到指定目录,默认为当前目录
-j 使用bzip2 压缩或解压缩(可省略)
-J 使用xz 压缩或解压缩(可省略)
-z 使用gzip 压缩或解压缩(可省略)
tar jcvf mage.tar.bz2 *
tar xvf mage.tar.bz2

 

rpm
-i 安装
–test 仅测试,不安装
–nodeps 忽略依赖性
–replacepkgs 重复安装已安装过的包,文件覆盖
–replacefiles 将要安装包的部分文件与其他已安装的包文件冲突,可继续安装
–noscripts:不执行程序包脚本
%pre: 安装前脚本; –nopre
%post: 安装后脚本; –nopost
%preun: 卸载前脚本; –nopreun
%postun: 卸载后脚本; –nopostun
–oldpackage 已装新的,再装旧的
–force 等同于–replacepkgs –replacefiles –oldpackage
-U 更新 如果装的有旧的,则升级,如果未装旧的,则安装新的。
-F 更新 如果装的有旧的,则升级,如果未装旧的,不安装新的。

-v 详细信息
-vv 更详细信息 *
-h 显示进度
-ivh 安装并详细显示进度 ***
-q 查询
-qa 查询安装的所有包
rpm -qa scr*
rpm -qa |grep ^scr
-qf 查询指定的文件由哪一个rpm包提供(文件用路径表示)
-qp 指定未安装的rpm包
-q –provides 软件包名 查看指定的软件包提供了哪些能力
可以使用-a 显示当前系统中由已安装过的包提供的所有能力
-q –whatprovides webserver 查看指定的能力由哪一个软件包提供
-q –whatrequires CAPABILITY 查询指定的CAPABILITY被哪个包所依赖
-qR 软件包名 查看指定的软件包依赖哪些能力
-qc 软件包名 查看配置文件
-qd 软件包名 查看帮助文档
-ql 软件包名 查看该软件包所提供的所有文件
-qi 软件包名 查看软件包的信息
-q –scripts 软件包名 查看软件包的安装脚本
-V 查看指定包所提供的文件是否发生过改变
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P capabilities differ

-K|checksig rpmfile 检查包的完整性和签名
–nosignature: 不检查来源合法性
–nodigest:不检查包完整性

 

 

 

 

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/99961

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code