2024年 06月 28日 星期五 10:42:33 CST
1.shell 脚本注意:

shell不支持多余空格,例如:
for i in {1, 2, 3}      ---->   for i in {1,2,3}
if [a lt b]             ---->   if [ a lt b ]
IP= "172.20.2.80"       ---->   IP="172.20.2.80"


2.sed 用法:

替换grub中序列号:
sed -ri "s/linx_serial=[0-9 a-z A-Z]* /linx_serial=$LINX_SERIAL100 /" /etc/default/grub
插入新行:
sed -i '2i nameserver 172.21.101.5' /etc/resolv.conf
打印行:
sed -n 1p
sed -n '/swap/p' /etc/fstab
设置ssh的root权限:
sed -i 's/#PermitRootLogin/PermitRootLogin/g' /etc/ssh/sshd_config
sed -i 's/prohibit-password/yes/g' /etc/ssh/sshd_config
#先搜索后替换:
sed -i '/address/s/'$ipo'/'$1'/g' $INTERFACES_CONF
sed -i '/swap/s/^/#/' /etc/fstab

 

数字和字符:

#! /bin/bash
a=10
b=20
#===============================数字运算==============================
val=$[a + b]
val=$[a - b]
val=$[b / a]
val = $[4*(a+b)]
#===============================数字比较==============================
if [ $a -eq $b ]; then
if [ $a -ne $b ]; then
if [ $a -gt $b ]; then
if [ $a -lt $b ]; then
#===============================数字比较==============================
a="abc"
b="efg"
if [ $a = $b ]; then
if [ $a != $b ]; then
if [ -z $a ]; then
   echo "-z $a : 字符串长度为 0"
if [ -n "$a" ]; then
   echo "-n $a : 字符串长度不为 0"
if [ $a ]; then
   echo "$a : 字符串不为空"

#======字符串包含======

    # 字符串不包含
    RESULT=`grep "172.21.101.5" /etc/resolv.conf`
    if [ -z "$RESULT" ]; then
            sed -i '2i nameserver 172.21.101.5' /etc/resolv.conf
    fi
    #字符串 包含
    RESULT=`grep "172.16.0.236" /etc/apt/sources.list`
    if [ -n "$RESULT" ]; then
    echo -e "\n\033[33m [INFO] ---------------查询成功--------------- \033[0m\n"
    return 1
    fi
    
strA="long string"
strB="string"
result=$(echo $strA | grep "${strB}")
    if [ -n "$RESULT" ]; then
        echo -e "\n\033[33m [INFO] ---------------查询成功--------------- \033[0m\n"
        return 1
    fi      
str='this is a tree! and that is a car.'
[[ $str =~ "this" ]] && echo "\$str contains this"

 

sed 用法:

sed -i "2i\sed add new line ---------" ./03.txt	      #第二行插入内容
sed -i '$a\server 172.22.15.100 iburst'  /etc/ntp.conf   #尾行插入内容

sed -i '/the new/d' 1.txt					#删除匹配行,包含the new 字符串的行
sed -i  '/xml/!d' a.txt					#删除不包含 xml 字符的行
sed -i '$'d  aa.txt				#删除末尾行
sed  -i  '2,$d' file					#删除文件的第2行到末尾所有行:

sed -i '4,7s/^/#/'  a.txt					#//注释文件4-7行(行前添加:#)
sed -i 's/xml/abc/g' a.txt					#将全文所有xml替换为abc
sed -i '/swap/s/^/#/' /etc/fstab				# 注释包含swap的行
sed -n '/swap/p' /etc/fstab

 nl testfile | sed -n '5,7p'	# 仅列出 testfile 文件内的第 5-7 行:
 nl testfile | sed -n '/oo/p'	# 搜索 testfile 有 oo 关键字的行:
 sed -n '/test/,/check/p' file    	#test和check所确定的范围内的行都被打印:
 
 sed -i '5c\No 2-5 number'  file    #将第五行修改为:新内容
 sed -i '2,5c\No 2-5 number'  file  #将2-5行修改为:新内容    

 

其它记录:

ls -l | awk -F " " '{print $3, $9}'        # 获取文件列表某列信息
dpkg -l | grep -w git                #只显示包含git单词的字符-w, --word-regexp
lspci | grep -i ether                # -i  忽略大小写
ps -ef | grep -w agent | grep -v grep            # -v 不显示 grep内容的文本行
grep -rl "" ./* | xargs sed -i 's/root/audadmin/g'         #替换文件内容
sed -i '/iface eth2/,/eth2/ s/eth2/eth3/g' ./interfaces        #sed 先搜索后替换,逗号分割 #替换指定行内容
批量操作:
ls *.tar.gz | xargs -n1 tar xzvf                      // n1 数字1
for tar in *.tar.gz;  do tar xvf $tar; done            # 批量解压文件
for ((i=5; i<10; i++)) ;do ping 172.20.11.$i -c 3; done
操作文件
caja ./        打开文件夹        ---linx-100系统
删除多个文件
   rm -rf step.{11..37}
删除其它文件:
   rm -rf !(step.1)
   rm -rf !(step.1 | step.2)
创建多个文件
   touch a{1..5}.txt
批量拷贝文件:
   find ./ -name "*.pdf" | xargs -i -t cp {} ../lats-doc/
批量修改文件内容:
   grep -rl "" ./* | xargs sed -i 's/root/audadmin/g' 

 

posted on 2024-05-30 11:21  天外来客I  阅读(11)  评论(0编辑  收藏  举报