ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell笔记

2022-06-24 16:02:17  阅读:179  来源: 互联网

标签:shell string chars 笔记 echo sh awk


1 && ||
ping -c1 www.baidu.com && echo "ok" || echo "no"
2. expect perl java python shell
3. cat 1.txt >> 2.txt
4. python << -EOF(JWW)
print "hello"
EOF
5. ./2.sh 子shell执行
. 2.sh source 2.sh 当前shell执行
6. /etc/profile 系统
/etc/bashrc
~/.bash_profile 用户级
~/.bashrc
~/.bash_logout 离开的时候执行
~/.bash_history
7. login shell {/etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc}
nologin shell {/etc/bashrc ~/.bashrc}
8.cat /etc/shells
9. !1020 指定历史命令
10. histroy shell历史命令
11 head 命令?
12 !string eg: !da 找到最近的一条以da开头的命令
13 !$ 上一条命令的最后一个参数
14 !! 上一条命令
15 nohup sleep 10 &
16 screen
17 fg %1 bg %1 kill %3
18 cat <1.txt >2.txt
19 cat <<-EOF >file
...
...
EOF
20.管道 tee
21 cd #到家目录
22 ; 间隔两条命令 cd /home/444; ls 没有逻辑判断
23 && || 具备逻辑判断 ./configure && make && make install
24 true 返回真 false返回假
25 &> 混合重定向
26 [abc] 匹配一个
?1个
* 任意多个
() 在子shell执行
\ 转义
27 umask
28. mkdir -pv /home/{333/{aaa,bbb},444}
29. cp -rv ./memcmp.c{,.old}
30. echo -e "\e[1;31mThis is a red text."
echo -e "\e[1;30mThis is a red text."
echo -e "\e[1;32mThis is a red text."
echo -e "\e[1;33mThis is a red text."
echo -e "\e[0m"
echo -e "\e[1;30mThis is a red text.\e[0m"
颜色30几 背景色40几
31 printf
32.type -a [
33 export 环境变量 在当前shell和子shell中生效
自定义变量在当前shell生效
34 ./ping.sh 是在子shell执行
35 echo ${#ip} 显示变量的长度
36 env 所有的变量
37 $1 命令行参数
38 预定义变量
$0 脚本名
$* 所有的参数
$@ 有的参数
$# 参数的个数
$$ 当前进程的pid
$! 上一个后台进程的pid
$? 上一个命令的返回值 0表示成功
39. basename dirname mingl
40 ``命令替换=$()
41 read -n2 只读取前面的2个字符
read -t5 = read -t 5 #等待5s,没有用输入就返回
read name sex age 可以读取多个变量
42 ""弱引用 ''强引用
43.date +%F
44 整数运算
expr $num1 + $num2
$((num1+num2))
$[]
let num=1+2
45 free -m |grep 'Mem:' | awk '{print $3}'
46 bash -vx 1.sh #调试的模式执行
47 小数运算
echo "2*4" |bc
echo "2^4" |bc
echo "scale=2;6/4" |bc
awk 'BEGIN{print 1/2}'
grep 'ServerIp1' iptvconfig.ini | awk -F"=" '{print $2}'
echo "print (5.0/2)" |python3
48 内容删除
url=www.sina.com.cn
echo ${url#www.}#删除www.
echo ${url#*.}#删除到. 最短匹配
echo ${url##*.}#删除到最后一个. 贪婪匹配
echo ${url%.*}从后往前删到. www.sina.com
索引及切片
echo ${url%%.*}从后往前删到最后一个. www
echo ${url:0:5} #0标识开始索引,5标识长度,长度省略就取到最后
替换 / //
echo ${url/sina/baidu}
echo ${url//n/N}
替代 - :-
-没有定义过的变量会替代,定义过的变量就不能替代
echo ${var1-11111}
:-变量没有被赋值或空值会替代,被赋过值不会替代
echo ${var:-222}
扩展+ :+ = := ? :?
49 unset var 重置变量
50 []条件判断 -z 长度为0
51调试
sh -n 1.sh 仅调试语法错误
sh -vx 1.sh 以调试的方式执行,查询整个执行过程
52 test -d /home/xpy echo $?
53. 字符串习惯性加上双引号
54.seq
55. 正则表达式 ^[0-9]+$ ^开头 +前面字符有1到多个 $结尾
56 declare 定义类型
57 单方括号不支持表达式,要使用2个方括号 [[ $num =~ ^[0-9]+$ ]]
=~正则匹配
58. case var in
模式1)
command1
;;
模式2)
command2
;;
模式3)
command3
;;
*)
command4
esac
59. command -v
60 true = :
61 脚本自启动把脚本的路径放在.bash_rc 或.bash_profile
62 trap 捕捉信号
63 echo -n 不换行
64 函数跟c类似 func () {}
65 uptime
free -m
66 clear = ctrl + l
67 until false
68 设置dns /etc/resolv.conf
nameserver ****
69 systemctl status httpd
70 ss -tnlp |grep vsftpd
netstat -tnlp |grep vsftpd
71 IFS=$'\n' 更换分隔符
72 echo "$ip" tee -a ip.txt
73 for i in {2..254}
74 >ip.txt 清空文件
75 ping -c1 -W1 ip
76 多个语句{}& 后台运行
77 wait 等待后台进程执行结束
78 time commad
79 printf" ip:$ip"
80 seq -w $num
81 echo "$line" |awk '{print $1}'
82 for是按照空格或tab分割的 #不适合处理文件
83 `` = $()
84 ssh $ip "sed -ri '/^#UseDNS/cUseDNS no' /etc/ssh/sshd_config"
85 在命令行下验证, ssh $ip "grep 'DNS' /etv/ssh/sshd_config"
86 while read user #适合处理文件,以行为单位。所以要单独处理空行
do
useradd $user
done < user.txt
87 until 和while完全相反 条件为false一直循环,为真则退出
88 shell并发控制
ll /proc/$$/fd (ubuntu暂时没找到对应的目录)
exec 6<>file 打开一个文件
exec 6<&- 关闭文件描述符为6的文件
当一个文件描述符未被释放,即使删除文件,这个文件还在/proc/$$/fd
lsof 列出打开的文件
89 mkfifo fifo1 命名管道可以跨终端,并且读取一次就没有了
匿名管道不可以跨终端
90 echo >&8 #往8文件描述符里放一个换行 &8标识文件描述符为8的文件
read -u 8
91 vim set list 看是空格还是tab
92 /usr/bin/expect <<-EOF <<之后不能有空格
93 ssh-copy-id ip
94 shell 关联数组
declare -A info1
info1=([name]=tianyun [sex]=male [age]=36 [height]=170) 需要先声明
echo ${info1[name]} #访问一项
echo ${info1[@]} #访问所有 = echo ${info1[*]}
echo ${#info1[@]} #数组的个数
echo ${!info1[@]} #数组的索引
95 declare -a
96 array=(1 2 3 4 5 6 7 "linuxshell" [20]=saltstack) #可以切片
echo ${array[@]:6:2} 7 linuxshell
echo ${array[@]:6:3} 7 linuxshell saltstack
97 OLD_IFS=$IFS
IFS=$'\n'
IFS=$OLD_IFS
98 watch -n1 a.sh #1s监控脚本的结果
99 vim ctrl+v y p #复制部分行
100 shell 函数
函数名(){}
function 函数名{}
101 for((i=1;1<=10;i++))
-------------------------------------
102 ed行编辑器
eg:ed back.c
显示文件的字节数,包括字符串结尾标志
n:显示第n行的内容
103 统计最后一列的个数
awk -F: '{shells[$NF]++} END{for(i in shells) {print i, shells[i]}}' passwd
104 wc -l file #统计文件中有多少行
105 awk使用外部变量,双引号的使用情况
var="bash"
echo "unix script" | awk "gsub(/unix/, \"$var\")"
awk使用外部变量,单双引号的使用情况
var="bash"
echo "unix script" | awk 'gsub(/unix/, "'"$var"'")'
106 int()取整数部分
df -h | awk '{ if(int($5)>10){print $6,$5}}'
107 awk参数-v, 注意变量var不用$
echo "unix script" | awk -v var="bash" 'gsub(/unix/, var)'
108 实战
1)查看CPU利用率与负载(top, vmstat, sar)
2)查看磁盘,inode利用率与i/o负载(df, iostat, iotop, sar, dstat)
3)查看内存利用率(free, vmstat)
4)查看cpu与内存占用最高的10个进程(top, ps)
5)查看网络流量(ifconfig, iftop, iptraf)
109 PS1# PS2 '>'
PS3#脚本中的提示符
110 select i in cat tiger duck pig
do
case "$i" in
cat)
command
;;
tiger)
command
;;
quit)
break
;;
*)
echo "error"
exit
;;
esac
done
111 打印第一列 cut -d' ' -f1== awk '{print $1}'
112. ping -s 6000 ip
113. chattr +i /etc/resolv.conf
i:不得任意更动文件或目录
114 ll -t;ll -rt
115 tree
116 截取字符串
${string: start :length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${string: start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string: 0-start :length} 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。
${string: 0-start} 从 string 字符串的右边第 start 个字符开始截取,直到最后。
${string#*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string##*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string%chars*} 从 string 字符串最后一次出现 *hars 的位置开始,截取 *chars 左边的所有字符。
${string%%*chars*} 从 string 字符串第一次出现chars 的位置开始,截取 *chars 左边的所有字符。

117 shell读文件的三种方法
while read line
do
echo $line
done < filename
------------------
cat filename | while read line
do
echo $line
done
-----------------------
for line in `cat filename`
do
echo $line
done
-----------------------
116 nginx -v
sudo service nginx start
sudo service nginx stop
sudo nginx -s reload

 

标签:shell,string,chars,笔记,echo,sh,awk
来源: https://www.cnblogs.com/xpylovely/p/16409187.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有