shell 常用命令

工作中shell脚本,经常用的语法,整理了下 
1 echo带色的 打印字符串带色(31红色,32绿色,33黄色,34蓝色) 
打印字符串背景带色 (40黑色,41红色,42绿色,黄色43,蓝色44,白色47) 
echo -e “\e[31;43m Hello Word\n Hello word \e[0m” 
echo -e “\e[31;43m Hello Word\n Hello word \e[0m” 
export PS1=”[\e[31;40m\u\e[0m \e[32;40m@\h\e[0m \e[33;40m\W\e[0m]2PATH的查找目录 
PATH=”PATH:/home/gongzuo/exportPATH3echo{#HOME} 
4 修改系统中的一些常用变量(如PS1)对所有用户永远生效 
vim /etc/profile 
PS1=”test@Chenyd” 
test@Chen_dd#source /etc/profile 
5 算术运算 
(1)echo [3+2]echo(( 3 + 2 )) 
(2)test@Chenyd>let a=4+3;echo atest@Chenyd>a=1;leta+=6;echo
(3)echo “3*4.12”|bc 
echo “scale=2;13/8”|bc ###scale设置精确到极为小数 
test@Chenyd>a=100;echo “obase=2;$a”|bc #####进制转化 
6 打印信息分类 
cat a.* 2>err.log 1>stbout.log ###标准输出重定向到stbout.log,标准错误重定向到err.log

7 数组 
a=(1 2 3) 
echo a[]echo{a[2]} 
echo a[1]8date+date+9@ 一次性打印所有参数,作为一个实体 
? 检测是否执行成功,成功打印0 
$# 总计几个参数

10 函数格式 
function test() 

echo “test test” 

test 
11 read 
(1)read -p “plesase input number” a 
echo a  
  (2)read -n 5 a #输入5个字符自动结束  
             echo

12 find命令 
find /root/cyd/ ! -name “*.sh” 
find . -maxdepth 2 -name test.sh #从当前目录向下查2级目录 
find . -mindepth 15 -name “*” #查看15级目录往后的所有 
find . -type d #列出从当前目录开始所有目录 (f 普通文件,c字符设备,b块设备,s套接字,p是FIFO) 
find . type f -atime -7 最近7天被访问过的文件(-mtime修改时间,-ctime变化时间) 
find . -type f -size +2M #打印大于2M的文件,(-2M 是小于) 
find . -name sum.sh -delete #找到并删除 
find /var/www/error/ -name “*.var” -exec cat {} \; #找出所有的error文件并cat 
find . -type f -name test.sh | xargs cat; #与exec类似 
find . -type f -name test.sh | xargs -0 rm -rf #-0是说明定界符是\0的 
13 tr命令(字符串替换) 
echo 123 |tr ‘0-9’ ‘9876543210’ #加密 
echo 123 |tr ‘9876543210’ ‘0-9’ #解密 
echo 12311aaaaaaaaa | tr -d ‘0-9’ #-d参数删除‘0-9’的字符 
14 sort和unqi 
cat a.txt |uniq -c|sort -r #去重复行并显示重复次数,逆向排序 
15 分割文件 
split -b 10k date.file #把date.file分割成多个10k大小的文件 
split -b 1k data.file -d -a 4 file #定义前后缀名 
16 批量重命名文件名 
find . -type f -exec rename ‘s/ /_/g’ {} \; #将当前目录中文件名中的空格替换为下划线 
eg: 
count=1 
for i in find . -iname "*.log" 
do 
new=error-countechoRenamei to newmvi $new 
let count++ 
done

17 dd命令(测试磁盘性能,备份数据,清除数据,写固定文件) 
dd if=/dev/zero of=test.file bs=1M count=1 
18 comm 对比两文件中字符的差异(默认输出3块,第一块是a中有的,第二是b中有的,第三是ab都有的) 
comm a b 
comm a b -1 -2 #删掉ab不同的字符,输出ab相同的字符 
comm a b -3 |sed ‘s/^\t//g’ #输出ab不同的字符,sed屏蔽字符前的空格 
19 环回文件系统 :指把一个文件格式文件系统后,挂载后使用(非实体硬件) 
20 wc命令 
cat file |wc -l #统计行数 
cat file |wc -w #统计单词数

21 正则 
^起始结束  [^ab]除ab之外的字符  [ab]a与b之间选一个  {n,m} 匹配n到m次  
   ? 匹配之前项0到1次       +匹配1到多次        *匹配0到多次  
22 grep使用正则(egrep和grep -E)  
   egrep –color=auto -n “W[Ei]+” /home/conf/bds-config.xml  
   egrep -o –color=auto -n “[0-9]{1,3}.[0-9]{1,3}.[0-9]{3}.[0-9]{1,3}” /home/bds/conf/bds-config.xml  #找出iP地址  
   grep 参数 -n打印前带行数  -c统计行数  -A 3 打印匹配字符之后的3行,-B 3打印字符匹配之前的3行, -V打印不包括字符的其他行  
   -A 1 添加—的定界符  
23 cut -d ’ ’  -f3   #-d添加定界符  -f显示第三列  
24 sed  
   sed ‘s/var1/var2/’ file  #替换每一行匹配的第一个匹配项  
   sed ‘s/var1/var2/g’ file #替换所有匹配的内容   
   sed ‘s/var1/var2/ng’ file #替换每行从匹配的第n处开始  
   sed ‘s/^
/d’ file #移除空白行 
sed ‘s/aa/&BB/’ file #&表示之前匹配到的字符。 
25 awk 
awk ‘BEGIN { print “start”} {print } END{print “end”}’ 
awk -F “:” ‘{ print $2 }’ #定界符 
26 dhclient em1 动态通过dhcp获取ip地址 
ifconfig |cut -c-10|tr -d ’ ’ |tr -s ‘\n’ #打印前10个字符,tr -d删除每行空格,tr -s 压缩空格行 
route add default gw 1.1.1.1 em1 
ping -c 2 #-c尝试2次

27 ssh 
ssh root@1.1.1.1 ‘command’ #直接传命令向远端服务器 
ssh root@1.1.1.1 -p 422 
28 lsof 
lsof -i:8080 
lsof -i 
29 套接字 
nc -l 1234 #监听服务器 
nc host—ip 1234 #连接端 
30 time 
time sh a.sh #记录a.sh执行完的时间 
31 last 列出上一次启动用户登录的信息 
lastb 登录失败的信息 
32 watch ‘ls -l’ #监控这个目录的文件, 
33 logrotate 将日志文件轮询限制在一定的大小里。 
34 ps -eo pcpu,pid, #e是every o是制定输出的列 
ps -eo comm,pid,pcpu –sort -pcpu|head -n 20 #sort对输出的列排序,+—— 是排序方式。 
  pgrep httpd #打印进程号 
35 kill 
pkill httpd #按进程名字kill 
36 top 
top -Hp pid -bn1|grep daemgr|awk '{print $(NF),$1,(NF-3),$(NF-2)}'   #实时提取top中pid该进程的command,pid,cpu%,mem% 
37 在shell中执行sql语句 
(1)mysql –user=root –password=passwddatabase=bdseselectfromsamplelimit102echoselectcount()fromsample|mysqlurootppasswd –database=bds 
(3)mysql正则的用法 
mysql -uroot -p$passwd –database=bds -e “select * from sample where sample_name REGEXP ‘[fav]orm*’”; 
select sample_name from sample where sample_name like ‘%ac%’; 
38 mysql基本语法 
1delete: DELETE FROM runoob_tbl WHERE sample_id=3; 
2update: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 
update tcphdr set sid=3 where cid=’39’; 
3insert:insert into samples values (‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’); #新增加一行,按列的多少和类型填入 
4alert:alter table aaa add age char; #新添加一列 
5 create database cyd; 
6 create TABLE CHEN (ID INT, NAMN CHAR, TIME DATE); 
7 select max(id) as max_id from aaa; #函数用法 
8 select * from aaa where name in (‘A’,’B’); #取出name是AB的行 
9 select SUM(id) as sum from aaa; 
10 select id from aaa order by id; 
11 select id from aaa order by id desc; #逆序排序 
12 select name,sum(sale) as total from aaa group by name; #按名字排序消费总和 
13 ELECT ns_app_ptl,count(ns_app_ptl) as count FROM network_session GROUP BY ns_app_ptl ORDER BY count asc limit 10; 
order by count asc 从小到大排序 
order by count desc 从conut列的大到小排序 
GROUP BY ns_app_ptl 按ns_app_pt1列中的类型统计计数。 
39 tcpdump 
tcpdump -i em4 dst port 25 or src port 25 
40 tcpreplay 
tcpreplay -i em2 smtp.pcap03 (em2和em3环起来,在em2回放,em3上去监听)

41 tar的打包与解包 
(1)打包:tar -z(j)cvf xxx.tar.gz /root/kaifa/* 
(2)解包:tar -zxvf xxx.tar.gz 
#####z表示有gzip属性,j表示有bzip2属性。c是create打包 v列出详情,r是追加(向已经有的压缩文件中加文件)f文件的名字(这个名字是自己定义的) + 打包的文件or目录 
(3) rar 压缩rar xx.rar *.jpg 
解包unrar e xx.rar 
(4) zip 压缩 zip xx.zip /home/kaifa/* 
解包 unzip xx.zip 
42 route (U 是路由,GU是网关) 
route按主机名称列出来 
route add default gw 192.168.1.2 
route -n 按网络地址列出来 
route add -net 10.11.1.0/8 gw 192.168.3.1 dev em1 添加路由 
route add -net 172.168.1.0 netmask 255.255.0.0 reject 添加拒绝路由 
route del -net 10.0.0.0 netmask 255.0.0.0 reject 删除拒绝路由

43 img转成qcow2 
qemu-img convert -f raw centos.img -O qcow2 centos.qcow 
44.exce和xargs 
[root@LanyEye cyd]# find ./ -type f|xargs ls -l 
[root@LanyEye cyd]# find ./ -type f -exec ls -l {} \; 
ps -ef | grep suricata |grep -v grep| awk ‘{print $2}’ | xargs -i kill {}

45 打印出16进制的

附:实例 
#扫描局域网中存活的主机个数 
#!/bin/bash 
#file-name:ip_scan.sh 
for ip in 192.168.9.{1..254}; 
do

   ping $ip -c 2  2>&1 >/dev/null
  if [ $? == 0 ]
  then 
  echo $ip >>alive.txt   #存活的主机写入alive文件
  else 
  echo $ip >>error.txt  #不存活的自己写入error文件
 fi
 done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值