Linux第二周笔记

扩展命令提示符

按“:”进入Ex模式
w:写(存)磁盘文件
wq 写入并退出
x 写入并退出
q 退出
q!不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中、
w filename 将当前文件写入另一个文件
!commmand 执行命令
r!commmand 读入命令的输入

              命令模式光标跳转

字符跳转:
h:左;l:右;j:下;k:上
#COMMAND 跳转由#制定的个数的字符
单词间跳转:
w:下个单词的词首
e:当前或下一单词的词首
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
当前页跳转:
H:页首 M:页中间行 L:页底
zt:将光标所在行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕低端

                     命令模式翻屏操作

                      命令模式操作

字符编辑:
x:删除光标处的字符
#x: 删除光标处的#个字符
xp:交换光标处所在处的字符及其后面的位置
~ 转换大小写
j:删除当前行后的换行符
替换命令(r,replace)
r:替换光标所在处的字符
R:切换成REPLACE模式

                        shell脚本编程

变量赋值:name='value'
变量引用:${name}或者$name "" 弱引用,其中的变量会被替换为变量值
''强引用,其中的变量引用不会被替换为变量值,而保持原来字符串
显示已定义的所有变量:set
删除变量:unset name

                        bash的数值测试

-v 变量VAR是否设置
数值测试:
-gt 是否大于
-ge 是否大于等于
-eq 是否等于
-ne 是否不等于
-lt 是否小于
-le 是否小于等于

                       bash的字符串测试

= 是否等于

ascii码是否大于ascii码
<是否小于
!=是否不等于
=~左侧字符串是否能够被右侧的PATTERN所匹配 一般用于[[]]中;扩展的正则表达式
-z “string” 字符串是否为空 空为真,不空为假
-n “string”字符串是否不空,不空为真,空为假

                        bash的文件测试

存在性测试
-e FILE:文件存在性测试,存在为真,否则为假
-a FILE:同-e
存在性及类别测试
-b FILE:是否存在且为块设备文件
-c FILE:是否存在且为字符设备文件
-d FILE:是否存在且为目录文件
-f FILE:是否存在且为普通文件
-h FILE 或-L FILE:存在且为符号链接文件
-p FILE:是否存在且为命名管道文件
-S FILE:是否存在且为套接文件

                       bash的文件权限测试

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

                       bash的文件属性测试

文件大小测试:-s FILE:是否存在且非空
文件是否打开:
-t fd:fd 文件描述符是否在某终端已经打开
-N FILE:文件自从上一次被读取之后是否被修改过
-O FILE:当前有效用户是否为文件属主
-G FILE:当前有效用户是否为文件属组
双目测试:
FILE1 -ef FILE2:FILE1是否是FILE2的硬链接
FILE1 -nt FILE2:FILE1是否新于FILE2
FILE1 -ot FILE2:FILE1是否旧于FILE2
-a:并且 -o:或者
&& 并且,短路与,代表性的AND THEN
|| 或者,短路或,代表性的OR ELSE
! COMMAND 非

                    使用read命令来接受输入

-p 指定要显示的提示
-s 静默输入,一般用于密码
-n N 制定输入的字符长度N
-d ‘字符’输入结束符
-t N TIMEOUT为N 秒

                    条件选择if语句

if语句可嵌套
单分支:
if 判断条件;then
fi
双分支
if判断条件;then
条件为真的分支代码
else
条件为假的分支代码
fi
多分支
if判断条件1;then
条件1为真的分支代码
elif 判断条件2;then
条件2为真的分支代码
elif 判断条件3
条件3为真的分支代码
else
以上都为假的分支代码
fi

                条件判断:case语句

case 变量引用 in
PAT1)
分支1
..
''
PAT2)
分支2
..
''

...
*)
默认分支
..
''
esac

                 防止扩展

反斜线()会使随后的字符按愿意解释
加引号来防止扩展
单引号(‘ ’)防止所有扩展
双引号(“ ”)也可防止扩展,但以下情况例外:
$(美元符号) 变量扩展
``(反引号) 命令替换
(反斜线) 禁止单个字符扩展
!(叹号) 历史命令替换

                  bash的配置文件

分为两类:全局配置和个人配置
全局配置:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
个人配置:
~/.bash_profile
~/.bashrc

                   shell登录两种方式

交互式登录:
(1)直接通过终端输入账号密码登陆
(2)使用“su -UserName”切换的用户

  • 执行顺序:/etc/profile -->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc

非交互式登录
(1)su UserName
(2)图形界面下打开的终端
(3)执行脚本
(4)任何其他的bash实例
执行顺序:/etc/profile.d/*.sh-->/etc/bashrc-->~/.bashrc

类型分为两类
Profile类和Bashrc类

Profile类:为交互式登录的shell提供配置
全局:/etc/profile, /etc/profile.d/*.sh
个人:~/.bash_profile
功能和用处:
(1)用于定义环境变量
(2)运行命令或脚本

Bashrc类
bashrc类:为非交互式和交互式登录的shell提供配置
全局::/etc/bashrc
个人::~/.bashrc
功能和用处
(1):定义命令别名和函数
(2):定义本地变量

                            编辑配置文件生效

修改profile和bashrc文件后需生效
两种方法:
1重新启动shell进程
2.或source
例如:.~/.bashrc

                            bash推出任务

保存在~/.bash_logout文件中(用户)
在推出登录shell时运行
用于: 1.创建自动备份 2.清除临时文件

                            set命令

$-变量
h:打开这个选项后,shell会将命令所在的路径hash下来,避免每次都要查询。通过set+h选项关闭
i:包含这个选项说明当前的shell是一个交互式的shell。所谓的交互式shell,在脚本中,i选项是关闭的。
m:打开监控模式,就可以通过Job control来控制进程的停止、继续,后台或者前台执行等。
B:大括号扩展
H:可以展开历史列表中的命令,可以通过!来完成
set命令
-u 在扩展一个没有设置的变量时,显示错误信息
-e 如果一个命令返回一个非0推出状态值(失败)就退出

                                                            文件查找

文件查找:locate,find
非实时查找:locate
实时查找:find

locate:查询系统上预建的文件索引数据库
/var/lib/mlocate/mlocate.db
依赖于实现构建的索引:是在系统较为空闲时自动进行,管理员手动更新数据库
命令:
-i 不区分大小写的搜索
-n N 只列举前N个匹配项目
-r
使用基本正则表达式

find:实时查找工具,通过遍历指定路径完成文件查找
查找条件
指搜索层级
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜索目录深度
先处理目录内的文件,在处理指定目录: -depth
根据文件名和 incode查找
-name “文件名称“:支持使用glob*,?,[],[^]
-iname “文件名称”:不区分字母大小写
-inum n 按incode号查找
-samefile name 相同incode号的文件
-links n 链接数为n的文件
-regex "PATTERN":以PATTERN匹配整个文件路径,而非文件名称

                                             查找条件

根据主、属组查找
-user username :查找属主为指定用户(UID)的文件
-group groupname:查找属组为指定组(GID)的文件
-uid userid :查找属主为指定的UID号的文件
-gid geoupid:查找属组为指定为的GID号的文件
-nouser 查找没有属主的文件
-nogroup:查找没有属组的文件

根据文件类型查找
-type TYPE
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
p:管道文件
空文件或目录
-empty
示例:find/app -type d -empty

组合条件:
与:-a
或:-o
非:-not
排除目:-path
根据文件大小来查找:-size[+|-]#UNIT 常用单位:k,M,G,c(byte)

根据时间戳:
以天为单位
-atime[+|-]#
-mtime
-ctime
以分钟为单位
-amin
-mmin
-cmin

根据权限查找:
-perm [/]MODE
MODE:精确权限匹配
/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,
-MODE:每一类对象都必须同时拥有指定权限,与关系
0表示不关注
find -perm 755 会匹配权限模式恰好是755的文件
只要当任意人有写权限时,find -perm +222就会匹配
只有当每个人都有写权限时,find -perm -222才会匹配
只有当其它人(other)有写权限时,find -perm -002才会匹配

-print:默认的处理动作,显示至屏幕
-ls:类似与对查找到的文件执行"ls-l"命令
-delete:删除查找到的文件
-fls file:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND{}\;对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND{}\;对查找到的每个文件执行由COMMAND指定的命令
{}:用于引用查找到的文件名称自身

                                               参数替换xargs

                                              压缩、解压缩及归档工具

compress/uncompress
compress[-dfvcVr] [-b maxbits] [file...]
-d 解压缩,相当于uncompress
-c 结果输出至标准输出,不删除原文件
-v 显示详情
uncompress file.Z 解压缩
zcat file.Z 不显示解压缩的前提下查看文本文件内容

gzip/gunzip
gzip [OPPTION]..FILE
-d 解压缩,
-c 结果输出至标准输出,保留原文件不改变
-# 指定压缩比,#取值为1-9,值越大压缩比越大
gunzip file.gz 解压缩
zcat file.gz 不显示解压缩的前提下查看文本文件内容

bzip2/bunzip2/bzcat
bzip2[OPTION]...FILE...
-k 保持原文件
-d 解压缩
-# 1-9,压缩比,默认为9
bunzip2 file.bz2 解压缩
bzcat file.bz2 不显示解压缩的前提下查看文本文件的内容

xz/unxz/xzcat
xz [OPTION]...FILE...
-k 保留原文件
-d 解压缩
-# 压缩比,取值1-9,默认为6
unxz file.xz 解压缩
xzcat file.xz 不显示压缩的前提下查看文本文件内容

zip/unzip
打包压缩
zip -r /backup/sysconfig /etc/sysconfig/
解包解压缩
unzip sysconfig.zip
cat /var/log/messages | zip messages -
unzip -p message > message

                  tar工具

tar:磁带归档的缩写
tar [OPTION]
(1)创建归档,保留权限
tar -cpvf /PATH/FILE.tar FILE...
(2)追加文档至归档:(不支持对压缩文件追加)
tar -r -f /PATH/FILE.tar FILE
(3)查看归档文件中的文件列表
tar -t -f /PATH/FILE.tar
(4)展开归档
tar -x -f /PATH/FILE.tar
tar -x -f /PATH/FILE.tar -C /PATH/
(5)结合压缩工具实现:归档并压缩
-j:bzip2,-z:gzip,-J:xz

-exclude 排除文件
-T 选项指定输入文件 -X 选项指定包含要排除的文件列表
split:分割一个文件为多个文件

合并:
cat mybackup-parts*>mybackup.tar.gz

                         cpio

功能:复制文件从或到归档
cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以".cpio"或".tar"结尾的文件
cpio[选项] >文件名或者设备名
cpio[选项] < 文件名或者设备名
选项
-o 将文件拷贝打包成文件或者将文件输出到设备上
-O filename 输出到指定的归档文件名
-A 向已存在的归档文件中追加文件
-i 解包,将打包文件解压获奖设备上的备份还原到系统
-I filename 对制定的归档文件名解压
-t 预览,查看文件内容或者输出到设备上的文件内容
-F filename 使用指定的文件名替代标准输入或输出
-d 解包生成目录,在cpio还原时,自动的建立目录
-v 显示打包过程中的文件名称

                            文本三剑客sed

sed[option]...'script' inputfile
常用选项:
-n 不输出模式空间内容到屏幕,即不自动打印
-e 多点编辑
-f /PATH/SCRIP_FILE 从指定文件中读取编辑脚本
-r 支持使用扩展正则表达式
-i.bak 备份文件并原处编辑
script
‘地址命令’

                             sed工具

地址定界
(1)不给地址:对全文进行处理
(2)单地址:
#:指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行
(3)地址范围:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4)~:步进
1~2 奇数行
2~2 偶数行
编辑命令
d 删除模式空间匹配的行,并立即启用下一轮循环
p 打印当前模式空间内容,追加到默认输出之后
a[]text 在指定行后面追加文本,支持使用\n实现多行追加
i[]text 在行前面插入文本
c[]text 替换行为单行或多行文本
w /path/file 保存模式匹配的行至指定文件
r /path/file 读取指定文件的文本至模式空间中匹配到的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
s/// 查找替换,支持使用其他分隔符,s@@@,s###
替换标记
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中

猜你喜欢

转载自blog.51cto.com/14233394/2368260