Linux基础入门及系统管理01-Linux运维核心技能-bash基础特性详解09


一、bash及其特性

   1、shell:外壳,用户直接连接计算机

       a)GUI:Gnome、KDE、Xfce;

       b)CLI:sh、csh、ksh、bash、tcsh、zsh;

   2、如果当前系统登录2个用户,2个用户的shell相同吗?

       root,student:一个程序,2个进程;

       进程:在每个进程看来,当前主机上只存在内核和当前进程;

       进程是程序的副本,进程是程序执行实例;

   3、用户工作环境

       a)#:管理员,$:普通用户;每个用户的工作环境设定可以不同;

   4、shell:包含子shell,如:bash,bash ,用pstree查看当前bash结果;

   5、bash特性

       a)命令历史:

           history:查看命令历史;

               -c:清空命令历史;

               -d:删除指定位置命令,如:history -d 10,history -d 10 11;

               -w:保存命令历史至历史文件中,.bash_history为历史命令缓存;

           命令历史的使用技巧:

               !n:执行命令历史中的第n条命令;

               !-n:执行命令历史的倒数第n条命令;

               !!:执行上一条命令;

               !STRING:执行命令历史中最近一个以指定字符串开头的命令;

               !$:引用前一个命令的最后一个参数,如:cat /tmp/inittab;nano !$;

               ESC,.:引用前一个命令的最后一个参数;

               ALT+.:引用前一个命令的最后一个参数;

       b)命令补全:

           命令补全:tab键,表示在PATH下搜索补全;

           路径补全:tab键,在指定开头命令下搜索补全;

       c)命令别名:

           alias:alias CMDALIAS='COMMAND [options] [arguments]'(有空格中‘’引用),如:alias cls=clear;

           在shell中定义的别名仅在当前shell生命周期中有效:别名的有效范围仅为当前shell进程;

           unalias:撤销命令别名,如:unalias cls;

           \COMMAND:使用命令本身;

       d)命令替换:($(COMMAND)、反引号:`COMMAND`)

           把命令中某个子命令替换为其执行结果的过程:

               如:echo “The current directory /root.”

                   cd /etc/sysconfig

                   echo “The current directory is $(pwd).”。

               创建file-当前年月日-当前时-当前分-当前秒.txt,

                   如:touch ./file-$(date +%F-%H-%M-%S).txt;

           bash支持的引号:

               反引号``:命令替换;

               "":弱引用,可以实现变量替换;

               '':强引用,不完成变量替换;

       e)文件名通配,globbing:

           *:通配符,表示匹配任意长度的任意字符;

               如:touch a123 abc ab123 xyz x12 xyz123 helloy123 1xy6 'a b';

                   显示以字母a开始的所有文件:

                   ls a*;

                   显示以字母a开头数字3结尾的所有文件:

                   ls a*3;

           ?:匹配任意单个字符;

               如:显示一个字符开头,中间跟y的所有文件:

                   ls ?y*;

           []:匹配指定范围内的任意单个字符;

               如:[abc], [a-m], [a-z], [A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z];

                   显示以字母开头,中间任意字符,以数字结尾的所有文件:

                   ls [a-zA-Z]*[0-9]

           [^]:匹配指定范围之外的任意单个字符;

               如:显示以非数字开头的所有文件:

                   ls [^0-9]*;

           [:space:]:所有空白字符;

           [:punct:]:所有标点符号;

           [:lower:]:所有小写字母;

           [:upper:]:所有大写字母;

           [:alpha:]:大小写字母;

           [:digit:]:数字;

           [:alnum:]:数字和大小写字母;

           man 7 glob:获取以上所有列表;

               如:显示字母开头,中间空白字符,字母结尾的所有文件:

                   ls [[:alpha:]]*[[:space:]]*[[:alpha:]];

   作业:

   1、创建a123,cd6,c78m,c1 my,m.z,k 67,8yu,789等文件,注意:以上文件是以逗号隔开的,其它符号都是文件名的组成部分;

   2、显示所有以a或m开头的文件;

       ls [am]*;

   3、显示所有以数字结尾且文件名中不包含空白的文件?

       ls *[^[:space:]]*[0-9]不能完全表达此题的意思,通过正则表达式可以;???

   4、显示文件名中包含了非字母或数字的特殊符号的文件;

       ls *[^[:alnum:]]*;


       f)命令行编辑:

           光标跳转:

               Ctrl+a:跳到命令行首;

               Ctrl+e:跳到命令行尾;

               Ctrl+u:删除光标至命令行首的内容;

               Ctrl+k:删除光标至命令行尾的内容;

               Ctrl+l:清屏;

       g)命令行展开

       h)管道、重定向:

       i)变量

       j)编程

   6、环境变量

       a)PATH:命令搜索路径;

       b)HISTSIZE:命令历史缓冲区大小。


你可能感兴趣的:(tab,bash,history,glob,[,])