linux 笔记--文件测试,特殊变量,sed命令,字符串测试及for循环

  • 文件测试(单目):
  • -e file:测试文件是否存在  -f file:测试文件是否为普通文件  -d file:测试文件是否为目录  -r file:测试当前用户对指定文件是否有读取权限  -w file:测试当前用户对指定文件是否有写入权限  -x file:测试当前用户对指定文件是否有执行的权限
  • 多分支的if语句:
  • if 判断条件; then
  • statement1
  • elif 判断条件2; then
  • statement2
  • elif 判断条件3; then
  • statement3
  • else
  • statement4
  • fi
  • 测试脚本是否有语法错误:
  • bash -n 脚本   bash -x 脚本(单步执行)
  • 位置变量:$1 $2 $3
  • 例:bash w.sh /etc/passwd /etc/fstab  脚本中 $1 :就表示为/etc/passwd  $2 :就表示为/etc/fstab
  • shift:轮替 (位置变量用过一次后就会踢出)  shift n(数字):可以跳n个位置
  • echo "$1"
  • shift
  • echo "$1"
  • shift 2
  • echo "$1"
  • 特殊变量:$?  $#(显示参数个数)  $*(显示参数列表)  [email protected](显示参数列表)
  • 例:if [ $# -lt 0 ]; then
  • 注: exit 返回码(错误):退出脚本 ,定义脚本退出状态码,如果脚本设有明确定义,退出状态码那么就时最后执行的一条命令的退出码,即为脚本的退出状态码。
  • sed基本用法:stream editor行编辑器,
  • -n:静默模式(不再默认显示模式空间的内容)  -i:修改源文件(一般不使用)  -e script -e script..:可以同时执行多个脚本  -f /path/to/sed_script: 使用正则表达式
  • sed是在一段内存空间(模式空间)中处理文件的,所以不会直接编辑源文件,然而,处理结束后,将模式空间的内容打印到屏幕上(所以有时候显示为重复的两行)
  • sed  address(地址)  command  file...
  • Address:
  • 1.startline,endline
  • 2./pattern(regexp)/
  • 3. /pattern1/,/pattern2/(第一次被1匹配到的行至第一次被2匹配到的行结束,中间的所有行)
  • 4.linenumber:指定的行,$:最后一行  $-1:倒数第二行
  • 5.startline,+n:从startline开始,向后的n行;
  • Commad:
  • d:删除符合条件的行(例:sed ‘1,2d’(双引号为变量引用)/etc/fstab)   p:显示符合条件的行  a\string:在指定的行后面追加新行(例:‘/^\//a \#....’/etc/passwd或/^\//a \#...\n...)  i \string: 在 指定的行前面追加新行   r file:将指定的文件的内容添加至符合条件的行出(例:sed ‘2r /etc/fstab’/etc/passwd)  w file: 将指定范围内的内容另存至指定的文件中(例:‘/root/w /etc/passwd’/etc/fstab)
  • s :查找并替换 s/pattern/string/ (例:s/^\//#/ /etc/passwd)默认只替换每行中第一次匹配到的字符串,加修饰符:g(全屏替换s///g)  i:忽略大小写 。(s除了///还可以使用###  @@@ 等...)  &:引用模式匹配整个串(sed ‘s#/r..t/#&r#g‘ /etc/passwd) 也支持后向引用 (sed ‘s#\(r..t\)#\1r#g’ /etc/passwd)  (只改变单个首字母:sed ‘s#r(..t\)#R\1#g’ /etc/passwd)  在4到末行的每行前面加eee:sed ‘4,$s/^.*/eee&/’***(若&eee则在每行后面添加eee)
  • 字符测试:
  • ==(或=) :比较,相等为真,不等为假 :[$A = $B]  != : 不等为真,相等为假  >  < >=  <=  -n string:测试指定字符串是否为空,空则真,不空则假  -z string:测试指定字符串是否为空,空则假,不空则真
  • for循环:进入条件,退出条件
  • for 变量 in 列表;do
  • 循环体
  • done
  • 生成列表;{1..100}
  • seq 10 : 1--10   seq 5 10: 5--10  seq2 2 10: 2 4 6 8 10  seq 1 2 10: 1 3 5 7 9
  • seq : 起始数  步进长度  结束数
  • declare -n(声明变量类型) Num=0   -x :环境变量
  • 例:LINE=`wc -l /etc/passwd | cut -d‘ ’ -f1`
  • for I in `seq | $LINE`; do
  • echo "###,`head -n $I /etc/passwd | tail -1 |cut -d: -f1`";done
时间: 2024-11-05 16:03:42

linux 笔记--文件测试,特殊变量,sed命令,字符串测试及for循环的相关文章

linux笔记 文件的压缩与解压缩gzip、bzip2、xz、zip&unzip、tar打包、tar打包和压缩并用

压缩文件意义节省网络传输带宽,降低磁盘使用率.但会使用一定的cpu. 1.gzip 不支持压缩目录,gzip后直接跟文件名,在当前目录下压缩时,原文件会消失. #gzip filename 指定压缩目录:#gzip -c 123.txt > /tmp/123.txt.gz 将当前目录下123.txt文件压缩到tmp目录下名字为123.txt.gz 解压缩:#gzip -d file.gz #zcat file.gz  查看.gz文件内容 2.bzip2 不支持压缩目录,bzip2后可直接跟文件名

马哥2016全新Linux+Python高端运维班-Linux vim 末行模式,sed命令,基本bash脚本

本周作业内容: 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#:%[email protected]^[[:space:]]\[email protected]#&@g384 substitutions on 384 lines#vim末行模式下%:表示全文相当于1,$s: 在末行模式下完成查找替换操作    s/要查找的内容/替换为的内容/修饰符    要查找的内容:可使用模式        替换

linux shell基础(五)sed命令(编辑中)

写shell有个步骤就是从一段文本中截取一段字符进行处理. 一.sed命令 sed是一种强大的流式编辑器 (stream editor for filtering and transforming text),它能够完美的使用正则表达式,逐行处理文本并把结果显示到屏幕上.sed的强项是替换文本中的特定字符. 用法:sed [选项]... {脚本(如果没有其他脚本)} [输入文件] sed [options] 'command' file(s) sed [options] -f scriptfil

linux 下文件重命名/移动/复制命令(转)

linux下重命名文件:使用mv命令就可以了, 例:要把名为:abc   重命名为:123 可以这样操作: 重命名:MV命令 1.进入你的文件目录,运行命令:   /cd  dir  (dir指的是你文件所在目录) 2.然后命令:ls (例出你的所有文件夹),我们可以看到有  abc 这个文件了 3.最后命令:mv abc 123 但是要注意的是,如果当前目录下也有个123的文件的话,我们的这个文件是会将它覆盖的. 拷贝复制:CP命令 例:我要把 abc文件复制到 语法: cp [选项] /x/

Linux - 查看文件信息的三个命令

ls命令 - list directory contents 显示文件详细信息:ls -l <file name> file命令 - determine file type determine file type :file <file name> output MIME type strings (--mime-type and --mime-encoding) :file -i <file name> stat命令 - display file or file sy

04.学习笔记-文件及文本管理常用命令

目录管理 ls.pwd.cd.mkdir.rmdir.tree mkdir:创建空目录 -p 如果创建目录的父目录不存在,创建父目录 -v 显示目录创建过程 例:[[email protected] /]# mkdir -pv /usr/bin/abc/a mkdir: 已创建目录 "/usr/bin/abc" mkdir: 已创建目录 "/usr/bin/abc/a" rmdir:删除目录且为最下层目录 -p 如父目录下无其他文件目录,则一并删除 -v 显示目录删

Linux下文件和目录管理常用命令(上)

cat命令 描述:连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于shell下的type命令. 注:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容.因此,一般用more等命令分屏显示.为了控制滚屏,可以按Ctrl+S键,停止滚屏:按Ctrl+Q键可以恢复滚屏.按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态. 语法:cat(选项)(参数) 常用选项: -n或-number:从1开始对所有输出的行编号: -b或--number-

linux笔记-多服务器同时执行相同命令

1.服务器的ip地址写到文件中,命名为nodelist.txt 192.168.1.160 192.168.1.166 2.编写运行脚本 for i in `cat nodelist.txt`do ssh [email protected]$i '要执行的命令'; done; 例 for i in `cat nodelist.txt` do ssh [email protected]$i 'echo hehe >> /usr/local/myjar/aaa.txt'; done; 功能是输出字

linux笔记三:grep和sed的用法

grep [option] Pattern [FILE...] -i:忽略大小写 --colour:用高亮的颜色显示 -v:显示没有被匹配到的行 -o:只显示被匹配到的字符串 -E:使用扩展正则表达式 -A #:包括后来多少行 -B #:包括前面多少行 -C #:包括前后多少行 扩展正则表达式: 字符匹配: . [] 如:a-z,A-Z [^] 次数匹配: *:其前字符任意次 ?:匹配其前面的字符1次或0次 +:匹配其前面的字符至少一次 {m,n}: 位置锚定: ^:锚定行首,此字符后面的任意内