一、什么是shell
shell就是提供人机交互的一个界面。
什么是bash shell
bash shell是一种比较流行的shell。/etc/shells文件中可以看到我们计算机中的shell集合。
一般用户和root用户登陆以后默认都是使用bash shell但是系统用户使用的是nologin Shell。
二、通配符:
*----匹配0个或多个字符串
?---匹配有且只有一个单一字符
实例:
touch abc.txt
touch ab1.txt
touch ab.txt
rm -rf ab*.txt
最终结果是创建的3个文件都被删除了。因为*代表0个或多个字符。
touch abc.txt
touch ab1.txt
touch ab.txt
rm -rf ab?.txt
最终结果是只有ab.txt没有被删除。空字符没被匹配上。
所以*和?的区别是*可以匹配空字符而?不能匹配空字符。
[0-9]:包含了所有的数字(表示一个范围)
[abc]:表示匹配列表中一个单一的字符
实例:
touch abcd.txt
touch abd.txt
touch abc.txt
rm -rf ab[cd].txt
最终结果是只有abcd.txt不会删掉,因为[cd]只能对应一个单一的字符。
[^abc]:表示匹配除了列表中的字符以外的单一字符。
三、快捷键
Tab用于补齐命令名和文件名。
历史记录功能:history命令用于显示历史敲过的命令。默认保存1000条历史命令。超过1000条就把前面的命令覆盖掉。vim /etc/profile用于修改历史命令默认保存条目数。修改该文件的HISTSIZE=1000后面的1000即可。历史记录保存在/home下的.bash_history文件中。只有当用户登出的时候才会将历史记录写入此文件,不登出则是存在于内存中。每个用户都是独立的历史记录文件。-c参数是用于清除当前用户的历史记录。!+历史命令可以快速的使用以前使用过的命令。或者!+命令编号也可以快速的使用以前使用过的命令。crtl+r进行反向历史查找。alt+.用于快速调用前面的历史记录。!$用于输入前次输入的参数。
~:代表用户的home目录。cd ~redhat可以直接进入用户redhat的home目录。
$()或``(注意是~对应的`不是单引号):用于调用命令执行的结果。
实例:
echo "This system's name (hostname)"
显示的结果是:This system's name (hostname)
echo "This system's name $(hostname)"
显示的结果是:This system's name station17.example.com
{}:取括号中所有的值。
实例:
touch {a,b,c}{1,2,3}.{txt,pl}
最终结果是建立多个文件:
a1.txt a1.pl a2.txt a2.pl a3.txt a3.pl b1.txt b1.pl b2.txt b2.pl b3.txt b3.pl c1.txt c1.pl c2.txt c2.pl c3.txt c3.pl
四、bash的变量
定义变量:HI=Hello,HI为变量的名称,Hello为变量的值。名称和值都可以自定义(这种变量称之为本地变量,只在当前有效,切换用户以后就不生效了。)
查询变量:echo $HI即可
变量有三种:本地变量、环境变量(对于所有用户都有效)、全局变量(可以影响整个系统的全局)
五、命令行下的快捷键
ctrl+a(home):将光标移至行首
ctrl+e(end):将光标移至行尾
ctrl+u:将删除光标前所有的内容
ctrl+k:将删除光标后所有的内容
ctrl+箭头:将光盘向左或向右移动一个字符串
ctrl+shift+c:复制
ctrl+shift+v:粘贴
六、脚本基础
创建shell脚本:
第一步:创建一个包含命令的文本文件
注释:用于告诉别人这个脚本是用作什么的以及内容的含义。
#.....就是注释
第二步:chmod u+x myscript.sh用于加上执行权限
第三步:执行:./myscript.sh即可
七、其他
alias用于定义一个命令使得在使用这个定义的命令时包含命令+参数
脚本实例:
#!/bin/bash
# This script displays some information about your environment
echo "Greetings. The date and time are $(date)"
echo "Your working directory is: $(pwd)s"