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

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脚本编程100例

    shell脚本可以用于编写nginx启动脚本,例如使用shell脚本编写一个nginx启动脚本的程序,实现自动化Web服务器管理。 使用shell脚本批量创建用户 shell脚本可以用于批量创建用户,例如使用shell脚本编写一个批量创建...

    109个shell脚本合集.pdf

    Shell脚本是一种脚本语言,利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能。 Shell脚本可以直接使用在Windows、Unix、Linux上面,并且可以调用大量系统内部的功能来解释执行程序。如果...

    Shell脚本学习教程PDF版

    Shell脚本,作为Linux/Unix系统中的编程工具,是一种强大的自动化任务执行手段。它基于Bourne shell或者其扩展版本,如bash(Bourne-Again SHell),提供了一种编写简单或复杂程序的方式,使得用户能够通过命令行...

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

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

    shell脚本大全

    在IT领域,Shell脚本是Linux和Unix操作系统中不可或缺的一部分,它是一种强大的自动化工具,能够帮助用户执行一系列命令,简化日常任务。"shell脚本大全"这个资源可能包含了大量的示例脚本,涵盖了各种用途和场景,...

    IDEA中编写并运行shell脚本的实现

    IDEA中编写并运行shell脚本的实现 IDEA中编写并运行shell脚本的实现是指在Integrated Development Environment(IDE)中编写、配置和运行shell脚本的过程。该过程需要安装bashsupport插件,配置插件,安装git软件,...

    250个shell脚本

    Shell脚本是Linux/Unix操作系统中的强大工具,它允许用户编写一系列命令,形成自动化任务,以提高工作效率。本文档收集了250个实用的Shell脚本实例,涵盖了多个应用场景,包括系统管理、安全防护、数据库备份等核心...

    如何让Android系统或Android应用执行shell脚本

    Android 系统或 Android 应用执行 shell 脚本是 Android 开发中的一项重要技术,通过执行 shell 脚本,可以实现一些复杂的操作,例如设置网络参数、启动服务等。下面我们将介绍两种让 Android 系统或 Android 应用...

    Shell脚本编程100例

    Shell脚本编程是Linux系统管理中的重要技能,它允许用户自动化执行一系列命令,大大提高工作效率。以下是一些关于Shell脚本编程的关键知识点: 1. **Hello World脚本**:这是所有编程语言的基础,用于验证环境设置...

    解决Unity不能调用shell脚本传递参数的问题

    具体表现为:Unity试图通过`Process.Start`方法启动一个shell脚本,但是传递给脚本的参数没有被正确解析或使用。 #### 代码分析 在给出的Unity脚本示例中,可以看到如下关键代码: ```csharp [MenuItem("Tools/1...

    shell脚本与Makefile区别.docx

    "shell脚本与Makefile区别" shell 脚本和 Makefile 是两个不同的工具,它们都用于自动化构建和编译过程,但是它们有很大的不同之处。本文将详细介绍 shell 脚本和 Makefile 的区别。 首先,shell 脚本和 Makefile ...

    C语言中文网shell脚本教程

    这是一份关于Shell脚本编程的离线学习资料,包含了一系列HTML文件,旨在帮助用户深入理解并掌握Linux Shell脚本编程技术。以下是其中涉及的一些关键知识点: 1. **Shell命令的本质** Shell命令在Linux系统中是操作...

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

    在Linux环境下,shell脚本是自动化任务的强大工具,尤其对于数据导出这样的操作,通过编写shell脚本可以方便地实现定期备份或者按需导出。本文将深入讲解如何使用shell脚本来实现数据的导出,并结合Java代码进行调用...

    Linux 命令与Shell 脚本编程pdf书籍

    《Linux命令行与Shell脚本编程大全》是一本专为Linux初学者编写的经典教材,旨在帮助读者深入理解和掌握Linux操作系统中的基本命令行操作以及Shell脚本编程技术。这本书全面覆盖了从基础到进阶的各种主题,对于想要...

    android系统中调用shell脚本

    5. **使用AIDL(Android Interface Definition Language)**:创建一个服务,通过AIDL接口暴露调用shell脚本的功能,然后在客户端调用该服务。这种方式适用于跨进程通信。 6. **使用第三方库**:如`android.os....

    一个批量域名解析的Shell脚本例子

    标题中的“一个批量域名解析的Shell脚本例子”是指通过Shell脚本来实现对大量域名进行DNS解析的功能。在IT行业中,这种操作常用于网络监控、安全分析或数据收集等场景。下面将详细介绍这个主题。 首先,`...

    Linux shell 脚本 markdown文本编辑

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

Global site tag (gtag.js) - Google Analytics