作业控制和变量和环境变量配置文件
管道符
把前面内容给到后面
- cat test.txt | wc -l
- find / -name .conf -exec ls {} \;
作业控制 (后台前台)
- ctrl+ z #暂停当前任务,并把其放置后天
- bg [id] #把后台暂停任务置于后台运行,此时如果有输出,会一直输出,直到程序结束或手动结束
- fg [id] #把后台任务放置前台执行
- jobs #查看后台任务,包括暂停任务和后台运行任务
- kill %id #杀掉后台任务
变量
- PATH HOME PWD LOGNAME #系统变量
- env #查看系统变量
- set #查看系统变量和用户自定义变量
- a=1 #用户自定义变量
- unset a #删除变量
- 变量的累加 #a=”c” b=”d”;echo b-> cd
- 全局变量 export a=1 #可以在其子进程中生效,但是不会在其父进程中生效,用法在同一个bash中运行2个脚本可以共同使用1个变量
[test@xujb01 test]$ export test="hello world"
[test@xujb01 test]$ echo $test
hello world
[test@xujb01 test]$ bash
[test@xujb01 test]$ echo $test
hello world
[test@xujb01 test]$ bash
[test@xujb01 test]$ echo $test
hello world
pstree:
├─sshd─┬─sshd───sshd───bash───su───bash───vim
│ ├─sshd───sshd───bash
│ └─sshd───sshd───bash───bash───bash───pstree
全局变量在父进程中无效
[test@xujb01 test]$ export son="hello"
[test@xujb01 test]$ exit
exit
[test@xujb01 test]$ echo $son
pstree #查看进程树
- 变量命名规则:
由字母数字下划线组合,首位不能是数字
变量值有特殊符号时,需要用单引号括起来,单引号把字符符号原样输出,不做处理,如果用双引号需要用转义符’\’原样输出
一些特殊符号
a=‘1b”结果不一样,和a=”a$b”结果一样
环境变量配置文件
- /etc/profile #(系统)用户环境变量 交互 登入才执行,加载
- /etc/bashrc #(系统)执行shell就生效,执行脚本等会执行此文件
- ~/.bashrc #当前用户相关环境变量文件 (家目录)
- ~/.bash_profile #自动调用->.bashrc ->/etc/bashrc,和其内容有关
- ~./.bash_history #当前用户命令历史记录文件
- ~./.bash_logout #用户退出执行的文件
- PS1 #一个变量影响命令前提示:” [test@xujb01 ~] echo
* PS2 #续行提示符
```BASH
[test@xujb01 ~]$ echo $PS2
>
[test@xujb01 ~]$ for i in `seq 1 10`
>
* 设置 命令提示符颜色变量: PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
暂时生效:export PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
永久生效:echo PS1='"\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "'>> /etc/bashrc
.bashrc 和 .bash_profile区别
- .bash_profile 根据里面内容决定了会执行.bashrc,所以.bashrc执行的其也会执行
- .bashrc只影响远程用户(ssh)和不会影响到在本地主机上登入的用户,而.bash_profile两者都会影响
在.bashrc 添加 echo "hello bob" 在.bash_profile中添加 echo "it's test prifile" 在xshell中以远程登入用户时有提示,hello bob,而在本地(虚拟机上)登入有"hello bob" 和 "it's test prifile"提示, 但是无论在xshell登入后还是本地登入后执行bash,重新调用一个shell,都只有"hello bob"提示