linux命令, shell【batch】---记录

shell 官网:http://www.gnu.org/software/bash/
PostgreSQL Documentation:https://www.postgresql.org/docs/9.2/app-psql.html
linux jq ·【 json处理 】:https://stedolan.github.io/jq/manual/
shell 菜鸟教程:https://www.runoob.com/linux/linux-shell.html
Mysql (Linux)下载:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
jdk(Linux)下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

shell中的(),{}几种语法用法:
https://www.cnblogs.com/HKUI/p/6423918.html


----------------------------------------------------------------------------------------------

Shell中的${}、##和%%使用范例

假设定义了一个变量为:
代码如下:
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分别替换得到不同的值:
${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 /  及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 .  及其左边的字符串:file.txt
${file##*.}:删掉最后一个 .  及其左边的字符串:txt
${file%/*}:删掉最后一个  /  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 /  及其右边的字符串:(空值)
${file%.*}:删掉最后一个  .  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个  .   及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt

sed一些用法
-i 是直接操作文件,在原文件上修改

# 把 a.txt文件中的 TAB 字符置换成tab符号
sed -i "s/TAB/\t/g" a.txt

# filename.txt 文件中存放了要被删除的文件名,下面这条命令作用是:通过rm -f 命令删除文件【在每一行的文件名前加 rm -f (则变成了rm -f 文件名)】,并输出删除文件的消息【再在每一行后拼接想要输出的消息】
# 括号前面的 \ 是转义括号的, .*  则是匹配每一行数据,\1  用来获取括号中匹配的内容(就是 .* 匹配到的一行数据)
sed -i -e "s/\(.*\)/rm -f \1;echo 删除文件的名称是:\1/g"  filename.txt

vim 查找与替换(带有特殊字符的)

#举例:
:s/aa/bb				# 将光标所在行第一个 aa 替换为 bb
:s/aa/bb/g				# 将光标所在行所有 aa 替换为 bb
:%s/aa/bb/g				# 全文执行替换 aa 替换为 bb
:3,10s/aa/bb/g			# 将第3行到第10行 aa 替换为 bb
:%s/\\/\//g				# 全文\替换为/ (特殊字符:^、$、*、/、\和.都需要转义,前面加上\)
:%s,\\,/,g				# 或用逗号分割(/可以不用转义)
:%s,aa,bb,gic			# 全文 aa(忽略大小写) 替换为bb,每次替换提示是否替换
常用标记,gic可自由组合使用:
	% 所有行  
	g 单行内所有匹配项(默认只匹配单行第一个) 
	i 忽略大小写  
	c 确认是否替换

判断 abc.mp4 文件如果超过30分钟无操作后,执行xxxxx操作

mp4="/data/abc.mp4"
min=30

if [ $(( $(date +%s) - $(stat -c %Y ${mp4}) )) -gt $(( 60 * ${min} )) ];then
    xxxxx
fi

查找包含指定字符串的文件

# 查找 home 目录下,包含 abc 字符串的文件,输出到 abc.txt 文件
find /home -type f | xargs -I{} grep "abc" {} -l >> abc.txt
grep -r "abc" /home >> abc.txt

去除ids.txt文件最后一个符号,并且ids.txt文件的最开头加’(‘,最后面加’)'

cat ids.txt | set '/.$//' | sed '/./{s/^/(&/;s/$/&)/}'

linux下查看某关键词前后几行内容

# 查看filename中含有abc所在行后4行内容
cat filename | grep abc -A4
# 查看filename中含有abc所在行前4行内容
cat filename  | grep abc  -B4
# 前后4行都查出来
cat filename  | grep abc -A4 -B4
# i自增
i=$(($i+1))

# 本地文件传到远端(-p:带文件属性;-r:目录的话递归)
scp -p 文件名 远端用户名@远端ip:远端存放路径  

# 统计文件个数
ls -l | grep "^-" | wc -l

# 去除 str 字符串前后空格后,赋值给 aa
aa=`echo ${str} | sed '/^$/d'`

防火墙

# 查看firewalld状态,发现当前是dead状态,即防火墙未开启。
systemctl status firewalld

# 开启防火墙
systemctl start firewalld

# 再次查看firewalld状态,显示running即已开启了
systemctl status firewalld

# 如果要关闭防火墙设置,通过这条指令来关闭该功能。
systemctl stop firewalld

① Linux开放指定端口

1,查看开放的端口:firewall-cmd --list-all
2,开放指定端口(例如8080) :firewall-cmd --add-port=8080/tcp --permanent
# 备注:今天开放80端口的时候报错(Error: INVALID_PORT: bad port (most likely missing protocol), correct syntax is portid[-portid]/protocol)
#然后解决:firewall-cmd --zone=public --add-port=80/tcp --permanent

3,重启防火墙:firewall-cmd --reload

# 根据服务查看监听端口。如下查看 ftp 的监听端口是21
[root@localhost user_conf]# netstat -antup | grep ftp
tcp6       0      0 :::21                   :::*                    LISTEN      288540/vsftpd

★其他
  查询端口号80 是否开启:firewall-cmd --query-port=80/tcp
  永久开放80端口号:firewall-cmd --permanent --zone=public --add-port=80/tcp
  移除80端口号:firewall-cmd --permanent --zone=public --remove-port=80/tcp
		--zone #作用域
		--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
		--permanent   #永久生效,没有此参数重启后失效

查看端口占用情况(80 为例)

lsof -i :80

② Linux查找并删除软件

查找(mysql):rpm -qa | grep mysql
执行删除:rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64

③ Linux 添加 mysql 开机自启

# 先将MySQL安装目录 /usr/local/mysql/mysql/support-files/ 文件夹下的mysql.server文件复制到 /etc/rc.d/init.d/ 目录下mysqld
cp /usr/local/mysql/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

# 赋予可执行权限:
chmod +x /etc/init.d/mysqld

# 添加为服务: 
chkconfig --add mysqld

# 查看服务列表:  
chkconfig --list

#看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:
chkconfig --level 345 mysqld on

# 重启计算机:
reboot


在这里插入图片描述
再次查看服务列表或者查看3306端口号
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值