[总结] 一些有用的shell脚本

查看linux系统版本

// 系统内核版本
[root@bfc8accfa814 /]# uname -r
3.10.0-327.13.1.el7.x86_64

// redhat系统版本
[root@bfc8accfa814 /]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

// 内核版本和redhat版本
[root@bfc8accfa814 /]# cat /proc/version
Linux version 3.10.0-327.13.1.el7.x86_64 ([email protected]) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Mar 31 16:04:38 UTC 2016

获取当前主机的ip地址:

//centos下:

PUBLIC_IP="$(ifconfig eth0 | awk -F ' *|:' '/inet/{print $3}')"

//ubuntu下:

PUBLIC_IP="$(ifconfig eth0 | awk -F ' *|:' '/inet addr/{print $4}')"

编写Dockerfile时,经常要用到apt-get update(ubuntu系统),但会超时或网络出错,可以将源修改成国内镜像:

sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//http:\/\/mirrors.163.com\/ubuntu\//g' /etc/apt/sources.list

分隔文件名和扩展名

$fullname=test/demo.png
$filename=`basename "$fullname"`
$extension=${filename##*.}
$filename=${filename%.*}

${var#pattern},${var%pattern}
#(##)的含义是从左向右搜索,匹配到后去掉匹配到的部分,返回右边的剩余部分。(掐头,键盘上在$左边)
%(%%)的含义是从右向左搜索,匹配到后去掉匹配部分,返回左边剩余部分。(去尾,键盘上在$右边)
#和%是最短匹配;##和%%是最大匹配。

systemd相关命令

  1. 查看开启自启动程序
ls /etc/systemd/system/multi-user.target.wants/

实际上,开机自启动命令systemctl enable demo.service其实是增加了由/usr/lib/systemd/system//etc/systemd/system/multi-user.target.wants/下的软链接。相当于执行:

ln -s '/usr/lib/systemd/system/demo.service' '/etc/systemd/system/multi-user.target.wants/demo.service'

tar压缩解压命令

tar zcvf file.tar.gz dir  #压缩指定目录
tar zxvf file.tar.gz -C dir #解压到指定目录

利用python工具格式化json字符串

比如,查看docker image列表

cat /var/lib/docker/image/devicemapper/repositories.json | python -mjson.tool

使用一行命令创建目录并进入到新目录

这个功能非常使用。
平时如果创建目录并且进入到这个新目录,一般都这么写:

mkdir my-dir; cd my-dir

其实可以通过写一个小脚本定义个命令来实现。将下面代码加到~/.bashrc~/.bash_profile

# mkdir, cd into it
mkcd () {
mkdir -p "$*"
cd "$*"
}

之后就可以用mkcd实现新建并进入新目录了。

mkcd my-dir

来自:http://lifehacker.com/5535495/create-and-change-to-a-new-directory-in-one-command

使用type命令可以查看某个命令是否被当前系统所支持

[~]$ type awk
awk is /usr/local/bin/awk

将top命令的结果输出到文件

top -b -n 5 -d 10 > /top.txt

-b:batch模式,可重定向到文件
-n:表示top命令执行几次
-d:执行top命令的时间间隔

统计代码行数

find . "(" -name "*.java" -or -name "*.mm" ")" -print | xargs wc -l

你可能感兴趣的:([总结] 一些有用的shell脚本)