• bash小结


    context:CentOS

    什么是shell?

      shell就是与计算机交互的接口。

    linux支持的shell

    [root@node1 ~]# cat /etc/shells 
    /bin/sh      #被 /bin/bash 所取代
    /bin/bash      #Linux 预设的 shell
    /sbin/nologin    #特殊的shell
    /bin/dash
    /bin/tcsh      #整合 C Shell ,提供更多的功能
    /bin/csh       #被tcsh取代

    shell的功能:

    1. 历史命令查询功能:(history)(.bash_history 记录上次登录之前执行的命令,本次登录命令在内存中,注销时会刷入文件)
    2. 命令与文件补全功能 :(Tab)
    3. 命令别名设定功能: (alias)
    4. 工作控制、前景背景控制: (job control, foreground, background)
    5. 程序化脚本: (shell scripts)
    6. 通配符
    7. bash 的进站与欢迎讯息: /etc/issue, /etc/motd
    8. 终端机设定stty,set

    bash中指令的运行顺序

    1. 以相对/绝对路径执行指令,例如『/bin/ls 』或『./ls 』;
    2. 由 alias 找到该指令来执行;
    3. 由 bash 内建的 (builtin) 指令来执行;
    4. 透过 $PATH 这个变量的顺序搜寻到的第一个指令来执行

      

      ps:先alias,然后是$PATH中的/bin/ls。

      type -a CMD,查询命令是否为内建命令,同时它也指出了执行该命令时,去哪里寻找该命令路径的顺序。

    bash 的环境配置

    1.login和nolog

    • inlogin shell:

      取得 bash 时需要完整的登入流程的,就称为 login shell。举例来说,你要由 tty1 ~ tty6 登入,需要输入用户的账号与密码,此时取得的 bash 就称为login shell 

    • non-login shell:

      取得 bash 接口的方法不需要重复登入的举动,举例来说:
      (1)你以 X window 登入 Linux 后,再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 nologin shell 了。
      (2)你在原本的 bash 环境下再次下达 bash 这个指令,同样的也没有输入账号密码, 那第二个 bash (子程序) 也是 nologin shell 。

    2.login shell读取配置文件流程

      

    ps:

    1.  /etc/profile:这是系统整体的设定,你最好不要修改这个文件;
    2.  ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人设定,你要改自己的数据,就写入这里!

     数据流重导向

    stdin   0  <  <<

    stdout   1  >  >>

    stderr    2  2>  2>>

    示例1:

    [root@node1 test]# ls
    a
    [root@node1 test]# cat a b
    1
    cat: b: No such file or directory
    [root@node1 test]# cat a b >stdout 2>stderr
    [root@node1 test]# ls
    a  stderr  stdout
    [root@node1 test]# cat std*
    cat: b: No such file or directory
    1
    [root@node1 test]# cat stderr
    cat: b: No such file or directory
    [root@node1 test]# cat stdout 
    1

    示例2:垃圾桶/dev/null

    [root@node1 test]# cat a b &>/dev/null 
    [root@node1 test]# cat a b >/dev/null 2>&1

    示例3:读取键盘输入

    [root@node1 test]# cat >catfile
    hello world
    what a good day!        #Ctrl+d结束输入
    [root@node1 test]# cat catfile 
    hello world
    what a good day!
    
    #eof取代信号
    [root@node1 test]# cat >catfile <<eof
    > Helo!
    > What a good day!
    > eof
    [root@node1 test]# cat catfile 
    Helo!
    What a good day!

    示例4:读取文件输入

    [root@node1 test]# cat >catfile <a
    [root@node1 test]# cat catfile 
    1
    [root@node1 test]# cat a
    1

    什么时候需要重定向?

    1. 屏幕输出的信息很重要,而且我们需要将他存下来的时候;
    2. 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
    3. 一些系统的例行命令 (例如写在 /etc/crontab 中的文件) 的执行结果,希望他可以存下来时;
    4. 一些执行命令的可能已知错误讯息时,想以『2> /dev/null 』将他丢掉时;
    5. 错误讯息与正确讯息需要分别输出时。
  • 相关阅读:
    Go语言之进阶篇服务器如何知道用户需要什么资源
    Go语言之进阶篇请求报文格式分析
    Go语言之进阶篇实现并发聊天功能
    Go语言之进阶篇文件传输
    Go语言之进阶篇获取文件属性
    Go语言之进阶篇简单版并发服务器
    Go语言之进阶篇TCP相互通信
    Go语言之进阶篇 netcat工具的使用
    HAProxy的高级配置选项-ACL篇之匹配访问路径案例
    HAProxy的高级配置选项-ACL篇之基于文件后缀实现动静分离
  • 原文地址:https://www.cnblogs.com/chbo/p/7064303.html
Copyright © 2020-2023  润新知