10月12日任務linux
8.6 管道符和做業控制shell
8.7/8.8 shell變量centos
8.9 環境變量配置文件bash
管道符的做用: 將其左邊命令的輸出做爲右邊命令的輸入app
例如:dom
[root@localhost ~]# cat /etc/passwd | grep 'root' root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
# sleep命令 休眠命令 [root@centos7 ~]# sleep 100 ^Z [1]+ 已中止 sleep 100 [root@centos7 ~]# sleep 200 ^Z [2]+ 已中止 sleep 200 [root@centos7 ~]# sleep 1000 ^Z [3]+ 已中止 sleep 1000
# 查看後臺的命令進程 [root@centos7 ~]# jobs [1] 已中止 sleep 100 [2]- 已中止 sleep 200 [3]+ 已中止 sleep 1000
# fg ID 調用特定的進程,讓其在前臺運行,不加ID默認調用最後一個 [root@centos7 ~]# fg 2 sleep 200 ^Z [2]+ 已中止 sleep 200
[root@localhost ~]# bg 1 [1] sleep 100 & [root@localhost ~]# jobs [1] 運行中 sleep 100 & [2]- 已中止 sleep 200 [3]+ 已中止 sleep 1000
# &符號,讓命令在後臺運行,能夠使用fg命令調出至前臺 [root@centos7 ~]# sleep 10 & [4] 1037
環境變量:PATH、HOME、PWD、LOGNAME... SSH_TTY(當前終端號)ssh
# root用戶的系統系統環境變量,其餘用戶稍有不一樣;env命令不會顯示用戶自定義的變量! [root@centos7 ~]# env XDG_SESSION_ID=1 HOSTNAME=centos7 SELINUX_ROLE_REQUESTED= TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.65.1 50839 22 SELINUX_USE_CURRENT_RANGE= SSH_TTY=/dev/pts/0 USER=root ...
[root@localhost ~]# set BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:histappend:hostcomplete:interactiv e_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu") BASH_VERSION='4.2.46(1)-release' COLUMNS=74 DIRSTACK=() EUID=0 GROUPS=() HISTCONTROL=ignoredups HISTFILE=/root/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/root HOSTNAME=localhost.localdomain HOSTTYPE=x86_64 ID=0 IFS=$' \t\n' LANG=zh_CN.UTF-8 ...
[root@localhost ~]# a_1=111 [root@localhost ~]# echo $a_1 111
變量的值centos7
[root@localhost ~]# a='a b c' [root@localhost ~]# echo $a a b c
[castiel@centos7 ~]$ a=1 [castiel@centos7 ~]$ b=2 [castiel@centos7 ~]$ echo $a$b 12 # 單引號會保留特殊符號 [castiel@centos7 ~]$ a='a$bc' [castiel@centos7 ~]$ echo $a a$bc #雙引號會對特殊符號進行換算,在此以前,bc變量不存在,因此b=a [castiel@centos7 ~]$ b="a$bc" [castiel@centos7 ~]$ echo $b a # 當前$b爲a,c變量被賦值爲aac [castiel@centos7 ~]$ c="a$b"c [castiel@centos7 ~]$ echo $c aac
# 查看當前登陸的終端 [root@localhost ~]# echo $SSH_TTY /dev/pts/0
export
命令能夠將shell內自定義的變量變爲全局變量,可是須要注意的是 export命令只在當前shell及其子shell
下有效,在其父shell
內是無效的!!!spa
概括總結code
# 子shell內設置全局變量a,在其(上行)父shell內該變量無效,其餘終端的shell內也無效! [root@centos7 ~]# bash [root@centos7 ~]# export a=123 [root@centos7 ~]# exit exit [root@centos7 ~]# echo $a # 在當前shell內設置全局變量,其子shell內也有效 [root@centos7 ~]# export a=123 [root@centos7 ~]# echo $a 123 [root@centos7 ~]# bash [root@centos7 ~]# echo $a 123
/etc/profile
用戶環境變量,在交互、登陸login時才執行/etc/bashrc
交互non-login,執行shell就生效~/.bashrc
~/.bash_profile
~/.bash_history
當前shell內執行命令的歷史記錄~/.bash_logout
用戶退出登陸時執行的操做# 在用戶退出時清空其歷史命令記錄 [root@localhost ~]# echo "echo > ~/.bash_history" >> ~./bash_logou
用戶的某些自定義需求命令能夠經過儲存在.bashrc
或.bash_profile
文件內,使之在每次登陸shell時生效!!一樣的也能夠設置在.bash_logout
文件內,使之退出後生效。
在機器上直接用戶密碼登陸,使用ssh
或su
切換用戶登陸---login
不登陸系統而使用ssh
直接在遠程執行命令---non-login
登陸系統後,打開一個新的teminal,該terminal登陸爲non-login !
login shell 調用.bash_profile文件 non-login shell 調用.bashrc文件 !注意:.bash_profile文件執行時也會調用.bashrc
結論:要想某些設置必定被shell調用,最好將其寫入bashrc
文件中!!!
[root@centos7 ~]# echo $PS1 [\u@\h \W]\$ \u 當前用戶 \h hostname \W 當前目錄(相對路徑) \w 當前目錄(絕對路徑) \$ root爲#,普通用戶$
[root@centos7 ~]# echo $PS2 >
select
時的提示符[root@centos7 ~]# echo $PS3
set -x
跟蹤命令執行時的輸出前綴[root@centos7 ~]# echo $PS4 +