8.6 管道符和做業控制 8.7/8.8 shell變量 8.9 環境變量配置文件

管道符 |

  • 管道符的做用是將前面一個命令的輸出做爲後面一個命令的輸入
[root@linux-128 ~]# cat /etc/passwd |wc -l
27
[root@linux-128 ~]# cat /etc/passwd |grep "root"
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

做業控制

  1. 當一個進程運行時,ctrl+z 能夠暫停這個任務
[root@linux-128 ~]# sleep 100
^Z
[1]+  已中止               sleep 100
  1. 當暫停後,能夠輸入fg(foreground簡寫)命令來恢復這個進程,讓它在前端繼續運行。
[root@linux-128 ~]# fg
sleep 100
  1. 咱們也可使用命令bg(background簡寫)將暫停的進程直接丟到後臺運行。
[root@linux-128 ~]# bg
[1]+ sleep 100 &
  1. 咱們可使用命令jobs來查看有那些進程是被暫停了。
[root@linux-128 ~]# jobs
[1]-  已中止               sleep 100
[2]+  已中止               sleep 200
  1. 咱們能夠直接將一條命令丟在後臺運行。
[root@linux-128 ~]# sleep 300 &
[3] 2180
[root@linux-128 ~]# jobs
[1]-  已中止               sleep 100
[2]+  已中止               sleep 200
[3]   運行中               sleep 300 &

變量

  • 變量就是使用一個比較簡單的字符串來代替某些具備特殊意義的設定以及數據。
  • 環境變量PATH,它是shell預設的一個變量,一般shell預設的變量都是大寫的。
[root@linux-128 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@linux-128 ~]# echo $HOME
/root
[root@linux-128 ~]# echo $HISTSIZE
5000

命令env

  • 使用env命令能夠列出系統預設的所有系統變量
[root@linux-128 ~]# env
XDG_SESSION_ID=1
HOSTNAME=linux-128
TERM=xterm
SHELL=/bin/bash
HISTSIZE=5000
SSH_CLIENT=192.168.88.1 54716 22
SSH_TTY=/dev/pts/0
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.88.1 54716 192.168.88.128 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env
  • HOSTNAME:表示主機的名稱;
  • SHELL:表示當前用戶的shell類型;
  • HISTSIZE:表示歷史記錄數;
  • MAIL:表示當前用戶的郵件存放目錄;
  • PATH:改變量決定了shell將到那些目錄中尋找命令或者程序;
  • PWD:表示當前目錄;
  • LANG:這是與語言相關的環境變量,多語言環境能夠修改此環境變量;
  • HOME:表示當前用戶的家目錄;
  • LOGNAME:表示當前用戶的登陸名;

命令set

  • 命令set不只能夠顯示系統預設的環境變量,還能夠顯示用戶自定義的變量。

自定義變量規則:前端

  • 設定變量的格式爲a=b,其中a爲變量名,b爲變量的內容,等號兩邊不能有空格;
  • 變量名只能由字母,數字以及下劃線組成,並且不能以數字開頭。
  • 當變量值帶有特殊字符(如空格)時,須要加上單引號。

[root@linux-128 ~]# name=wu zhou
-bash: zhou: 未找到命令

[root@linux-128 ~]# name='wu zhou'
[root@linux-128 ~]# echo $name
wu zhou
  1. 變量內容自己就帶有單引號,這個時候須要加上雙引號
[root@linux-128 ~]# name="wu'zhou"
[root@linux-128 ~]# echo $name
wu'zhou
  1. 若是變量內容中須要用到其餘命令,運行結果則可使用反引號;
[root@linux-128 ~]# name=`pwd`
[root@linux-128 ~]# echo $name
/root
  1. 變量內容能夠累加其餘變量的內容,單須要加上雙引號
[root@linux-128 ~]# a=1
[root@linux-128 ~]# b=2
[root@linux-128 ~]# c=3
[root@linux-128 ~]# d="$a$b$c"
[root@linux-128 ~]# echo $d
123
  1. 查看當前在那個終端下:
[root@linux-128 ~]# echo $SSH_TTY
/dev/pts/0
  1. 若是再當前shell中運行bash命令,則會進入一個新的shell中,這個shell是原來shell的子shell,咱們能夠用pstree來查看: 須要先安裝一個包:
[root@linux-128 ~]# yum install -y psmisc

systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon
        ├─firewalld───{firewalld}
        ├─irqbalance
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash─┬─bash───pstree
        │                    └─2*[sleep]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
  1. 設置全局變量
export a=11
  • 注意:export聲明變量a後,只會讓該shell的子shell或者孫shell生效,可是不會讓它的父shell和其餘終端的shell生效。
  1. 撤銷變量 unset 變量名

系統環境變量和我的環境變量

  • /etc/profile 用戶環境變量,交互,登陸才執行
  • /etc/bashrc 用戶不用登陸,執行shell就生效
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.bash_history
  • ~/.bash_logout
  • PS1='[\033[01;32m]\u@\h[\033[00m]:[\033[01;36m]\w[\033[00m]$ '

環境變量分爲系統層次變和用戶層次linux

  • /etc/profile 設置系統環境變量,無論針對哪一個用戶這些環境變量都會生效,可是設置這個配置文件

不太好,編輯的時候會有一段提示: 這不是一個好主意來改變這個文件,除非你知道你 正在作的事情。若是你想更改某些環境變量,最好在/etc/profile.d /下去自定義,建立格式爲XXX.sh, 在將來的更新將防止合併的必要性。shell

[root@wuzhou ~]# ls /etc/profile.d
colorls.csh glib2.csh lang.csh less.csh path.sh vim.sh
colorls.sh glib2.sh lang.sh less.sh vim.csh which2.sh

[root@wuzhou ~]# vim /etc/profile.d/path.sh 
#!/bin/path
export PATH=$PATH:/tmp/:/data/bin/
  • 編輯完後要source /etc/profile,加載的時候會調用profile.d下面的全部文件。vim

  • /etc/bashrc 設置PS1和umask; 它和/etc/profile同樣,在/etc/bashrc設置很差,要在/etc/profile.d下去定義,建立格式爲.sh的文件bash

  • 進去編輯配置,完成後source /etc/profile 加載一下。less

[root@wuzhou ~]# vim /etc/profile.d/umask.sh
#bsah/bin
PS1="[\u@\h-\t \W]\$ "
[root@wuzhou ~]# source /etc/profile
[root@wuzhou-21:41:13 ~]$ ls
  • \u 用戶名 \h主機名 \t 時間 \W 當前目錄 \w 目錄的完整路徑 $ 就是#,若是普通用戶就是$ssh

  • .bash_profile 定義用戶本身的環境變量,每一個用戶均可以使用該文件輸入專用於本身使用的code

  • shell信息,當用戶登錄時,該文件僅僅執行一次blog

  • .bashrc :文件包含專屬用戶本身的shell的bash信息,登錄時以及每次打開新的shell時,該文件都被讀取。能夠將用戶之定義的alias或者自定義變量寫到這個文件中進程

  • .bash_history 記錄命令歷史用的

  • .bash_logout 退出shell時,會執行該文件,能夠把一些清理的工做放到這個文件中。

  • .更改PS1變量值,變顏色: [root@hao-01 ~]# PS1='[\033[01;32m]\u@\h[\033[00m]:[\033[01;36m]\w[\033[00m]$'

相關文章
相關標籤/搜索