Linux运维篇06--Linux引导入门阶段(shell特性)

shell所处位置             

                      

shell广义分类

        GUI:包括GNOME KDE XFACE

        CLI:sh ksh bash (Linux发行版本中,bash是默认的shell程序)

shell启动:当用户登录完成后,系统会自动启动shell程序

               shell是一个程序,进程是应用程序的副本,root用户和普通用户同时登录时,以PID号区分shell进程。

               shell又分为父shell和子shell,在系统中,每一个进程只认为自己存在,父shell不知道子shell的存在...

               父子shell之间的环境设置互相独立,互不影响         

[root@www ~]# bash
[root@www ~]# pstree                    #查看进程树
init─┬─VBoxService───7*[{VBoxService}]
     ├─sshd───sshd───bash───bash───pstree
                cat /etc/shells            查看当前系统支持的shell环境

                每一个shell都有自己的工作环境                

[root@www ~]# ksh
# pstree
init─┬─VBoxService───7*[{VBoxService}]
     ├─sshd───sshd───bash───bash───ksh───pstree

                exit:退出当前shell程序

bash的特性:

      1、命令历史             Linux会自动记录过去执行的命令,并保存在内存的缓冲区中

#history        查看命令历史
        -c          清空命令历史
        -d          删除某一条命令历史    history -d 22  history 10 4(删除10-14) 
        -w         将命令历史保存到某个文件中
        HISTSIZE:命令历史大小变量,默认1000       
        [root@www ~]# echo $HISTSIZE
        1000
命令历史使用技巧:
        
        !n       执行命令历史编号n的命令
        !-n      执行命令历史编号倒数n的命令
        !word    执行命令历史中最后一次以word开始的命令(word必须能唯一标识想执行的命令)
        !!       执行上一条命令 
        !$        引用一个命令的最后一个参数
                    [root@www ~]# ls /usr
                    bin  games    lib    libexec  sbin   src
                    [root@www ~]# ls /tmp
                    vboxguest-Module.symvers  yum.log
                    [root@www ~]# ls !$
                        ls /tmp
                    vboxguest-Module.symvers  yum.log
        ESC键(按完后松开) 再按.键,起到和!$相同的效果

      2、管道、IO重定向

                    计算机体系结构:

                            控制器:CPU,读取系统指令
                            运算器:CPU,运算
                            储存器:RAM(内部存储器:易失性存储器)
                            输入设备:输入数据
                            输出设备:显示命令执行结果

                    计算机总线:

                            地址总线:负责内存寻址
                            数据总线:负责传输数据
                            控制总线:负责控制指令

                    寄存器:CPU中内部临时存储空间

                    I/O设备:负责计算机内部存储设备和外部存储设备进行交互的设备 

                    程序:指令+数据                         

                                指令:由程序提供,负责加工数据                    
                                数据:系统中数据有多种来源,比如来自变量,文件,输入设备 
                                当用户没有为指令指定数据来源时,系统要有默认的数据来源    

                    标准输入输出设备:

                                标准输入设备:键盘(stdin)    , fd=0
                                标准输出设备: 显示器              fd=1
                                表述错误输出设备:显示器         fd=2

                    三种数据流:

                                标准输入数据流/标准输出数据流/标准输入错误数据流

                    fd:file description(文件描述符)                   

                                当在Linux中打开一个文件时,内核会反复调用,对于文件的标识显得很重要了,

                                用文件描述符表示文件 ,文件加载完成用数字标识。

                    I\O重定向:把默认输入输出数据来源,重新定向到其它的文件或设备

                            输出重定向:
                                    >    覆盖输出重定向
                                            echo "hello world" > /dev/tty1
                                            cat /etc > etc.out
                                    >>   追加输出重定向
                                            ls /boot >> etc.out
                                    2>    错误覆盖输出重定向
                                            lls /boot 2> err.out
                                    2>> 错误追加输出重定向
                                    &>   混合覆盖输出重定向
                                             ls /tmpp/ &> tmp.out
                                     &>> 混合追加输出重定向
                            输入重定向:
                                       <    输入重定向
                                            cat < /etc/passwd

               管道:  连接多条命令,把前一条命令的输出结果作为后一条命令的输入条件                             

                             tr        实现字符转换或删除字符

                                        [root@www ~]tr 'a-z' 'A-Z'
                                        abc
                                        ABC
                                        [root@www ~]cat /etc/passwd | tr 'a-z'  'A-Z'

                              tee     传递输出结果

                                        ls /boot/ | tee boot.stdout 

      3、命令别名    (alias定义的别名只在当前shell生效)

            # alias aomm-alias = 'commamd'    
            [root@www ~]# alias            //查看已有别名
            alias clear='cls'
            alias cp='cp -i'
            alias l.='ls -d .* --color=auto'
            alias ll='ls -l --color=auto'
            alias ls='ls --color=auto'
            alias mv='mv -i'
            alias rm='rm -i'
            alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

            [root@www ~]# alias cdnet='cd /etc/sysconfig/network-scripts/'
            [root@www ~]# cdnet
            [root@www network-scripts]# 

            #unclear COMM_ALIAS            //取消命令别名

      4、命令行编辑

            ctrl+a    光标快速跳转到命令行的行首
            ctrl+e    光标快速跳转到命令行的行尾
            ctrl+u    删除光标到行首的字符
            ctrl+k    删除光标到行尾的字符
            ctrl+l    清屏(clear)

      5、命令行展开    TAB键        提高工作效率

            命令补齐:在PATH变量搜索命令并补齐(PATH变量必须正常,输入的字符能够唯一标识命令)
                [root@www ~]# echo $PATH
                /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
            路径和文件补齐:在系统路径中查找,和命令补齐执行方式不同

命令替换:把命令中的子命令替换成子命令执行结果的过程    

            [root@www network-scripts]# echo "Dictory is $(pwd)."        
            Dictory is /etc/sysconfig/network-scripts. 
            [root@www ~]# echo "Dictory is `pwd`"  
            Dictory is /root   
            ""(双引号):弱引用,可以实现变量名的替换,把变量名替换为变量值
            ``(单撇号):命令引用
            ''(单引号):强引用(不能完成变量替换)  

      6、命令行统配:globbing

                *:  匹配任意长度的任意字符
                ?:  匹配任意单个字符
                []:  匹配指定范围内的单个字符
                      [ab] [a-z] [A-Z] [a-zA-Z] [0-9] [a-zA-Z0-9]
                [^]:匹配指定范围外的任意字符
                        [^a-z] [^0-9]
                [:space:]:表示空格
                [:punct:]:表示所有标点符号
                [:lower:]:表示所有小写字母
                [:upper:]:表示所有大写字母
                [:alpha:]:表示所有字母
                [:dight:]:表示所有数字
                [:alnum:]:表示所有数字和大小写字母
                [root@www test]# touch abc abc123 a123 xyz xyz123 x123
                [root@www test]# ls a*
                a123  abc  abc123
                [root@www test]# touch a
                [root@www test]# ls a*
                a  a123  abc  abc123
                [root@www test]# ls a?*
                a123  abc  abc123
                [root@www test]# ls a*[0-9]
                a123  abc123
                [root@www test]# touch 'a b'
                [root@www test]# ls *[[:space:]]*
                a b

      7、变量

      8、编程





























猜你喜欢

转载自blog.csdn.net/qq_38055050/article/details/80643565