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'