`
qindongliang1922
  • 浏览: 2145553 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116271
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124527
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58387
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70318
社区版块
存档分类
最新评论

shell脚本杂记(一)

阅读更多


1,登陆系统时,$代表普通用户,#代表管理员用户
2,执行多个命令时cmd1;cmd2 使用分号隔开
3,ehco -e "abc\nabc"  转换转义字符,会生成两个换行
4,拼接环境变量例子:export PATH="$PATH:/home/user/bin"
5,获取字符串的长度:
[root@ganglia ~]# var="abc" ; echo ${#var}
3
[root@ganglia ~]# var="abdc" ; echo ${#var}
4
[root@ganglia ~]# var="中国人" ; echo ${#var}    
3
[root@ganglia ~]# 


5,识别当前的shell:
[root@ganglia ~]# echo $SHELL
/bin/bash
[root@ganglia ~]# echo $0
-bash
[root@ganglia ~]# 

6,检测当前的用户是否为超级用户:
if [  $UID -eq 0 ] ; then
echo "是root用户"
else
echo "不是超级用户"

fi


超级用户的UID为0

7,定义别名,查看别名使用alias -p,定义别名的例子:alias cp='cp -i'

8,tput cols 和tput lines 分别是获取终端的行数和列数,tput longname获取终端名字

9,
(1)获取日期date
(2)打印纪元时,date+%s
(3)检测一组命令花费时间可用如下的代码:
start=$(date +%s)

echo "哈喽"
sleep 3

end=$(date +%s)


r=$(( end - start  ))


echo "程序花费时间为$r秒"




10,调式脚本bash -x script.sh
11,
(1)不使用回车键来读取n个字符,read -n 2 var
(2)用无回显的方式读取密码: read -s var
(3)显示提示信息: read -p "请输入: " var
(4)在特定时间内读取输入: read -t time var
(5)用特定的定界符作为输入行的结束: read -d ":" var ,当用户在控制台输入冒号时这个输入就代表结束了


12,比较测试

eq 等于
ne 不等于
gt 大于
lt 小于
ge 大于或等于
le 小于或等于
-a 逻辑与
-o 逻辑或
判断字符串相等使用 [[ $a = $b  ]] 也可以 [[ $a == $b]]
不相等使用  [[$a  !=  $b ]]


13,文件系统测试

-f 是否为文件
=x 可执行
-d 是否为目录
-e 是否存在
-c 是否为字符设备
-b 块设备
-w 文件可写
-r 文件可读
-L 是否为符号链接



14,
cat拼接文件 cat file1 file2 ....
cat -s 忽略多余的空行
cat -n 打印行号

15,录制脚本使用序列
script -t 2> timing.log -a output.session
播放序列:
scriptreplay timing.log  output.session

16, find . -print 打印文件和目录列表
find /home -name "*.txt -print 通配符打印
find . -iname "abc* -print 忽略大小写
查找两个文件 find . \( -name "*.txt" -o -name "*.pdf" \) -print
find /home -path "*/abc/*" -print 可以在路径里面查找,-name可以在文件名里面查询

除此之外还支持,正则查询


find ! -name "*.txt" -print 排除用法


find . -maxdepth 1 -name "f*" -print 基于深度的查询

find . -mindepth 1 -name "f*" -print 基于深度的查询

find . -type d -print 按文件类型过滤

f 普通文件
l 符号链接
d 目录
c 字符设备
b 块设备
s 套接字
p fifo

按时间搜索
-atime 用户最近一次的访问时间
-mtime 文件内容最后一次被修改的时间
-ctime 文件元数据最后一次变化的时间

find . -type f -atime -7 -print 最近7天,访问过的文件

find . -type f -atime 7 -print 恰好7天访问的文件


find . -type f -atime +7  -print  超过7天 访问过的文件


-amin 访问时间
-mmin 修改时间
-cmin 变化时间

find . -type f -amin +7 打印访问时间超过7分钟的



find . -type f -newer file.txt -print 打印比file.txt修改时间更近的文件


按文件大小查询

b 块 512字节
c 字节
w 字 2字节
k 1024字节
M 1024k字节
G 1024M字节

find . -type f -size +2k 查找大于2kb的文件

find . -type f -size -2k 查找小于2kb的文件

find . -type f -size 2k  查找等于2kb的文件



查找并删除文件:


find . -type f -name "*.txt" -delete


find . -type f -perm 644 -print 查找权限的匹配


find . -type f -user search -print 查找用户search下的文件


下面来看下xargs来格式化,参数:

[root@ganglia 912]# cat aa.txt 
1 2 3 4 5 6
7 8 9 10
11 12
[root@ganglia 912]# cat aa.txt | xargs
1 2 3 4 5 6 7 8 9 10 11 12
[root@ganglia 912]# cat aa.txt | xargs  -n 3
1 2 3
4 5 6
7 8 9
10 11 12
[root@ganglia 912]# 


[root@ganglia 912]# echo "anbnc" | xargs -d n
a b c

[root@ganglia 912]# 


使用-d命令,自己指定定界符

[root@ganglia 912]# echo "anbnc" | xargs -d n -n 1
a
b
c

[root@ganglia 912]# 


-n可以指定每行显示几个字符



下面看下tr命令


转换大小写
[root@ganglia 912]# echo "i am CAT" | tr 'A-Z' 'a-z'
i am cat
[root@ganglia 912]# 



加密映射:
echo "12354" | tr '0-9' '987456213'
解密
echo "12354" | tr '987456213' '0-9‘


删除指定内容集合

[root@ganglia 912]# echo "cat 12 adf  3 " | tr -d '0-9'
cat  adf   
[root@ganglia 912]# 






16 , 文件校验和 md5sum

17, 排序,去重,统计 sort , uniq , c

18,随机数命令  mktmp test.XXXXX

19,分割文件 split 可以按大小和行数

20,利用多进程并行提高执行效率

[root@ganglia 912]# cat bcc.sh 



#存储进程号数组
PIDS=()


for file in a.txt b.xt 
do

#生成md5校验和
md5sum $file &


#获取进程号,存进数据
PIDS+=("$!")



done


#阻塞等待所有任务完成
wait ${PIDS[@]}
[root@ganglia 912]# 
































1
0
分享到:
评论

相关推荐

    LinuxShell脚本学习基础视频

    资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...

    Shell脚本中获取进程ID的方法

    当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。 在某些情况下,你也许想要知道运行中的子shell的PID。这个PID...

    250个shell脚本

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来...

    shell 脚本shell 脚本shell 脚本

    shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本

    shell脚本大全

    shell脚本大全

    Linux_shell脚本全面学习

    Linux_shell脚本全面学习 Linux_shell脚本全面学习

    Shell脚本编程100例

    Shell脚本编程100例。 融汇 shell 脚本知识点,集大成之作。 本书实在是学习、进修、面试、居家旅行必备精品!

    shell脚本写的加密脚本

    学习shell脚本,了解linux知识。

    Linux shell 脚本 markdown文本编辑

    有关几个shell脚本的编写,如:编写一个shell脚本程序,它带一个命令行参数,这个参数是一个文件。如果这个文件是一个普通文件,则打印文件所有者的名字和最后的修改日期...加入了自己的注释理解

    python编写shell脚本

    python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本

    Shell脚本专家指南

    Shell脚本专家指南》旨在为Linux、Unix以及OSx系统管理员提供短小精悍且功能强大的shell实现解决方案,教会读者如何使用现有调试器调试shell脚本。全书分为3个部分:脚本技术基础、系统交互和高级技术、有用的脚本...

    109个shell脚本合集.pdf

    109个shell脚本合集.pdf

    shell脚本shell脚本shell脚本

    shell脚本shell脚本shell脚本

    Linux-shell脚本全面学习.pdf

    Linux-shell脚本全面学习.pdf

    linux下shell脚本实现数据的导出

    第一次接触linux系统,之前写的数据导出不好使了。...找了好多资料,最后决定写个shell脚本;没接触过shell脚本,网上大部分例子都写的挺复杂的;贴个简单的,不带传参什么的;只是最简单的数据表的导出备份

    提高cpu利用率的shell脚本

    需要提高cpu利用率的shell脚本

    输出执行操作和打印日志的shell脚本实例

    cat /mnt/log_function.sh #!/bin/bash #log function ####log_correct函数打印正确的输出到日志文件 function log_correct () { DATE=`date “+%Y-%m-%d %H:%M:%S”` ####显示打印日志的时间...log_error打印shell脚本

    shell 脚本 实例 shell 脚本 实例

    参考shell脚本实例.rar参考shell脚本实例.ra参考shell脚本实例.rarr

    精心整理shell脚本100例(最新版).pdf

    精心整理shell脚本100例(最新版).pdf

    shell脚本如何获取随机数random

    文章主要介绍shell脚本如何获取随机数random的方法,感兴趣的朋友可以看看。

Global site tag (gtag.js) - Google Analytics