1. 程式人生 > >管道符和作業控制 & shell變量& 環境變量配置文件

管道符和作業控制 & shell變量& 環境變量配置文件

分享圖片 com ota src 歷史 字母 lee shell變量 個人

管道符 |

用於將前一個指令的輸出作為後一個指令的輸入

[root@pantinglinux ]# cat 1.txt | wc -l
2
[root@pantinglinux ]# cat 1.txt
1.txt
2.txt

[root@pantinglinux ]# find ./ -type f | wc -l
37

作業控制

當運行進程時,按ctrl+z使它暫停,然後使用fg命令恢復,或者利用bg命令使它到後臺運行。ctrl+c可以使它終止。

[root@pantinglinux ]# vim 1.txt

[1]+ 已停止 vim 1.txt

[root@pantinglinux ]# fg 調到前臺來

[root@pantinglinux ]# vim aa.txt

[2]+ 已停止 vim aa.txt
[root@pantinglinux ]# jobs
[1]- 已停止 vim 1.txt
[2]+ 已停止 vim aa.txt

[root@pantinglinux ]# fg 2 前臺調用2,aa.txt

[root@pantinglinux ]# bg 2 後臺調用2
[2]+ vim aa.txt &
[root@pantinglinux ]# jobs
[1]- 已停止 vim 1.txt
[2]+ 已停止 vim aa.txt

[root@pantinglinux ]# fg 2 :q退出
vim aa.txt
[root@pantinglinux ]# jobs
[1]+ 已停止 vim 1.txt

[root@pantinglinux ]# sleep 1000 睡眠1000秒
^Z
[1]+ 已停止 sleep 1000 ctrl+z暫停
[root@pantinglinux ]# jobs
[1]+ 已停止 sleep 1000
[root@pantinglinux ]# sleep 200 睡眠200秒
^Z                 ctrl+z暫停
[2]+ 已停止 sleep 200
[root@pantinglinux ]# jobs
[1]- 已停止 sleep 1000
[2]+ 已停止 sleep 200
[root@pantinglinux ]# fg 前臺調用最後一個任務 sleep 200
sleep 200
^Z 然後暫停
[2]+ 已停止 sleep 200
[root@pantinglinux ]# bg 1 後臺運行sleep 1000
[1]- sleep 1000 &
[root@pantinglinux ]# jobs
[1]- 運行中 sleep 1000 &
[2]+ 已停止 sleep 200

[root@pantinglinux ]# fg 1
sleep 1000
^C
[root@pantinglinux ]# fg 2
sleep 200
[root@pantinglinux ]# ^C
[root@pantinglinux ]# jobs

[root@pantinglinux ]# sleep 100 & sleep 100命令直接丟到後臺運行
[1] 2632
[root@pantinglinux ]# jobs
[1]+ 運行中 sleep 100 &

技術分享圖片

env命令

可以列出系統預設的全部系統變量

[root@pantinglinux ]# env 只列出了部分
XDG_SESSION_ID=1
HOSTNAME=lizhipeng01
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=5000
SSH_CLIENT=192.168.5.1 3399 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:

HOSTNAME:表示主機名

SHELL:表示當前用戶的shell類型

HISTSIZE:表示歷史記錄數

MAIL:表示當前用戶的郵件存放目錄

PATH:該變量決定了shell將到哪些目錄中尋找命令或程序

PWD:表示當前目錄

LANG:與語言相關的環境變量

HOME:表示當前用戶的家目錄

LOGNAME:表示當前用戶的登錄名

set命令
和env命令類似,可以輸出環境變量。set命令不僅可以顯示系統預設的變量,也可以顯示用戶自定義的變量。

[root@pantinglinux ]# myname=Lizhipeng
[root@pantinglinux ]# echo $myname
Lizhipeng
[root@pantinglinux ]# set |grep myname
myname=Lizhipeng

但是這個自定義變量只能在當前shell中生效

[root@pantinglinux ]# name=li
[root@pantinglinux ]# echo $name
li
[root@pantinglinux ]# bash
[root@pantinglinux ]# echo $name

[root@pantinglinux ]# exit
exit
[root@pantinglinux ]# echo $name
li

使用bash命令可以再打開一個shell,此時先前設置的name變量已經不存在了,退出當前的shell回到原來的shell,name變量還在。如果想讓設置的環境變量一直有效,可以有兩種方法。

1.允許系統內所有用戶登錄後都能使用該變量。具體做法:在/etc/profile文件的最後一行加入export name=li,然後運行 source /etc/profile就能生效了。再運行bash命令或者切換到其他賬戶就能看到效果

[root@pantinglinux ]# vi /etc/profile
[root@pantinglinux ]# source /etc/profile
[root@pantinglinux ]# echo $name
li
[root@pantinglinux ]# bash
[root@pantinglinux ]# echo $name
li

[root@pantinglinux ]# su - lizhipeng
上一次登錄:二 12月 26 07:11:46 CST 2017從 192.168.5.1pts/0 上
[lizhipeng@lizhipeng01 ~]$ echo $name
li

2.僅允許當前用戶使用該變量。具體操作方法:在用戶主目錄下的.bashrc文件的最後一行加入export name=li2,然後source .bashrc就能生效了。source命令的作用是將目前設定的配置刷新,即不用註銷再登錄也能生效。

[root@pantinglinux ]# vi .bashrc
[root@pantinglinux ]# echo $name 沒有生效,因為沒有source
li
[root@pantinglinux ]# source .bashrc
[root@pantinglinux ]# echo $name 生效了
li2
[root@pantinglinux ]# su - lizhipeng
上一次登錄:四 1月 11 04:49:12 CST 2018pts/0 上
[root@pantinglinux ~]$ echo $name
li

變量定義規則

1.設定變量的格式為a=b,其中a為變量名,b為變量的內容,等號兩邊不能有空格;

2.變量名只能由字母、數字以及下劃線組成,而且不能以數字開頭。

3.當變量內容帶有特殊字符(如空格)時,需要加上單引號

[root@pantinglinux ]# name=‘li ju‘
[root@pantinglinux ]# echo $name
li ju
[root@pantinglinux ]# name="li‘s" 當變量內容中本身帶有單引號,這是需要加雙引號
[root@pantinglinux ]# echo $name
li‘s

[root@pantinglinux ]# name=`pwd` 如果變量內容中需要用到其他命令,運行結果則可以使用反引號
[root@pantinglinux ]# echo $name
/root

[root@pantinglinux ]# name="$name"AAA 變量累積,加的是雙引號
[root@pantinglinux ]# echo $name
/rootAAA

[root@pantinglinux ]# name=‘$name‘AAA 加的是單引號,裏面的特殊字符全部失去其本身的作用
[root@pantinglinux ]# echo $name
$nameAAA

系統環境變量與個人環境變量的配置文件

技術分享圖片

/etc/profile:這個文件預設了幾個重要的變量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等

/etc/bashrc:預設umask以及PS1。PS1就是我們輸入命令時前面的那串字符

[root@pantinglinux ]# echo $PS1
[\u@\h \W]\$

\u指用戶,\h指主機名,\W指當前目錄,\$指字符#(如果是普通用戶,則顯示$)

.bash_profile:該文件定義了用戶的個人化路徑與環境變量的文件名稱。每個用戶都可使用該文件輸入專屬於自己的shell信息,當用戶登錄時,該文件僅僅執行一次。

.bashrc:該文件包含專屬於自己的shell的bash信息,當登錄或每次打開新的shell時,該文件會被讀取。

.bash_history:該文件用於記錄命令歷史。

.bash_logout:當退出shell時,會執行該文件。

[root@pantinglinux ]# echo $PS2
>
[root@pantinglinux ]# for i in `seq 1 10`
> do
> echo $i
> done

管道符和作業控制 & shell變量& 環境變量配置文件