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 cat: b: No such file or directory
[root@node1 test]# cat a b >stdout >stderr
[root@node1 test]# ls
a stderr stdout
[root@node1 test]# cat std*
cat: b: No such file or directory [root@node1 test]# cat stderr
cat: b: No such file or directory
[root@node1 test]# cat stdout

示例2:垃圾桶/dev/null

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

示例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 [root@node1 test]# cat a

什么时候需要重定向?

  1. 屏幕输出的信息很重要,而且我们需要将他存下来的时候;
  2. 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
  3. 一些系统的例行命令 (例如写在 /etc/crontab 中的文件) 的执行结果,希望他可以存下来时;
  4. 一些执行命令的可能已知错误讯息时,想以『2> /dev/null 』将他丢掉时;
  5. 错误讯息与正确讯息需要分别输出时。

bash小结的更多相关文章

  1. 小鸟初学Shell编程(五)输入输出重定向

    重定向作用 一个进程默认会打开标准输入.标准输出.错误输出三个文件描述符. 重定向可以让我们的程序的标准输出.错误输出的信息重定向文件里,那么这里还可以将文件的内容代替键盘作为一种标准输入的方式. 重 ...

  2. BASH 命令以及使用方法小结【转】

    1,export VAR=... 这个命令在Shell下直接运行可以使之后运行的脚本也知道这个VAR.但是如果 这个命令在脚本中运行,那么不影响脚本以外的参数.举个例子,如果在一个脚本运行之前没有 V ...

  3. linux bash & profile &bash_profile 小结

    login 方式:: su - oracle 依次 /etc/bash.bashrc———— /home/$user/.bashrc ———— /ect/profile ———— /home/$use ...

  4. BASH 命令以及使用方法小结

    最近工作中需要写一个Linux脚本,用到了很多BASH命令,为了防止以后忘记,在这里把它们一一记下来.可能会比较乱,随便看看就好了.如果有说的不对的地方也欢迎大家指正. 1,export VAR=.. ...

  5. bash操作小结

    刚开始学写bash脚本,发现有很多需要注意的细节问题,在这里记录一下便于记忆: 1. help test  帮助 2. bash提供的数组数据结构,它是以数字为下标的,和C语言从0开始的下一样  参考 ...

  6. Linux Bash环境下单引(')、双引号(")、反引号(`)、反斜杠(\)的小结

    在bash中,$.*.?.[.].’.”.`.\.有特殊的含义.类似于编译器的预编译过程,bash在扫描命令行的过程中,会在文本层次上,优先解释所有的特殊字符,之后对转换完成的新命令行,进行内核的系统 ...

  7. Bash Shell编程要点小结

    一.case命令 case variable invalue1) command(s);; value2) command(s);; *) command(s);; esac 如果case变量没有被匹 ...

  8. Shell中bash的特性小结

    Shell: 用户与操作系统之间完成交互式操作的一个接口程序,为用户提供简化了的操作:上世纪的70年代中期在贝尔实验室,Bourne位Unix开发了一个shell程序Bourne Shell,简称sh ...

  9. BASH 学习笔记小结

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

随机推荐

  1. PHP程序员的技术成长规划(转载)

    按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...

  2. JAVA遇见HTML——JSP篇(JSP内置对象上)

    action:表单交给哪个动作去处理 MIME类型: 浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档:因此服务器设置正确以将正确的MIME类型附加到响应对象的头部是非常重要的. 语法 ...

  3. python_模块2

    1.sys模块 import sys # 获取一个值的应用计数 a = [11,22,33] b = a print(sys.getrefcount(a)) # python默认支持的递归数量 v1 ...

  4. flask读书笔记-flask web开发

    在应用启动过程中, Flask 会创建一个 Python 的 logging.Logger 类实例,并将其附属到应用实例上,通过 app.logger 访问 ===================== ...

  5. BZOJ 3887/Luogu P3119: [Usaco2015 Jan]Grass Cownoisseur (强连通分量+最长路)

    分层建图,反向边建在两层之间,两层内部分别建正向边,tarjan缩点后,拓扑排序求一次1所在强连通分量和1+n所在强联通分量的最长路(长度定义为路径上的强联通分量内部点数和).然后由于1所在强连通分量 ...

  6. mybatis-plus 相关

    这里有几个很全的教程: https://www.cnblogs.com/okong/p/mybatis-plus-guide-one.html mybtais-plus学习--BaseMapper提供 ...

  7. P5312 [Ynoi2011]D2T1

    思路:01trie 按位维护 提交:5边 错因:爆int + 少处理询问时的右端点 题解: 见代码(已经不想说什么了) 代码 //I have my own flg; #include<bits ...

  8. Codeforces 1220 E Tourism

    题面 可以发现一个边双必然是可以随意走的,所以我们就把原图求割边然后把边双缩成一个点,然后就是一个树上dp了. #include<bits/stdc++.h> #define ll lon ...

  9. Qt ASSERT:"QMetaObjectPrivate::get(smeta)->revision>= 7"in file kernel\qobject.cpp,line 2646

    qt5.6.1所做的工程在运行时出现该问题:该问题说的是信号槽中 函数的参数不匹配. 在qt4.8.4 中QThread 中查到assitant中定义void QThread::finished () ...

  10. 【概率论】3-3:累积分布函数(Cumulative Distribution Function)

    title: [概率论]3-3:累积分布函数(Cumulative Distribution Function) categories: Mathematic Probability keywords ...