Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本
来源:互联网 发布:威锋网的mac论坛 编辑:程序博客网 时间:2024/04/29 17:52
source
source /root/.bashrc #让修改后的配置文件在不重启系统的情况下生效。source等同于.
环境变量目录
/etc/profile/etc/profile.d/*.sh~/.bash_profile~/.bashrc/etc/bashrc
调用顺序如下图
/etc/profile的作用:USERLOGNAMEMAILPATHHOSTNAMEHISSIZEumask调用/etc/profile.d/*.sh
注销时候生效的环境变量配置文件:~/.bash_logout
其他配置文件:~/bash_history
终端欢迎信息
本地终端欢迎信息:/etc/issue
远程终端欢迎信息:/etc/issue.net
转义符在该文件中并不生效
要显示次欢迎信息需要在ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”。登录后的欢迎信息:/etc/motd。远程和本地终端都生效。
正则表达式
- 正则表达式用来匹配符合条件的字符串,是包含匹配,grep,awk,sed命令等支持正则表达式。
- 通配符用来匹配符合条件的文件名,是完全匹配,ls、find、cp等不支持正则,所以只能使用shell自带的通配符来进行匹配。
* #匹配前一个字符0次或任意次. #匹配除换行符外的任意一个字符^ #匹配行首$ #匹配行尾[] #匹配中括号中任意一个字符,只匹配一个字符。[^] #匹配不再中括号中任意一个字符,只匹配一个字符。 \ #转义符\{n\} #匹配前面的字符n次\{n,\} #匹配前面的字符至少n次 \{n,m\} #匹配前面的字符n次到m次
grep "a*" test.txt #匹配所有内容grep "aa*" test.txt #匹配至少含有一个a的行
cut
cut -f 2 student.txt #-f表示提取第几列cut -f 2,3 student.txt cut -d ":" -f 2,3 /etc/passwd #以某字符串分割
print,printf
printf 按格式输出
printf ‘输出类型输出格式’输出内容
printf ‘%s\t %s\t %s\t\n’ $(cat student.txt)
print命令在awk中会自动增加一个换行符。默认linux没有print命令
printf命令需要换行的话必须手工加入换行符。
awk
awk ‘条件1{动作1}条件2{动作2}……’ 文件名
awk 'BEGIN{print "welcome!!!"}{print $2"\t"$3}' student.txtdf -h | grep sda5 | awk '{print $5}' | cut -d "%" -f 1cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1"\n"}'#FS指定分割符,因为默认的是制表符和空格,不是的话需要指定。awk先读取一行,然后才开始格式化输出。加begin是把第一行也格式化输出。不然后第一行不会匹配预格式。cat student.txt | grep -v Name | awk '$6 >= 60 {print $2}'
sed
sed [选项] ‘[动作]’ 文件名
选项
选项-n: #一般的sed会把所有内容输出,加入此选项会把经过处理的行输出。例如 sed '2p' /etc/passwd 会输出所有的行,而 sed -n '2p' /etc/passwd 会输出第二行-e #允许对数据应用多条sed命令编辑-i #sed修改的结果直接应用于文件,而不是在屏幕上输出动作a #在当前行后添加一行或多行 如果是多行记得加上续行符号\c #用c后面的字符串替换原数据行i #在当前行前插入一行或多行d #删除指定的行p #输出指定的行s #字符串替换 例如:s/oldstr/newstr/gsed -n '2p' /etc/passwdsed '2immm' /etc/passwdsed -e 's/root//g;s/michael/leon/g' /etc/passwd
sort
sort [选项] 文件名选项-f #忽略大小写-n #以数值型进行排序,默认以字符串型-r #反向排序-t #指定分隔符,默认是制表符-k n[,m] #按照指定字段范围排序,从第n个字段开始,第m个字段结束,默认到行尾。sort -t ":" -k 3,3 /etc/passwdsort -n -t ":" -k 3,3 /etc/passwd
判断
[ -d /root ] && echo yes || echo no #判断/root是否存在并且是个目录-e 文件 #判断该文件爱你是否存在-f 文件 #判断该文件是否存在并且是普通文件。-s 文件 #判断文件是否存在并且非空-r 文件 #判断文件是否存在并且拥有读权限-w 文件-x 文件两种判断格式1. test -e /root2. [ -e /root ]文件比较文件1 -nt 文件2 #文件1的修改时间比2的新为真文件1 -ot 文件2 #文件1比文件2旧则为真文件1 -ef 文件2 #文件1和文件2的inode是否一样,可以理解为判断两个文件是否是同一个文件。整数判断整数1 -eq 整数2整数1 -gt 整数2整数1 -lt 整数2整数1 -ne 整数2 #不等于整数1 -ge 整数2 #大于等于整数1 -le 整数2 #小雨等于字符串判断-z 字符串 #字符串为空则真-n 字符串 #字符串非空为真字符串1 == 字符串2 #可以用一个等号,但是容易与赋值混淆字符串1 != 字符串2逻辑关系判断1 -a 判断2判断1 -o 判断2!判断例子:aa=12[ -n "$aa" -a "$aa" -gt 23 ] && echo yes || echo no
if、for、case
if [ 条件判断式 ];then 程序fi----------if [ 条件判断式 ] then 程序fi----------if [ 条件判断式 ] then 条件成立时,程序端 else 条件不成立时,程序端fi----------for i in $(cat ls.log) do tar -zxf $i & > /dev/null done----------for(( i=0;i<10;i++ )) do 程序 done----------case $变量名 in "值1") 程序1 ;; "值2") 程序2 ;; *) 默认程序 ;;esac
监控磁盘率使用情况
#!/bin/bashrate=$( df -h | grep /dev/sda5 | awk '{print $5}' | cut -d '%' -f 1 )if [ $rate -ge 80 ] then echo '/dev/sda5 is full'fi
备份mysql数据库
#!/bin/bashntpdate asia.pool.ntp.org &>/dev/nulldate=$(date +%y%m%d) # +%y%m%d 090902size=$(du -sh /var/lib/mysql) # du -s显示目录总大小 summaryif [ -d /tmp/dbbak ] then echo 1>/dev/null else mkdir /tmp/dbbakfiecho "Date:$date!">>/tmp/dbbak/dbinfo.txtecho "Size:$size!">>/tmp/dbbak/dbinfo.txtcd /tmp/dbbaktar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/nullrm -rf /tmp/dbbak/dbinfo.txt
判断apache是否启动
#!/bin/bashdate=$(date +%y%m%d) port=$(nmap -sT 192.168.1.156 | grep tcp | grep http | awk '{print $2}') #用nmap命令扫描服务器,截取apache状态,赋值给portif [ "$port"=="open" ] then echo "$date httpd is ok!" >> /tmp/autostart-acc.log else /etc/rc.d/init.d/httpd start &>/dev/null echo "$date restart httpd!" >> /tmp/autostart-acc.logfi
批量解压缩脚本
#!/bin/bashcd /lampls *.tar.gz > ls.logfor i in $(cat ls.log) do tar -zxf $i & > /dev/null donerm -rf /lamp/ls.log
批量添加指定数量的用户
#!/bin/bashread -p "user name:" -t 30 nameread -p "number of users:" -t 30 numread -p "passwd of users:" -t 30 passif [ ! -z $name -a ! -z $num -a ! -z $pass] then y=$(echo $num | sed 's/[0-9]//g') if[ -z $y ] then for(( i=1;i<=$num;$i++ )) do /usr/sbin/useradd $name$i &> /dev/null echo $pass | /usr/bin/passwd --stdin $name$i &> /dev/null done fifi
while until
while [ 条件 ] do 程序 done----------until [ 条件 ] do 程序 done
0 0
- Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本
- 正则表达式及grep、sed、awk、cut、sort、uniq工具
- Linux下正则表达式以及几种工具:grep,sed,awk,cut,sort,uniq的简单应用
- Linux 的(cut,sed,awk,grep,sort)
- Linux下的sed、awk、cut、sort、uniq工具
- Shell基础(四):正则表达式、cut、awk、sed命令
- 【shell脚本】常用工具的学习grep、sed、awk、cut
- Linux Shell脚本(正则/Sed/AWK)
- Linux 正则表达式 vi, grep, sed, awk
- 学习shell, 正则表达式, awk, sed
- shell中的grep,awk,sed,cut,sort
- 正则表达式、sed、awk
- shell脚本awk, sed, cut的妙用
- shell脚本知识(三) 正则表达式 grep sed awk
- shell学习笔记[grep,sed,awk,sort,for,until,while]
- Linux grep sed nl awk sort,uniq,cut,wc rsync命令详解
- awk、sed和正则表达式
- sed awk grep 正则表达式
- hadoop 2.6 运行找不到本地库的问题解决
- HDOJ-----3938---Portal并查集
- 中兴2017校招软件在线笔试题
- 字节码
- noip2011聪明的质检员
- Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本
- linux 信号量 同步多进程
- 手把手CollectionView
- 基于Qt的车载GPS监控系统(7)数据记录
- Linux的访问控制列表facl
- 优化Android Studio/Gradle构建
- Delphi函数
- fragment tabhost
- 关于float的二三事(一)