寒假-8
不区分大小写判断yes y no n
[[ $ans =~ ^( Yy?)$ ]] [[ $ans =~ ^([Nn][Oo]?)$ ]] 防止扩展 加引号来防止所有扩展 单引号‘’防止所有扩展 双引号“”防止所有扩展,以下情况例外: $ `反引号 命令替换 禁止单个字符扩展 bash的配置文件 shell登录的两种方式 直接通过终端输入账号密码登录 使用 su - username 切换用户的情况 执行顺序: (初始化环境)/etc/profile --/etc/profile.d/*.sh -- ~/.bash_profile --- ~/.bashrc --- /etc/bashrc 非交互式登录 su username 切换用户的情况 图形界面下打开写终端 执行脚本 任何其他bash实例 执行顺序: (初始化环境) ~/.bashrc --- /etc/bashrc --- /etc/profile.d/*.sh Profile类、 bash 退出任务
注意:脚本里面不能识别别名,支持内部外部命令 source 不会开启子bash进行 ,脚本一般不会用,配置文件才会用,毕竟是影响此进程的 .vimrc 是vim的配置文件,不用用.去加载,vim 在打开的时候就已经执行加载了 *bash 如何开展命令行 文件的查找和压缩 locate eg: 搜索名称或路径中带有conf的文件 locate conf 使用Regex来搜索以.conf 结尾的文件 locate -r “.conf$” find 实时查找工具,通过遍历指定路径完成文件查找 指定文件名和inode查找 -name "文件名称" 支持使用glob 通配符 * ? [] [^] -iname “文件名称” 不区分字母大小写 -inum n 按inode号查找 -samefile name 相同inode号的文件 软连接 -links n 连接数为n的命令 -regex "PATTERN" 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称 指定属主、属组查找 -user USERNAME 查找属组未指定用户的文件 -group GROUPNAME 查找属组为指定组的文件 -uid UserID 查找属主为指定的UID号的文件 -gid GoupID 查找属组未指定的GID号的文件 -nouser 查找没有属主的文件 -nogroup 查找没有属组的文件 -ls 在最后可以显示长格式信息 指定文件类型查找 -type TYPE f 普通文件 d 目录文件 l 符号链接文件 s 套接字文件 b 块设备文件 c 字符设备文件 p 管道文件 空文件或者目录 -empty find /data -type d -empty 组合条件: 与 -a 默认也是与 或 -o 非 not ! 德摩根定律 (非A)或(非B) ==== 非(A且B ) (非A)且(非B) ==== 非(A或B ) eg: !A -a !B === !(A -o B) !A -o !B === !(A -a B ) 排除目录 -path "目录路径名字" -a -prune -o eg 查找/etc/下,除了/etc/sane.d目录的其他所有.conf后缀的文件 find /etc -path "/etc/sane.d" -a -prune -o -name "*.conf" 查找/etc/下,除了/etc/sane.d和/etc/fonts两个目录的其他所有.conf后缀的文件 find /etc ( -path "/etc/sane.d" -o -path "/etc/fonts" ) -a -prune -o -name "*.conf" 指定文件大小查找 -size [+ -] 常见单位k M G c(byte) 数字unit======(数字-1,数字] 6k==(5k,6k] -数字Unit=====[0,数字-1] -6k==(0,5k] +数字Unit=====(数字,无穷) +6k==(6k,无穷) 指定时间 以天为单位 -atime [+ -]数字 数字 [数字 到 数字+1) -数字 [ 0 到 数字) +数字 [数字+1 到 无穷) -mtime -ctime 以分钟为单位 -amin -mmin -cmin 指定文件属性 -perm [/ - ] MODE mode 精确匹配,不多不少 /mode 任何一类存在对应的权限即可,可以有多 -mode 每一类对象都必须同时拥有指定权限,也是可以多的 转换为二进制后,0表示不关心 eg find -perm 755 会匹配权限模式恰好是755的文件即rwxrwxrwx 111101101====rwxr_xr_x 只要当任意人有写权限时,find -prem /222 就匹配rwxrwxrwx 010010010====存在w w w即可 只有当每个人都有写权限时 find -perm -222 就会匹配 只有其他人有写权限的时候 find -perm -002 就会匹配 查找后的处理动作 find -name "f*" -ok mv {} { aa bb } find -name "f*" -exec mv {} {}.come ; 参数替换 由于很多命令不支持管道|来传递参数 所以xargs 用于产生某个命令的参数 xargs可以读入stdin的数据 并且以空格符或回车符将stdin数据分割成为arguments 注意: 文件名或者是其他意义的名词内含有空格符的情况 有些命令不能接受过多参数,执行命令可能会失败 xargs可以解决 eg: ls f* |xargs rm find /sbin -perm +700 |ls -l 命令错误,参数太多 find /sbin -perm +700 |xargs ls -l find 和 xarge格式 find | xargs COMMAND xargs -n数字 COMMAND 将参数一个一个传给COMMAND echo f{1..50} | xargs -n2 touch eg 备份配置文件,添加.orig这个扩展名 find -name "*.conf" -exec cp {} {}.orig ; 提示删除存在时间超过3天以上的Joe的临时文件 find /tmp -ctime +3 -user joe -ok rm {} ; 在主目录寻找可被其他用户写入的文件 find ~ -perm -002 -exec chmod o-w {} ; 查找/data 下的权限为644,后缀为sh的普通文件,增加执行权限 find /data -perm 644 -name "*.sh" -exec chmod +x {} ; 查找/home目录 find /home -type d -ls eg find -name snow.png find -iname snow,png find / -name "*.text" find /var -name "*log*" find -user joe -group joe find -user joe -not -group joe find -user joe -o -user jane find -not ( -user joe -o -user jane ) find / -user joe -o -uid 500 找出/tmp目录下,属主不是root 且文件名不以f开头的文件 find /tmp (-not -user root -a -not -name "f*" ) -ls 压缩 解压缩及归档工具 很多的都挑后缀名 gzip/gunzip gzip [option] file ... -d 解压缩 ======gunzip -c 将压缩或解压缩的结果输出到标准输出 -数字: 1-9 指定压缩比,壁纸越大压缩比越大 zcat 不显示解压缩的前提下查看文本条件内容 eg: gzip -c messages > messages.gz gzip -c -d messages.gz >messages zcat messages.gz >messages bzip2/bunzip2 bzip [option] file ... -k keep 保留原文件 -d 解压缩 -数字 1-9,压缩比,默认为9 bzcat 不显示解压缩的前提下查看文本条件内容 xz/unxz/xzcat xz [option] file .... -k keep保留原文件 -d 解压缩 -数字 1-9 压缩比,默认为6 xzcat 不显示解压缩的前提下查看文本条件内容 注意: 上面都可以多个压缩文件,不过是分别压缩 顺序压缩比越高 zip/unzip 打包压缩,解包解压缩 多用于Windows 打包压缩 zip -r /tesdir/sysconfig.zip /etc/sysconfig 一定要加目的文件名 后缀不用加也会自动生成 解包解压缩 unzip sysconfig.zip cat /var/log/messages | zip messages - unzip -p message > message 打包工具tar Tape ARchive 磁带归档 cpio cpio [option] > 文件名或设备名 cpio [option] > 文件名或设备名 选项: -o 将文件拷贝打包成文件或者将文件输出到设备上 -i 解包,将打包文件解压或者将设备锁的备份还原到系统 -t 预览,查看文件内容或者输出到设备上的文件内容 -v 显示打包过程中的文件名称 -d 解包生成目录,在还原时,自动的建立目录 -c 较新的存储方式 eg: 将etc目录备份:find ./etc -print | cpio -ov >etc.cpio 内容预览: cpio -tv < etc.cpio 解包文件: cpio -idv <etc.cpio 注意,打包的时候,如果里面是绝对路径,那么解包的时候只能解压到里面的绝对路径 文本处理工具sed Stream EDitor 行编辑器 用法: sed [option]... ‘script‘ inputfile 常用选项: -n 不输出模式空间内容到屏幕,即不自动打印 -e 多点编辑 -f /path/script.file 从指定的文件中读取编辑脚本 -r 支持使用扩展正则表达式 -i.bak 备份文件并原处编辑 .bak 可以自己定义备份后缀 script: ‘地址命令‘ 地址定界: 不给地址 对全文进行处理 单地址: num 指定的行 $ 最后一行 /pattern/ 被此模式所能够匹配到的每一行 地址范围: num1,num2 num1 行到num2行 num1,+num2 num1 行到 num1+num2 行 /pat1/,/pat2/ 匹配到pat1的行到匹配到pat2的行 num,/pat/ num 行到 匹配到pat 的行 ~步进: 1~2 奇数行 2~2 偶数行 4~2 4行开始的偶数行 编辑命令: d 删除模式空间匹配的行,立即启用下一轮循环 p 打印当前模式空间内容,追加到默认输出之后 a []text 再指定行后面追加文本 表示文本的开始,行首希望有空格可以使用 支持使用n实现多行追加 i []text 在 行前面插入文本 c []text 替换行为单行或多行文本 w /path/somefile 保存模式匹配的行至指定文件 r /path/somefile 读取指定文件的文本至模式空间中 匹配到的杭后 = 为模式空间中的行打印行号 ! 模式空间中匹配行取反处理 注意: p 和 = 不能同时使用 s/// 查找替换,支持使用其他分隔符 [email?protected]@@,s### 替换标记: 放在最后 g: p: 高级编辑命令 P 打印模式空间开端至n 内容,并追加到默认输出之前 h 把模式空间中的内容覆盖至保持空间中hold space H 把模式空间中的内容追加至保持空间中 g 从保持空间取出数据覆盖至模式空间 G 从保持空间取出内容追加至模式空间 x 把模式空间中的内容与保持空间中的内容进行互换 n 读取匹配到的行的下一行覆盖至模式空间 N 读取匹配到的行的下一行追加到模式空间 d 删除模式空间中的行 D 如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本 并不会读取新的输入行 而使用合成的模式空间重新启动循环。 如果模式空间不包含换行符,则会像发出d命令那样启动正常的新循环 简单eg: sed ‘/^$‘/d‘ file 删除空行 sed ‘1,10d‘ fiel nl /etc/passwd | sed ‘2,5d‘ nl /etc/passwd | sed ‘2a tea‘ sed ‘s/test/mytest/g‘ exmple sed -n ‘s/root/&diaoshinan/p‘ /etc/passwd sed -n ‘s/root/diaoshinan&/p‘ /etc/passwd sed -e ‘s/dog/cat/‘ -e ‘s/hi/lo‘ pets sed -i.bck ‘s/dog/cat/g‘ pets sed -n ‘n;p‘ f1 sed ‘1!G;h;$!d ‘ FILE 倒叙显示可以用tac sed ‘N;D ‘ file 流出追后一行 sed ‘$!N ;$!D‘ file sed ‘$!d‘ file sed ‘G‘ file sed ‘g‘ file sed ‘/^$d/d;G‘ file sed ‘n;d‘ file sed -n ‘1!G;h;$p‘ file eg: ls *.rpm | sed -r ‘s/.*.(.*).rpm$/1/‘ |sort |uniq -c zziplib-utils-0.13.62-5.el7.x86_64.rpm ls *.rpm | sed -r ‘s/.*.([^.]+).rpm$/1/‘ |sort |uniq -c ls *.rpm | rev |cut -d. -f2 |rev | sort |uniq -c 其中rev可以水平翻转显示文本 awk 显示某个范围的内容:awk ‘NR==1,NR==6 {print NR $0}‘ passwd 注意:NR==1用的是两个等于号,默认加上行号 awk里的查找替换功能 gsub函数 格式:gsub(“替换对象”,“替换成为什么内容”,哪一列) 注意:gsub后面接的括号是没有空格,内容逗号隔开 awk ‘{gsub("/sbin/nologin","/bin/bash",$0);print $0}‘ passwd [root加CentOS6油 data]$ifconfig |awk -F "(addr:)|(Bcast)" ‘NR==2{print $2}‘ 192.168.125.136 md5sum计算和校验文件MD5值 生成一个MD5值 md5sum oldboy.text chpasswd可以批量为以存在的用户实现犯法:将设置的内容按照格式写下:用户名:口令chpasswd < 密码文件 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- shell – 如何在zip压缩文件中列出文件而不解压缩
- scala – Serializable和AnyVal
- 如何在Play Framework(2.0版,使用Scala)中测试期
- 利用axis2调用带用户名和密码的webservice接口实
- 使用Azure静态Web应用部署Blazor Webassembly应用
- angularjs – 在ng-grid中向页脚添加总行数
- Scala适用于没有参数
- 设计一个美好的服务器--MINA、CXF、Mule、JBoss/
- twitter-bootstrap – 使用bootstrap select插件
- Webservice 用http get方式无法请求到的解决办法