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 :{}
posted @ 2021-09-26 14:33  weiwei5987  阅读(100)  评论(0编辑  收藏  举报