查看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 (builder@kbuilder.dev.centos.org) (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相关命令
查看开启自启动程序
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
使用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