标签:more 变量作用域 安装 false clear inpu fun 布尔 web服务
命令 --help ls --help
当前路径
yum remove nano
[root@tongjc ~]# which python
/usr/bin/python
[root@tongjc ~]# echo "123|456|789" | awk -F ‘|‘ ‘{print $0}‘
123|456|789
[root@tongjc ~]# echo "123|456|789" | awk -F ‘|‘ ‘{print $1}‘
123
[root@tongjc ~]# echo "123|456|789" | awk -F ‘|‘ ‘{print $2}‘
456
[root@tongjc ~]# echo "123|456|789" | awk -F ‘|‘ ‘{print $3}‘
789
[root@tongjc ~]# echo "123+456-789" | awk -F ‘+|-‘ ‘{print $0}‘
123+456-789
[root@tongjc ~]# echo "123+456-789" | awk -F ‘+|-‘ ‘{print $1}‘
123
[root@tongjc ~]# echo "123+456-789" | awk -F ‘+|-‘ ‘{print $2}‘
456
[root@tongjc ~]# echo "123+456-789" | awk -F ‘+|-‘ ‘{print $3}‘
789
# 数据紧挨着
[root@tongjc etc]# cat passwd |awk -F ‘:‘ ‘{print $1$4}‘
root0
bin1
daemon2
adm4
lp7
sync0
shutdown0
halt0
mail12
# 数据以空格隔开 使用的是逗号
[root@tongjc etc]# cat passwd |awk -F ‘:‘ ‘{print $1,$7}‘
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
# 也可以"\t"分割 ,"\n"也可以 "--"自定义的符号也可以
[root@tongjc etc]# cat passwd |awk -F ‘:‘ ‘{print $1"\t"$7}‘
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
echo -e "1|2|3\n4|5|6\n7|8|9" | awk -F ‘|‘ ‘BEGIN{a=0}{a=a+$2}END{print a}‘
15
[root@tongjc home]# cat /etc/passwd | awk -F ‘:‘ ‘BEGIN{count=0}{name[count]=$1;count++}END{for(i=0;i<NR;i++)print i,name[i]}‘
0 root
1 bin
2 daemon
3 adm
4 lp
5 sync
6 shutdown
7 halt
8 mail
9 operator
10 games
11 ftp
12 nobody
13 systemd-network
14 dbus
15 polkitd
16 sshd
17 postfix
18 chrony
19 tss
从testerhome中取处赞数
a=`curl -s https://testerhome.com/topics | grep -o ‘href="/topics/[0-9]*"‘ | awk -F ‘/|"‘ ‘{print $4}‘`; for id in $a;do url=‘https://testerhome.com/topics/‘$id;zan=`curl -s $url | grep -o -m1 ‘[0-9]* 个赞‘`;if [ -n "$zan" ];then echo $url"有: " $zan;else echo $url"有: " "0 个赞";fi done | awk -F ‘/‘ ‘{print $NF}‘
https://testerhome.com/topics/23275有: 0 个赞
https://testerhome.com/topics/23192有: 0 个赞
https://testerhome.com/topics/23301有: 9 个赞
https://testerhome.com/topics/23362有: 0 个赞
https://testerhome.com/topics/23355有: 0 个赞
https://testerhome.com/topics/23326有: 0 个赞
https://testerhome.com/topics/23271有: 1 个赞
https://testerhome.com/topics/23266有: 0 个赞
写入shell脚本
#!/bin/bash
a=`curl -s https://testerhome.com/topics | grep -o ‘href="/topics/[0-9]*"‘ | awk -F ‘/|"‘ ‘{print $4}‘`
for id in $a
do
url=‘https://testerhome.com/topics/‘$id
zan=`curl -s $url | grep -o -m1 ‘[0-9]* 个赞‘`
if [ -n "$zan" ]
then
echo $url"有: " $zan
else
echo $url"有: " "0 个赞"
fi
done | awk -F ‘/‘ ‘{print $NF}‘
[root@tongjc ~]# grep "hello" 1
hellodssd ss
hello from tjc
[root@tongjc ~]# grep -i "hello" 1
HELLO FROM TJC
hellodssd ss
hello from tjc
[root@tongjc ~]# cat 1 | grep -o "hello"
hello
hello
. *
. 表示一个字符
* 表示任意多个字符
[root@tongjc ~]# echo abcdeee | grep -o "c.*"
cdeee
[root@tongjc ~]# echo abcdeeee | grep -o "c."
cd
[root@tongjc ~]# cat 1 | grep -i "hello"
HELLO FROM TJC
hellodssd ss
hello from tjc
curl -s http://www.baidu.com/s?wd=罗志祥 | grep "结果约"
[root@tongjc ~]# curl -s http://www.baidu.com/s?wd=罗志祥 | grep -o "结果约[0-9]"
结果约4
[root@tongjc ~]# curl -s http://www.baidu.com/s?wd=罗志祥 | grep -o "结果约[0-9]*"
结果约428
[root@tongjc ~]# curl -s http://www.baidu.com/s?wd=罗志祥 | grep -o "结果约[0-9,]*"
结果约428,000
[root@tongjc ~]# echo mp3 >> baidu.keyword
[root@tongjc ~]# echo 罗志祥 >> baidu.keyword
[root@tongjc ~]# echo 周扬青 >> baidu.keyword
[root@tongjc ~]# while read x;do echo $x;curl -s http://www.baidu.com/s?wd=$x;done < baidu.keyword | grep -o "结果约[0-9,]*"
结果约1,370,000
结果约425,000
结果约191,000
[root@tongjc ~]# echo "cat dog fish cat" | sed ‘s/cat/wulala/‘
wulala dog fish cat
[root@tongjc ~]# echo "cat dog fish cat" | sed ‘s/cat/wulala/g‘
wulala dog fish wulala
也可以使用#分隔
[root@tongjc ~]# echo "cat hello fish tjc --cat ;;cat" | sed ‘s#cat#hahaha#g‘
需要使用sed -i 来替换
[root@tongjc ~]# sed ‘s/mp3/AAAAAAAA/g‘ baidu.keyword
AAAAAAAA
罗志祥
周扬青
[root@tongjc ~]# cat baidu.keyword
mp3
罗志祥
周扬青
[root@tongjc ~]# sed -i ‘s/mp3/AAAAAAAA/g‘ baidu.keyword
[root@tongjc ~]# cat baidu.keyword
AAAAAAAA
罗志祥
周扬青
-i.bak 备份
[root@tongjc ~]# sed -i.bak ‘s/mp3/AAAAAAAA/g‘ baidu.keyword
[root@tongjc ~]# ll
总用量 10092
-rw-r--r-- 1 root root 61 4月 27 21:01 1
-rw-------. 1 root root 1202 3月 5 11:21 anaconda-ks.cfg
-rw-r--r-- 1 root root 10312541 4月 26 15:17 apache-tomcat-8.5.54.tar.gz
-rw-r--r-- 1 root root 29 4月 28 12:16 baidu.keyword
-rw-r--r-- 1 root root 29 4月 28 11:29 baidu.keyword.bak
# bash里还可以启bash
[root@tongjc ~]# echo $$
1040
[root@tongjc ~]# bash
[root@tongjc ~]# echo $$
1211
[root@tongjc ~]# exit
exit
[root@tongjc ~]# echo $$
1040
变量作用域只在子线程内 新进程
[root@tongjc ~]# a=222
[root@tongjc ~]# (a=1;echo $a);echo $a
1
222
#区别
[root@tongjc ~]# a=222
[root@tongjc ~]# { a=1;echo $a; };echo $a;
1
1
&
[root@tongjc ~]# sleep 10&
[1] 1421
[root@tongjc ~]# sleep 20&
[1] 1440
[root@tongjc ~]# jobs
[1]+ 运行中 sleep 20 &
[root@tongjc ~]# sleep 100
^Z[1] 完成 sleep 20
[2]+ 已停止 sleep 100
[root@tongjc ~]# bg 2
[2]+ sleep 100 &
[root@tongjc ~]# jobs
[2]+ 运行中 sleep 100 &
[root@tongjc ~]# sleep 100&
[1] 1466
[root@tongjc ~]# jobs
[1]+ 运行中 sleep 100 &
[root@tongjc ~]# fg 1
sleep 100
将前面输出结果作为输入 cat /root/home/test.json | more
配置文件 修改(百度) 然后重启ip service network restart
在~目录 vi .bash_profile
然后执行:source ~/.bash_profile
环境变量添加后,就可以在任意路径执行环境变量下的文件
更换centos的软件源
1.下载源仓库文件,xxx.repo,,curl -o /etc/yum.repos.d/ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2.将repo文件保存到/etc/yum.repos.d/目录中
3.让当前库文件生效 yum clean cache yum makecache
软件已经编译和打包,只需下载解压即可安装
软件按照redhat管理要求规范,RPM包进行发布,需要获取相应软件rpm包安装 有一个远程服务器,通过命令下载
rpm包已经在服务器 在线下载 安装 其他依赖包也会帮你下载下来
软件以源码工程的方式发布,需要获取源码进行编译安装
命令语言 程序设计语言 xx.sh
#!/bin/bash
echo hello
1.变量定义 a=1 等号两边不能有空格 a=1;b=2
echo $a 引用变量a
[root@tongjc ~]# a=‘hello world‘ 有空格必须带上引号
[root@tongjc ~]# echo a
a
[root@tongjc ~]# echo $a
hello world
2.单引号和双引号的区别 单引号中不能直接引用变量,会被当作字符串
[root@tongjc ~]# a="hello world"
[root@tongjc ~]# echo ‘xiaowang $a‘
xiaowang $a
[root@tongjc ~]# echo "xiaowang $a"
xiaowang hello world
3.变量引用最好{}
[root@tongjc ~]# a="hello world"
[root@tongjc ~]# echo $a_1
[root@tongjc ~]# echo $a _1
hello world _1
[root@tongjc ~]# echo ${a} _1
hello world _1
[root@tongjc ~]# echo ${a}_1
hello world_1
4.预定义变量
[root@tongjc ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@tongjc ~]# echo $PWD
/root
[root@tongjc ~]# echo $USER
root
#!/bin/bash
name="zhangsan" #等号不能空格
echo $name
echo ${name}
echo "你好"
5.数组
[root@tongjc ~]# a=(1 2 3 4 5)
[root@tongjc ~]# echo $a
1
[root@tongjc ~]# echo ${a[*]}
1 2 3 4 5
[root@tongjc ~]# echo ${a[@]}
1 2 3 4 5
[root@tongjc ~]# a=(1 2 3 4 5)
[root@tongjc ~]# echo ${a[-1]}
5
[root@tongjc ~]# echo ${a[-2]}
4
[root@tongjc ~]# echo ${#a[*]}
5
#!/bin/bash
array_name=(a b11111 c2)
echo ${array_name[1]} #取出index对应值
echo ${array_name[@]} #取出所有值 @ * 都可以
echo ${#array_name[@]} #打印长度
echo ${array_name[1]} #b11111的长度
6.命令的返回值赋给变量
[root@tongjc ~]# ls
anaconda-ks.cfg apache-tomcat-8.5.54.tar.gz home soft
[root@tongjc ~]# a=`ls`
[root@tongjc ~]# echo $a
anaconda-ks.cfg apache-tomcat-8.5.54.tar.gz home soft
[root@tongjc ~]# echo my dir is $(ls)
my dir is anaconda-ks.cfg apache-tomcat-8.5.54.tar.gz home soft #不是所有系统都支持
[root@tongjc ~]# a=(`ls`)
[root@tongjc ~]# echo $a
anaconda-ks.cfg
[root@tongjc ~]# echo ${a[*]}
anaconda-ks.cfg apache-tomcat-8.5.54.tar.gz home soft
7.特殊符号
[root@tongjc ~]# echo "a\nbb"
a\nbb
[root@tongjc ~]# echo -e "a\nbb"
a
bb
[root@tongjc ~]# echo "a\"bb"
a"bb
[root@tongjc ~]# a=1;b=2
[root@tongjc ~]# echo $((a+b))
3
[root@tongjc ~]# echo $(($a+$b))
3
#可以直接进行计算
[root@tongjc ~]# echo $((3+2))
5
[root@tongjc ~]# echo $((3/2))
1
[root@tongjc ~]# a=5
[root@tongjc ~]# ((a=a+5))
[root@tongjc ~]# echo $a
10
判断上一条命令是否成功 成功 ==0 ;;;如果不为0 都是失败的;;
[root@tongjc ~]# a=4;b=5
[root@tongjc ~]# ((a<b))
[root@tongjc ~]# echo $?
0
[root@tongjc ~]# ((a>b))
[root@tongjc ~]# echo $?
1
[root@tongjc ~]# true
[root@tongjc ~]# echo $?
0
[root@tongjc ~]# false
[root@tongjc ~]# echo $?
1
比较大小
eq 等于
ne 不等
ge 大于等于
gt 大于
le 小于等于
lt 小于
[root@tongjc ~]# [ 2 -eq 2 ];echo $?
0
[root@tongjc ~]# [ 2 -ne 3 ];echo $?
0
[root@tongjc ~]# [ 2 -le 3 ];echo $?
0
[root@tongjc ~]# [ 2 -lt 3 ];echo $?
0
[root@tongjc ~]# [ 4 -gt 3 ];echo $?
0
[root@tongjc ~]# [ 3 -ge 3 ];echo $?
0
逻辑判断
-a 与 相当于&&
[root@tongjc ~]# [ 4 -ge 3 -a 4 -lt 5 ];echo $?
0
-o 或 or
[root@tongjc ~]# [ 4 -ge 3 -o 7 -lt 5 ];echo $?
0
[root@tongjc ~]# a=1
[root@tongjc ~]# echo $((a++))
1
[root@tongjc ~]# echo $((++a))
3 # 上面a++已经为2了
小数运算
[root@tongjc ~]# echo $((2/3))
0
[root@tongjc ~]# awk ‘BEGIN{print 2/3}‘
0.666667
内置判断
-e 判断文件是否存在
[root@tongjc ~]# [ -e test ];echo $?
1
[root@tongjc ~]# [ -e soft ];echo $?
0
-d 判断是否子目录
-f 是否一个普通文件
-r 判断是否可读文件
-w 是否可写文件
-x 是否可执行文件
-s 是否非空文件
[root@tongjc ~]# s="hello from ttt"
[root@tongjc ~]# echo $s
hello from ttt
[root@tongjc ~]# echo ${s}
hello from ttt
[root@tongjc ~]# echo ${s:6}
from ttt
[root@tongjc ~]# echo ${s:6:3}
fro
[root@tongjc ~]# echo ${#s}
14
[root@tongjc ~]# echo ${s#hello}
from ttt
[root@tongjc ~]# echo ${s#*o}
#找到的第一个o,把他和之前的去掉
from ttt
[root@tongjc ~]# echo ${s#*m}
ttt
会一直匹配到最后一个
[root@tongjc ~]# s="hello from testerhome"
[root@tongjc ~]# echo ${s#*m}
testerhome
[root@tongjc ~]# echo ${s##*m}
e
[root@tongjc ~]# ^C
[root@tongjc ~]# s="hello from testerhome meew"
[root@tongjc ~]# echo ${s###*m}
hello from testerhome meew
[root@tongjc ~]# echo ${s##*m}
eew
#作为一个整体,引号引起来
[root@tongjc ~]# echo "${s##*m}"
eew
[root@tongjc ~]# s="hello from testerhome meew"
[root@tongjc ~]# echo ${s%meew}
hello from testerhome
[root@tongjc ~]# s="hello from testerhome meew"
[root@tongjc ~]# echo ${s%%o*}
# *是通配
hell
[root@tongjc ~]# echo ${s/tester/tongjc}
hello from tongjchome meew
#!/bin/bash
echo "获取脚本执行的参数:$0"
echo "获取第一个参数:$1"
echo "获取第二个参数:$2"
echo "获取参数的个数:$#"
echo "获取到的参数(str):$*"
echo "获取到的参数(每一个参数都是一个str):$@"
echo "获取当前进程的ID(PID):$$"
结果
[root@tongjc home]# sh test1.sh hh ss hah
获取脚本执行的参数:test1.sh
获取第一个参数:hh
获取第二个参数:ss
获取参数的个数:3
获取到的参数(str):hh ss hah
获取到的参数(每一个参数都是一个str):hh ss hah
获取当前进程的ID(PID):2091
#!/bin/bash
for i in "$*";do
echo $i
done
echo "---------------"
for i in "$@";do
echo $i
done
结果:
aa ss dd ww cc
---------------
aa
ss
dd
ww
cc
例子说明$* 代表一个整体(传入是一个整体) $@ 代表多个
for (());do
循环体
done
[root@tongjc ~]# for ((i=1;i<10;i++));do echo ${i};done
1
2
3
4
5
6
7
8
9
[root@tongjc ~]# for i in ${a[@]};do echo ${i};done
182
3
4
5
6
9
[root@tongjc ~]# for i in `ls`;do echo ${i};done
anaconda-ks.cfg
apache-tomcat-8.5.54.tar.gz
home
soft
if [ -n ]; #-n表示非空
then ...;
else ...;
fi
命令行中
[root@tongjc ~]# if [ -e test ];then echo exist;else echo not exist;fi
not exist
sh中
#!/bin/bash
if [ test "$1" -eq "$2" ];
then echo "相等";
else
echo "不等";
fi
[root@tongjc ~]# [ -e test ]&&echo exist || echo not exist
not exist
[root@tongjc ~]# [ -e soft ]&&echo exist || echo not exist
exist
while 条件
do
循环体
done
[root@tongjc home]# while [ $int -le 5 ];do echo $int;((int=int+1));done
1
2
3
4
5
#!/bin/bash
int=1
while(($int<=5))
do
echo $int
let "int++" 自增
done
将1中的内容重定向到循环体
[root@tongjc home]# while read x;do echo $x;done < 1
a
b
c
d
e
f
[root@tongjc home]# read -p "enter:" a;echo $a
enter:sss
sss
[root@tongjc home]# echo *
1 aa.txt bb.txt test test1.sh test2.sh test3.sh test4.sh test5.sh test6.sh test.json test.sh tjc.sh
[root@tongjc home]# for i in *;do echo ${i};if [ -f $i ];then break;fi;done
1
[root@tongjc home]# for i in *;do echo ${i};if [ -d $i ];then break;fi;done
1
aa.txt
bb.txt
test
[root@tongjc home]# for i in *;do if [ -d $i ];then echo $i is dir;else continue; fi;done
test is dir
[root@tongjc home]# for i in *;do if [ -f $i ];then echo $i is dir;else continue; fi;done
1 is dir
aa.txt is dir
bb.txt is dir
test1.sh is dir
test2.sh is dir
test3.sh is dir
test4.sh is dir
test5.sh is dir
test6.sh is dir
test.json is dir
test.sh is dir
tjc.sh is dir
[root@tongjc home]#
python -m CGIHTTPServer
通过访问192.168.198.102:8000 可以访问到我虚拟机的web服务。 192.168.198.102:8000/hh.html 可以访问到页面
[root@tongjc ~]# curl icanhazip.com
182.150.30.52
#!/bin/bash
gotest(){
echo "this is a test function"
read -p "var_1: " var_1
read -p "var_2: " var_2
if [ $var_1 -eq $var_2 ]
then
echo "var_1 == var_2"
elif [ $var_1 -lt $var_2 ]
then
echo "var_1 < var_2"
else
echo "var_1 > var_2"
fi
}
gotest
functest() {
echo "获取脚本执行的参数:$0"
echo "获取第一个参数:$1"
echo "获取第二个参数:$2"
echo "获取参数的个数:$#"
echo "获取到的参数(str):$*"
echo "获取到的参数(每一个参数都是一个str):$@"
echo "获取当前进程的ID(PID):$$"
echo "获取第十个参数:$10"
echo "获取第十个参数:${10}"
echo "获取第十一个参数:${11}"
}
functest p 2 3 4 5 a b c d e f g h
#结果
获取脚本执行的参数:./test1.sh
获取第一个参数:p
获取第二个参数:2
获取参数的个数:13
获取到的参数(str):p 2 3 4 5 a b c d e f g h
获取到的参数(每一个参数都是一个str):p 2 3 4 5 a b c d e f g h
获取当前进程的ID(PID):4670
获取第十个参数:p0
获取第十个参数:e
获取第十一个参数:f
while true
do
read -p "input:" input_v
if [ "quit" == ${input_v} ]
then
break
else
echo ${input}
fi
done
read -p "input" a
read -p "input" b
echo $(($a+$b))
echo $(($a*$b))
echo $(($a-$b))
echo $(($a/$b))
echo `awk "BEGIN{print \"$a\"/\"$b\"}"`
[root@tongjc home]# free -m
total used free shared buff/cache available
Mem: 1495 84 1317 8 92 1287
Swap: 819 0 819
标签:more 变量作用域 安装 false clear inpu fun 布尔 web服务
原文地址:https://www.cnblogs.com/tongjc-0901/p/12800210.html