管道

  • 上节说到命令的输出,利用输入输出重定向将命令处理对象变成文件。同样,命令输出也可通过linux引入的管道符,将输出转向 变为 另一个命令的输入对象

如:cat 1.txt|wc -l 统计文件行数。 如:cat /etc/passwd | cut -d ":" -f 1 输出系统用户。


命令任务管理

  • 多个命令同时运行(多任务管理)

  • 命令后台运行

  • 多命令运行管理(后台任务管理)

    默认情况下,当前命令输出对象 是 文件 描述符 0,即当前输出设备--屏幕。当前命令独自占用 该设备。 当需要同时再运行另命令时,就需要释放 该命令 对 输出设备的占用,并将命令放入后台运行。 同样,需要在前台对 后台用户命令运行进行管理,如后台运行或后台停止状态。

    #当前命令运行时,可通过快捷键放入后台(CTRL+Z),或是退出该命令(CTRL+C)。
    #注意的是,通过快捷键将命令放入后台,默认是在后台停止状态。
    #以ping命令为例,下面演示放入后台(CTRL+Z),后台命令查看,后台运行,
    

[root@cpdl ~]# ping www.baidu.com PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data. 64 bytes from 14.215.177.39: icmp_seq=1 ttl=54 time=3.65 ms ^Z [1]+ Stopped ping www.baidu.com #+号表示默认最近的一个后台命令。 #查看后台命令:jobs [root@cpdl ~]#jobs [1]+ Stopped ping www.baidu.com [2]- Stopped ping www.qq.com #后台命令调入前台 [root@cpdl ~]#bg 2 #命令在后台运行 [root@cpdl ~]#fg 2 #删除后台命令 [root@cpdl ~]#kill %2 #命令直接放入后台运行 [root@cpdl ~]# ping www.qq.com & ```


shell变量

之前章节从shell命令说起,谈到命令历史记录查看,命令简写,命令处理对象的匹配,命令补全提醒,命令输入输出对象,多条命令的调用。 这里,再从命令运行环境说起。 命令在计算机中不是单独独立的存在,它必然需要与操作系统或其它命令进行交互。 它会接受操作系统初始化提供参数,系统变量,或是其它用户自定义参数。 变量的来源可分为,环境变量,预定义变量,命令位置变量,用户自定义变量等。 默认可通过env或set 查看当前环境变量。其中env不包含用户自 定义变量。 常使用环境变量:HOSTNAME,UID,USER,LOGNAME,HOME,PATH,PPID,等。 预定义环境变量:LANG,PS1,等。主要用户保存初始化用户设置等。 命令位置变量:$0,$n,$#,$*,$@,$?,$$,$! 等。 用户自定义变量,设置用户环境变量。

  • 自定义环境变量说明:

    • 变量名规则:字母数字下划线,首字符不能是数字。

    • 变量值定义:

      变量值引用分为三类: 一类用单引号引用,表示纯字符,不管字符中是否含有特殊符号。 一类用双引号引用,表示特殊符号会转义。 一类用反引号引用,表示引用的是命令,变量值是命令返回的信息。

    • 变量使用范围

      默认变量是局域变量,只能在当前环境中使用。 可通过声明变量为全局变量(export a=2),将变量在环境中向下传递。

  • 自定义变量取消 unset

  • 只读变量 readonly NAME


变量存储位置

变量创建随着系统启动一点点添加,按linux启动过程和用户登录过程,添加变量的文件顺序大致如下: /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout /etc/profile 在加载文件系统前需要处理文件。文件执行时,会从/etc/profile.d目录的配置文件中搜集shell的一些设置。 ~/.bash_profile: 每个用户家目录下都有该文件 ,使用此文件输入用户自己的shell信息。当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,并调用执行用户的~/.bashrc文件。 ~/.bashrc: 该文件包含用户自己的bash shell的信息,当登录时以及每次打开新的shell时,该文件被读取。用户定义自己的环境变量,建议写入此文件。 ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.