Linux Shell Readme
a
awk
# 按照/字符分割, 取第2个
awk -F '/' '{print $2}'
# 按照/字符分割, 取最后一个
awk -F '/' '{print $NF}'
b
bc
# bc命令是linux下的计算器, 默认只处理整数, 要想处理小数, 可以设置scale处理对应的小数点后的位数
scale=2
# 将十进制33转换为二进制
echo 'obase=2;33' | bc
# 将二进制1101转换为10进制
echo 'ibase=2;1101' | bc
# 将二进制1101转换为16进制 (obase要先设置)
echo 'obase=16;ibase=2;1101' | bc
- 等额本息利率计算
# money 贷款金额100万元
# rate 贷款年利率4.65%
# year 贷款年限 25年
money=1000000;rate=4.65;year=25;echo "scale=10; $money*$rate/100/12*(1+$rate/100/12)^($year*12)/((1+$rate/100/12)^($year*12)-1)" | bc
- 等额本金首期利率计算
money=1000000;rate=4.65;year=25;echo "scale=10; $money/($year*12) + $money*$rate/100/12" | bc
c
cat
- 带行号查看文件
cat -n a.txt
chmod
chmod使用方法
- chmod [who] [operator] [permission] filename
who取值有- u: 创建人
- g: 组用户
- o: 其他用户
- a: 所有用户(all)
operator取值有 - +: 增加权限
- -: 取消曲线
- =: 设定权限
perssion取值有 - r: 读
- w: 写
- x: 执行
示例:
chmod u+x xxx.sh
chmod go+r xxx.sh
- chmod [mode] filename
示例
chmod 755 xxx.sh
chmod 脚本授root权限
-rwsrw-r-- 表示有setuid标志
-rwxrwsrw- 表示有setgid标志
-rwxrw-rwt 表示有sticky标志
那么原来的可执行标志x到哪里去了呢?
系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
即有suid时,属主位的x变成s,如果属主位没有x,则x位置上的-变成S
即有sgid时,属组位的x变成s,如果属组位没有x,则x位置上的-变成S
即有sticky时,OHTER位的x变成t,如果OHTER位没有x,则x位置上的-变成T
chmod +s xxx.sh
获取
chmod 4755 xxx.sh
# 使用root用户运行, 普通用户获取root权限
curl
# post请求
curl -s -X POST http://example.org/ \
-H "Content-Type: application/json" \
-d '{
"key": "value"
}'
# 测试sock5代理访问网络
curl --socks5 127.0.0.1:7777 https://www.google.com/
# 测试HTTP代理访问网络
curl --connect-timeout 2 -x 127.0.0.1:7777 https://www.google.com/
d
date
# date 格式化
date +%Y%m%d
# 查看时区
date +"%Z %z"
# 设置时间
date -s"2000-01-01 00:00:00"
# 查看unix时间戳
date +%s
g
grep
# grep命令有时候会出现grep: xxxx: binary file matches
# 可以使用binary-files=without-match参数过滤掉二进制文件
grep -rn '' --binary-files=without-match
l
lsof
# 查看占用8080端口的pid
lsof -i:8080
p
ps
#### ps定制输出列
# -o参数设定输入列
# 查看程序启动及执行流逝时间
ps -eo pid,lstart,etime,cmd | grep nginx
s
scp
scp pf.dump oracle@192.168.11.45:/home/oracle/
# scp 使用pem文件认证
scp -i {PEM-FILE-PATH} {SRC-FILE-PATH} root@10.10.10.10:/home/
sed
# 删除每一行起始的任意个空格字符
sed 's/^ *//'
w
wget
# 下载文件
wget http://example.org/download.tar.gz
# 下载并命名文件
wget -O download.tar.gz http://example.org/download.php?id=1
x
xargs
- xargs 改变参数位置
# xargs命令会将前面命令的输出作为下一个命令的输入
# 但是只会将数据放在命令的最后
cat a.txt | xargs echo
# 如果想将输入放在任意位置, 可以用
cat a.txt | xargs -I {} echo "aa{}bb"
# 当然这个括号可以替换的, 也可以用
cat a.txt | xargs -I [] echo "aa[]bb"
一些有用的命令
# 批量删除git本地分支
git branch | grep "KEYWORD" | xargs git branch -D
# 批量删除远端分支
git branch -a | grep remote | grep -o "KEYWORD/.*" | xargs -I {} git push origin :{}