8.1 shell介紹
8.2 命令歷史
8.3 命令補全和別名
8.4 通配符
8.5 輸入輸出重定向
8.6 管道符和做業控制
8.7/8.8 shell變量
8.9 環境變量配置文件
8.10擴展:
bashrc和bash_profile的區別
8.11課堂筆記
8.1 shell介紹
8.2 命令歷史
命令存放路徑:/用戶家目錄下/.bash_hsitory
#只有用戶退出總終端的時候纔會將命令緩存保存到文件裏
#默認最大存儲1000條命令
系統內置環境變量HISTSIZE
echo $HISTSIZE #查看HISTSIZE大小
[root@localhost ~]#
echo $HISTSIZE
1000
修改HISTSIZE的配置文件:/etc/profile
#修改事後不會馬上生效,要重登終端或者source /etc/profile
history #查看使用過的命令
histtory -c #清空使用過命令的緩存(刪除不了.bash_hsitory內的命令)
將查看命令歷史設置使用時間
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
#Y/m/d 年/月/日; H:M:S 時:分:秒 (
僅在當前終端生效)
#要想永久在因此終端都生效,將該命令寫進
/etc/profile文件裏面
#將命令歷史永久保存,/用戶家目錄下/.bash_history添加a權限
chattr +a /用戶家目錄下/.bash_history
注意:若是終端沒有正常退出,重登的時候會發現歷史命令保存的不全
!! #執行上一條命令
[root@localhost ~]#
ls
2.txt 3.txt anaconda-ks.cfg asda.txt
[root@localhost ~]#
!!
ls
2.txt 3.txt anaconda-ks.cfg asda.txt
!n #n是命令歷史的排序號
1026 2018/08/12 19:37:25vim /etc/profile
1027 2018/08/12 19:38:43ls
1028 2018/08/12 19:39:26history
[root@localhost ~]#
!1027
ls
2.txt 3.txt anaconda-ks.cfg asda.txt
!word #或者最近使用一次命令的開頭
8.3 命令補全和別名
#參數補全,須要安裝
bash-completion包
Tab鍵按一次,補全命令和參數
Tab鍵按兩次,顯示支持補全的參數
配置別名的文件路徑存放:
/用戶家目錄下/.bashrc
其它自定義別名存放:
/etc/profile.d
8.4 通配符
* #表示通配全部字符
? #表示通配一個字符
[root@localhost ~]#
ls *.txt
1.txt 2.txt 3.txt aa.txt asda.txt a.txt bbb.txt b.txt c.txt
[root@localhost ~]#
ls ?.txt
1.txt 2.txt 3.txt a.txt b.txt c.txt
[ ] #可寫數字,字母,範圍;括號內字符都是或者的關係
[root@localhost ~]#
ls [123].txt
1.txt 2.txt 3.txt
[root@localhost ~]#
ls [0-2].txt
1.txt 2.txt
[root@localhost ~]#
ls [a-z].txt
a.txt b.txt c.txt
[root@localhost ~]#
ls [1-3a-c].txt
1.txt 2.txt 3.txt a.txt b.txt c.txt
[root@localhost ~]#
ls [1-3a-cA-Z].txt
1.txt 2.txt 3.txt a.txt b.txt c.txt
{ } #可寫數字,字母;括號內字符都是或者的關係,可是中間須要用逗號「,」隔開
[root@localhost ~]#
ls {1,2}.txt
1.txt 2.txt
[root@localhost ~]#
ls {1-2}.txt
ls: 沒法訪問{1-2}.txt: 沒有那個文件或目錄
[root@localhost ~]# ls {1,2,3,a,}.txt
1.txt 2.txt 3.txt a.txt
8.5 輸入輸出重定向
一、輸出「>」
cat 1.txt
> 2.txt #
重定向,將1.txt內容刪掉再從新寫入2.txt的內容
cat 1.txt
>> 2.txt #
追加,將2.txt內容追加到1.txt的結尾處的下一行
lsaaa
2> 2.txt #
錯誤重定向,ls命令產生的錯誤信息重定向到2.txt
lsaaa 2>> 2.txt #
錯誤追加劇定向,ls命令產生的錯誤信息追加到2.txt
>+2> == &> #即
&>是重定向和錯誤重定向的結合
例:
一、ls [12].txt abc.txt &> 3.txt
[root@localhost ~]#
ls [12].txt abc.txt &> 3.txt
[root@localhost ~]#
cat 3.txt
ls: 沒法訪問abc.txt: 沒有那個文件或目錄
1.txt
2.txt
二、ls [12].txt abc.txt >3.txt 2>a.txt
[root@localhost ~]#
ls [12].txt abc.txt >3.txt 2>a.txt
[root@localhost ~]#
cat 3.txt
1.txt
2.txt
[root@localhost ~]# ca
t a.txt
ls: 沒法訪問abc.txt: 沒有那個文件或目錄
二、輸入「<」
wc -l < 1.txt #輸入重定向,將1.txt的內容輸入重定向到wc -l
[root@localhost ~]#
wc -l < 3.txt
2
[root@localhost ~]#
2.txt < 3.txt
-bash: 2.txt: 未找到命令
ps:左邊只能是命令
command >1.txt 2>&1
#
&1 表示標準正確輸出目標。由於前面已經定義了
>1.txt 標準正確輸出到了
1.txt,因此
&1就是
1.txt
8.6 管道符和做業控制
cat 1.txt |wc -l #|管道符,把前面命令的結果交給後面命令執行
cat 1.txt |grep 'aaa'
#
Ctrl z 暫停一個任務
jobs #查看後臺任務
fg [ id] #把任務調到前臺 , 不加id默認最後一次暫停的命令
bg[ id] #把任務調到後臺運行,不加id默認最後一次暫停的命令
命令後面加&直接丟到後臺運行
例:
sleep 100 &
[root@localhost ~]#
sleep 100 &
[4] 3384
[root@localhost ~]#
ls
1.txt 3.txt anaconda-ks.cfg a.txt b.txt
2.txt aa.txt asda.txt bbb.txt c.txt
[root@localhost ~]#
jobs
[2]+ 已中止 sleep 100
[3]- 已中止 sleep 1000
[4] 運行中 sleep 100 &
vmstat 1 #顯示實時的系統狀態
sleep 1000 #系統睡眠1000s
8.7/8.8 shell變量
env命令 #查看系統內置變量
set命令 #查看系統內置變量 及用戶自定義的變量
自定義變量a=1111
set |grep a=1111 #經過管道符,set過濾找到a=1111的變量
[root@localhost ~]# s
et |grep a=1111
a=1111
一、變量名規則:首位能夠字母、數字下劃線,首位不能爲數字
二、變量值有特殊符號時須要用
單引號括起來
三、變量的累加
[root@localhost ~]#
a=1
[root@localhost ~]#
b=2
[root@localhost ~]#
echo $a
1
[root@localhost ~]#
echo $ab
[root@localhost ~]#
echo $a$b
12
[root@localhost ~]#
echo a$bc
a
[root@localhost ~]#
echo 'a$b'c
a$bc
[root@localhost ~]#
echo "a$b"c
a2c
[root@localhost ~]#
echo a"$b"c
a2c
ps:設置的變量僅在當前shell窗口bash下有效(本地變量,非全局變量)
bash #建立子shell窗口
pstree #查看當前shell所在窗口
四、全局變量export (針對當前終端)
#全局變量只是向下全局子shell,下一層的子shell定義的全局變量不會再上層顯示
export 定義變量名=變量值 #定義全局變量,全部子shell都能顯示
五、unset 變量名 #取消掉定義的變量
8.9 環境變量配置文件
系統層次:
/etc/profile 用戶環境變量,交互,登陸才執行 #用戶登陸時會加載到
/etc/bashrc用戶不用登陸,執行shell就生效 #系統執行shell時用到
用戶層次:
/用戶家目錄/.bashrc #寫用戶自定義別名
/用戶家目錄/.bash_profile #寫用戶自定義變量
/用戶家目錄/.bash_history #用戶存放歷史
/用戶家目錄/.bash_logout #定義用戶退出時須要作的操做
source .bash_profile == . .bash_profile
[root@localhost ~]#
source .bash_profile
[root@localhost ~]#
. .bash_profile
/etc/bashrc
PS1="[\u@\h \W]\\$ " #就是[root@localhost ~]#這種
改W爲w,能夠顯示爲絕對路徑
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
[root@localhost ~]#PS1='[\u@\h \w]\$'
[root@localhost ~]#cd /etc/yum.repos.d
[root@localhost /etc/yum.repos.d]#
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$' #改字體顏色
8.11課堂筆記
1、
#出現403 forbidden錯誤,緣由是沒有關閉防火牆
Linux防火牆有兩種
一、firewalld
systemctl stop firewalld # 關閉防火牆(
臨時)
systemctl disable firewalld #開機不啓動防火牆(
永久)
二、sexLinux安全機制
有三種狀態
enforceing #sexLinux機制強制地、必須執行
permissive #sexLinux機制只會打印警告
disabled #表示可用,沒有sexlinux策略
#sexLinux存放位置:
/etc/sysconfig/sexlinux(軟鏈接文件)
getenforce #查看sexLinux的狀態
setenforce 0 #關閉sexLinux防火牆(
臨時)
修改
etc/sysconfig/sexlinux,將sexLinux=Enforcing改成sexLinux=
disabled,而後重啓終端就會生效 (
永久)
2、搭建web服務
#能夠經過ip地址在網上查看放在/var/www/html/下的目錄和文件(前提是要關閉防火牆)
#網站內容默認放在/var/www/html/目錄下
#修改網站內容目錄的文件在/etc/httpd/httpd.conf ,修改DocumentRoot「 」雙引號裏面的目錄便可
搭建步:
一、安裝httpd
yum install -y httpd
二、將文件軟連接或者放到/var/www/html/目錄下便可
3、通配符與特殊符號
"^" # 以什麼開頭 例: ^[a-z] ,表示以小寫字母a-z開頭的
"#" # 註釋
"\" #轉義字符,將特殊字符或通配符還原成通常字符
";" #命令銜接符,連續執行兩條命令
"$" # 取用變量符號
"&" #工做控制,將指令變成後臺
運行工做
" '' " #單引號,沒法引用變量
" "" " #雙引號,能夠引用變量
" `` " #反引號,表示指令引用,功能同 $(command)
例 : echo=`pwd`
"2>&1" #表示正確和錯誤的都輸出
例:
ls 1.txt 2.txt 2>&1 >>3.txt #ls 1.txt 和2.txt,將正確和錯誤的信息都追加到3.txt
cat > qq << EOF
#cat的同時往qq裏面覆蓋內容寫入
>
>
>EOF #最後輸入EOF就會結束
cat >> qq << EOF
#cat的同時往qq裏面追加內容寫入
4、巧用垃圾桶
Linux 下有一個特殊的設備
/dev/null ,全部被寫入該設備的東西都會消失,因此若是有部分信息不想輸出至文件,也不想輸出至屏幕,那就輸出至 /dev/null 吧
5、做業控制
ps aux grep| top #查看系統進程ID
殺死進程兩種方式
一、
kill [signal] [進程ID]
經常使用signal
二、
pkill 進程名
6、shell基礎
一、變量的命名
由字母、數字、下劃線組成,且只能以非數字開頭
二、變量的設定
語法:變量名=變量值
注意-1:若是變量值中存在空格,須要用單引號或雙引號將變量值括起來
注意-2:若是變量值中有引用其餘變量,須要
用雙引號將變量值括起來
三、export
# 將變量轉換爲環境變量
語法:
export 變量
[root@choco-01 ~]#
echo $full
Choco Lee @ China
[root@choco-01 ~]#
bash
[root@choco-01 ~]#
echo $full # 進入子 shell 後, 變量失效
[root@choco-01 ~]#
exit
exit
[root@choco-01 ~]#
export full # 聲明該變量爲環境變量
[root@choco-01 ~]#
bash
[root@choco-01 ~]#
echo $full # 進入子 shell 後, 變量仍讓有效
Choco Lee @ China
四、declare
declare [選項] <var_name>
選項:
-
-a:定義變量爲數組
-
-i:定義變量爲純數字
-
-x:定義變量爲環境變量
-
-r:定義變量爲 readonly
五、經常使用環境變量
-
HOME: 當前用戶的家目錄
-
HOSTNAME: 該主機的主機名
-
USER: 當前用戶的用戶名
-
SHELL: 當前使用的 shell 類型
-
HISTSIZE: 可存儲的歷史命令條數
-
MAIL: 當前用戶的郵箱
-
PATH: 可執行命令的所在目錄
-
LANG: 當前語系
-
PS1: 命令提示符的格式, 可玩性較高, 但工做中不經常使用, 可自行 man bash 查看 PS1 的設置方法
-
PS2: 輸入命令時強制換行後的提示符
-
OSTYPE: 當前操做系統類型
-
MACHTYPE: 安裝的機器類型
-
HOSTTYPE: 主機的位數, x86 仍是 x86_64
六、環境變量配置文件
6.1啓動加載文件順序: (須要掌握)
6.2設定環境變量
-
PATH:根據 UID 決定PATH 變量是否要包含 sbin 目錄
-
USER:根據 id 命令的結果,顯示用戶名
-
LOGNAME:等於 USER
-
MAIL:配置好用戶的郵箱
-
HOSTNAME:根據 hostname 指令,決定該變量值
-
HISTSIZE:直接設定歷史命令記錄的條數爲 1000