Linux——bash7自动交互
扫描二维码
随时随地手机看文章
首先介绍bash7自动交互的三种形式。
ftp
#!/bin/bash
# 顶格写,EOF后面代码段顶格写
ftp -i -n 192.168.167.187 << EOF
user hzc 123456
pwd
cd test
pwd
close
bye 6189606
EOF
shell自动完成
echo 'pwd' |su - xq -c "pwd"
当提示,standard in must be a tty,可用,python -c ’import pty; pty.spawn(“/bin/sh”)’
expect
见expect
https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B"nid"%3A"news_9074927787774808988"%2C"sourceFrom"%3A"bjh"%7D
登录shell和非登录shell
通过login程序或者bash的--login选项进入bash环境的称为登录shell
非login的或者--login选项进入bash环境的称为非登录shell
非登录shell只会使用 .bashrc 这个环境变量文件
登录shell按照 /etc/profile,.bash_profile, .bash_login, .profile的顺序查找环境变量文件并执行
有些系统会在登录shell的环境变量文件中调用 .bashrc
登录shell退出时会执行 .bash_logout
bash提示符
PS1,PS2
\u 当前用户名
\h 主机名,\H 完整主机名
\W 完整的工作目录
\w 工作目录绝对路径
\$ 提示符,root是#,普通用户是$
\t 时间
\# 显示命令编号
PS2默认为>,需要多行输入的命令提示换行后提示符是>
可用于bash的正则表达式
* 任意长度字符
? 单字符
[a-zA-Z][0-9] 指定范围内任意一个字符
[^a-z] 不在指定范围内的任意字符
*(...) 匹配0个或多个
?(...) 匹配0或一个
+(...) 匹配1个或多个
@(...) 仅匹配一个
!(...) 都不匹配
\{m, \n} 至少m次,至多n次
\{m, \} 至少m次
\{0, n\} 至多n次
\{m\} 正好m次
^x 行以x开头
x$ 以x结尾
^$ 空白行
\
x\> 以x结尾的单词
\(ab\(x\)y\).*\(mn\)\1 引用第1个(匹配到的内容
专用字符集
[:alnum:]* 字母字符和数字字符
[:alpha:] 字母
[:word:] 字母
[:upper:] 大小字母
[:lower:] 小写字母
[:digit:] 数字
[:xdigit:] 16进制
[:ascii:] ASCII字符
[:blank:] 空格和制表符
[:space:] 仅空格
[:cntrl:] 控制字符
[:print:] 可打印字符
[:graph:] 除空白外的可打印字符
[:punct:] 标点