[root@tz script]# ping -c1 www.baidu.com &>/dev/null && echo "baidu is up" || echo "baidu is down!" baidu is up
&>
包含正确输出和错误输出
&&
前面命令执行成功会返回一个参数$?,值为0,执行不成功值为非0
#!/usr/bin/bash ping -c1 "114.114.114.114" &> /dev/null && echo "114 is up" || echo "114 is down!" /usr/bin/python <<-EOF print "hello python!" EOF echo "hello bash!"
其中-EOF加上-,后续代码遇到tab键缩进也可以正常执行。
EOF结束符,可以替换为任何大写字母,如YANG
[root@mysql Script]# cat bash.sh cd /root ls [root@mysql Script]# bash bash.sh anaconda-ks.cfg.back mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz js80.TQh! VMwareTools-10.0.6-3595377.tar.gz [root@mysql Script]# . bash.sh anaconda-ks.cfg.back mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz js80.TQh! VMwareTools-10.0.6-3595377.tar.gz [root@mysql ~]# cd - /home/Script [root@mysql Script]# source bash.sh anaconda-ks.cfg.back mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz js80.TQh! VMwareTools-10.0.6-3595377.tar.gz [root@mysql ~]#
.跟source都是在父Shell中执行,所以当前目录会变。
其他都是在子Shell执行。
Shell是在用户登录后执行的第一个程序
[root@mysql ~]# rpm -qc bash /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc
rpm -qc 查看某命令的配置文件
[root@mysql ~]# rpm -qc bash /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc
更改用户的shell
[root@mysql ~]# usermod -s /bin/bash tz
su - 跟su 的区别
[tz@mysql root]$ su - tz
Password:
Last login: Mon Jun 1 18:20:53 CST 2020 on pts/1
[tz@mysql ~]$ pwd
/home/tz
[tz@mysql ~]$ exit
logout
[root@mysql ~]# su tz
[tz@mysql root]$ pwd
/root
su - 会重新跳到登录用户的家目录
login shell 会执行4个配置文件
nologin shell 只会执行2个配置文件
退出都会执行~/.bash_logout跟~/.bash_history两个配置文件
自动补齐软件包
[root@mysql ~]# rpm -qa | grep bash-com bash-completion-2.1-6.el7.noarch
命令历史记录
!11
↑↓
!da 等于!date
!$ 上一个命令最后一个参数
[root@mysql ~]# ls /etc/netconfig /etc/hostname /etc/hostname /etc/netconfig [root@mysql ~]# head !$ head /etc/hostname mysql
!! 上一个命令,在脚本中常用
[root@mysql ~]# cat /etc/hostname mysql [root@mysql ~]# !! cat /etc/hostname mysql
alias 查看当前shell的别名
[root@mysql ~]# alias cp alias cp='cp -i' [root@mysql ~]# unalias cp
或者在命令前加
[root@mysql ~]# cp -rf /etc
临时定义别名
[root@mysql ~]# alias yang="sl"
[root@mysql ~]# yang
~/.bashrc 定义别名是永久的
ctrl + R 搜索历史命令
ctrl + D 退出,相当于logout 或exit
ctrl + A 将光标移动到最前
ctrl + E 将光标移动到最后
ctrl + K 剪切当前光标后的字符串
ctrl + U 剪切当前光标前的字符串
ctrl + Y 粘贴粘贴板里的内容
ctrl + S 锁屏,在当前环境下,输入所有东西都生效,只是不显示
ctrl + q 解锁
& 将程序后台执行
tty 查看当前终端
[root@mysql ~]# tty /dev/pts/2