一..将文件的内容赋给一个变量:

  file=$(cat filelist)

file=$(< file)

NOTE:后者性能比前者好

二..bash 分组匹配:

HOSTNAME='mysql-10=='

[root@node2 ~]# [[ $HOSTNAME =~ -([0-9]+)(.*) ]];VAR=${BASH_REMATCH[0]};echo $VAR
-10==
[root@node2 ~]# [[ $HOSTNAME =~ -([0-9]+)(.*) ]];VAR=${BASH_REMATCH[1]};echo $VAR
10
[root@node2 ~]# [[ $HOSTNAME =~ -([0-9]+)(.*) ]];VAR=${BASH_REMATCH[2]};echo $VAR
==

三..命令替换:

1.$(ls)

2.`ls`

四.新开一个子shell执行命令:

(umask 000;mkdir hello;mkdir word)

创建了两个目录,权限都为777

五.set

set -x 以debug模式执行shell,显示执行过程

set -e 如果某一条shell出错就不再往后继续执行

正则表达式:

[[space:]]          #空白字符

[[:digit:]]            #数字

[[:alnum;]]         #数字和字母

[[:punct:]]          #标点符号

[[:lower:]]          #小写字母

[[:upper:]]         #大写字母

[[:alpha:]]         #大小写字母

.                      #匹配单个字符

*                     #匹配前面字符任意次

.*                     #匹配任意长度字符,也包含空行

\?                   #匹配前面字符一次或零次

\{m,n\}           #匹配前面字符至少M次,最多n次

\(ab\)             #分组匹配,主要用于搭配后项引用,前面匹配到什么,后面就引用什么(eg:grep "\(l..e\).*\1$" test    #匹配以括号中匹配到的内容结尾的行)

位置锁定:

  ^            #行首(如果出现在'[ ]'中,则表示排除,eg grep '[^1-2]' test,表示排除除了1和2的行)

$            #行尾

^$           #空行

\<           #词首

\>           #词尾

grep参数:
-i          #忽略大小写

-n        #显示行号

-c        #统计符合条件的行

-v        #排除符合条件的行

-An     #打印符合条件行及下面的n行

-Bn     #打印符合条件行及上面的n行

-Cn     #打印符合条件的行及上下n行

egrep:

+           #匹配前面字符至少一次

?           #匹配前面字符一次或零次

{m,n}  #匹配前面字符至少m次,最多n次

(a|b) #匹配a或b

sed:

参数:

-n 静默模式,不再显示模式空间的内容

-i  直接应用在文件中生效,如果不加-i,只是输出到屏幕而不应用到文件

-r 使用扩展正则表达式

-f 保存至文件执行

sed '/hello/a\test' test   #在匹配到内容的下一行追加指定内容

sed 's/hello/&test/' test #在匹配到的内容后追加新内容

wd 's/hello/test&/' test  #在匹配到的内容前追加新内容

sed '1i\test' passwd      #在第一行前面添加test

sed '1a\test' passwd     #在第一行后面添加test

sed -n '1'p passwd       #打印第一行

sed '1w test' passwd    #将第一行内容写到test中

sed '1r test' passwd     #将test中的内容添加到第一行后面

sed 's/test/TEST/'g test     #将test中的test换位大写的TEST

NOTE:sed中/可以用@或者#代替

eg:

sed 's#test#TEST#'g test

sed 's@test@TEST@'g test

替换字符位置:

#cat test

three one

sed 's/\(three\)\(.*\)\(one\)/\3\2\1/' test

res:

one three

##### bash

: #占位符号

echo $((2**3))    #数值运算

((a=10+10));echo $a    #数值运算

(pwd;ls) 与{pwd;ls} 的区别,{}  和()类似,也是将多个命令组合在一起。它们之间的区别是,()是在产生的子shell下执行,而{}是在当前的shell下执行

###echo 后面的内容加引号与不加引号的区别:

echo *    #显示当前路径

echo "*"  #显示*

linux ps:

ps1:修改默认提示符

ps2:修改分行符号  ##一个非常长的命令可以通过在末尾加“\”使其分行显示。多行命令的默认提示符是“>”。 我们可以通过修改PS2 ,将提示符修改为"continue->" 

ps3:修改PS3——Shell脚本中使用select时的提示符

ps4:修改 set -x 脚本调试执行时前面显示的字符

参考连接:https://blog.csdn.net/rainharder/article/details/54573021

将二进制文件嵌入到shell脚本:

有时候我们的项目可以有二进制文件,有图片,有说明文档等,这个时候发布项目可以打成一个包或者一个文件夹有组织的存放这些文件,很方便,但有时候也可以把他们放入到一个shell脚本中,这个对用户也非常友好,只需要运行一个shell脚本就ok:

1.先写一个脚本:test.sh

#!/bin/bash
sed '1,5/d' $0 > test     
echo "ok"
chmod +x test
exit 0
END

2.把二进制内容追加到test.sh 后面: cat 二进制文件 >> test.sh

嵌入后的shell:

#!/bin/bash
sed '1,5/d' $0 > test   #将第一行至分隔符行删除,将后面二进制分离出来         
echo "ok"
chmod +x test
exit 0
END    ###分隔符
^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^B^@>^@^A^@^@^@`ÈF^@^@^@^@^@@^@^@^@^@^@^@^@p^B^@^@^@^@^@^@^@^@^@^@@^@8^@

原理:shell 运行时将对应的二进制分离出来然后执行。

bash 实用技巧的更多相关文章

  1. Bash实用技巧:同时循环两个列表

    摘要: 你会学到一种原创的同时循环两个列表的方法.类似于Python或者Haskell的zip函数,非常简洁直观,效果如下: $ paste <( ) <( ) | while read ...

  2. Notepad++ 实用技巧

    Notepad++是一款开源的文本编辑器,功能强大.很适合用于编辑.注释代码.它支持绝大部分主流的编程语言. 本文主要列举了本人在实际使用中遇到的一些技巧. 快捷键 自定义快捷键 首先,需要知道的是: ...

  3. javascript实用技巧、javascript高级技巧

    字号+作者:H5之家 来源:H5之家 2016-10-31 11:00 我要评论( ) 三零网提供网络编程. JavaScript 的技术文章javascript实用技巧.javascript高级技巧 ...

  4. iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

  5. iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示

    iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端.  打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面.   ...

  6. iOS开发实用技巧—项目新特性页面的处理

    iOS开发实用技巧篇—项目新特性页面的处理 说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性 ...

  7. IOS 网络浅析-(十三 SDWebImage 实用技巧)

    IOS 网络浅析-(十三 SDWebImage 实用技巧) 首先让我描述一下为了什么而产生的实用技巧.(在TableView.CollectionView中)当用户所处环境WiFi网速不够快(不能立即 ...

  8. NSString的八条实用技巧

    NSString的八条实用技巧 有一篇文章写了:iOS开发之NSString的几条实用技巧 , 今天这篇,我们讲讲NSString的八条实用技巧.大家可以收藏起来,方便开发随时可以复制粘贴. 0.首字 ...

  9. ###《VIM实用技巧》

    ###<VIM实用技巧> #@author: gr #@date: 2015-11-20 #@email: forgerui@gmail.com <VIM实用技巧>阅读笔记. ...

随机推荐

  1. win10 配置git 环境变量

    'git' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 解决办法: 去百度大概搜了一下,是因为没有配置Git环境变量的原因,但是没有具体的解决步骤,特此记录一下. 右键查看git安装目录: ...

  2. matlab学习笔记11_1低维数组操作

    一起来学matlab-matlab学习笔记11 11_1 低维数组操作repmat函数,cat函数,diag函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab ...

  3. 【翻译】Flink Table Api & SQL — 自定义 Source & Sink

    本文翻译自官网: User-defined Sources & Sinks  https://ci.apache.org/projects/flink/flink-docs-release-1 ...

  4. LeetCode_437. Path Sum III

    437. Path Sum III Easy You are given a binary tree in which each node contains an integer value. Fin ...

  5. 【视频开发】【计算机视觉】doppia编译之二:boost安装

    编译安装boost库的方法大部分都是来自http://www.linuxidc.com/Linux/2013-07/87573.htm这篇文章,这里我用自己的语言重新组织,稍作修改和补充,最主要是方便 ...

  6. appium通过index查找目标控件

    2.1 通过判断控件属性获取控件 控件的所有属性都可以用作判断,比如它的text,index,resource-id是否clickable等,例如: 2.1.1 通过文本查找目标控件 1 2 el = ...

  7. ceph架构简介

    ceph架构简介 在测试OpenStack的后端存储时,看到了ceph作为后端存储时的各种优势 ,于是查询资料,总结了这篇ceph架构的博客,介绍了ceph的架构和ceph的核心组件.ceph整体十分 ...

  8. 【转帖】编译-O 选项对性能提升作用

    编译-O 选项对性能提升作用 https://www.cnblogs.com/pigerhan/p/3526889.html GCC -O 选项 这个选项控制所有的优化等级.使用优化选项会使编译过程耗 ...

  9. Redhat7.6Linux本地的yum源配置

    安装好虚拟机,配置Ip地址,见博客https://www.cnblogs.com/xuzhaoyang/p/11264573.html 我是使用的Xshell在外部链接进行的操作,比较简单,见博客ht ...

  10. MySQL数据库的安装(Windows平台)

    1.MySQL数据库安装与配置 1.1 数据库安装和配置 安装需要注意的地方: 典型安装:安装最常用的特性组件,会默认安装至C盘目录下,适合大部分开发者. 自定义安装:可以自定义安装目录,自定义选择安 ...