管道
- 上节说到命令的输出,利用输入输出重定向将命令处理对象变成文件。同样,命令输出也可通过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)时,执行该文件.