使用者正常退出shell時,系統會將敲過的命令存入.bash_history中。「!」與history有莫大的關聯。
1)!!表示執行上一條命令
2)!n,n表示數字,表示執行history中第n條命令
3)!可以進行模糊匹配,如:!pass可以執行之前輸過的passwd命令
將複雜的命令賦值給乙個簡單的別名
1)alias顯示當前系統已經存在的別名
2)設定別名,alias yx='fdisk -l',輸入yx則可以執行fdisk -l命令。注意:如果將系統已存在的命令設定為其他命令的別名,會覆蓋系統命令的含義,unalias取消別名
ctrl+z暫停現在正在進行的工作,通過jobs來檢視,fg前台執行和bg後台執行來恢復。jobs前面有顯示作業的編號,fg或者bg加作業編號繼續執行。
path代表了所有常用命令的絕對路徑,使得一些常用命令不用輸入絕對路徑就可以直接執行。
1)echo $path會顯示當前設定的路徑,以:分隔
2)如果要新增路徑,則可以在家目錄下的.bash_profile檔案中的path末尾追加需要新增的路徑,並且source .bash_profile使之生效。如:path=$path:$home/bin:/tmp
3)環境變數的顯示和生效問題
a)env命令顯示所有系統預設的環境變數,set命令顯示系統預設變數和使用者定義的變數
b)自定義變數只在當前shell中生效,bash新開乙個shell之後自定義變數無效
c)可以用pstree | grep bash來檢視當前的shell
d)如果想讓變數在所有shell中生效,又不修改配置檔案,可以在配置變數的shell中再用export在子shell中宣告此變數
[root@localhost ~]# yx=xy4)/etc/profile中加入export yx=xy,並且source /etc/profile 使得定義的變數在所有使用者的所有shell中生效;而在使用者家目錄的.bashrc中寫入export yx=xy並且讀取之後,對當前使用者的所有shell生效。[root@localhost ~]# export yx
a)若變數內容帶空格,則需要單引號括起來b)若變數內容帶單引號,則需要雙引號括起來[root@localhost ~]# yx='x y'
[root@localhost ~]# echo $yx
x y
[root@localhost ~]# yx="x'y"c)若變數內容帶系統命令,並且希望echo 變數之後命令執行。則需要用反引號括起來[root@localhost ~]# echo $yx
x'y
[root@localhost ~]# yx=`pwd`d)若變數內容需要引用其他變數,則其他變數要用雙引號括起來[root@localhost ~]# echo $yx
/root
[root@localhost ~]# yx="$home"xy在這裡要提一下,單引號會取消其中特殊字元的含義,而雙引號不會[root@localhost ~]# echo $yx
/rootxy
5)unset可以取消變數的賦值
1)*代表零個或者多個任意字元
2)?代表乙個任意字元
3)\脫意字元,去除像*、?等這樣字元的特殊含義,讓他們變成單純顯示符
ls -d yx* 表示列出所有以yx開頭的資料夾
ls -d yx\* 表示列出資料夾名為yx*的資料夾
注意:這裡的脫意字元要和轉義字元區分。轉義字元利用\加常見的字母或數字來顯示那些不能顯示的ascii字元。如:\t 表示tab鍵,\n 表示enter鍵
4)!$代表上乙個命令最後的那個變數
5)|| 前面的命令執行成功則不執行第二條命令
將前面命令執行所得到的結果丟給管道後面的命令,通常配合其他常用的命令一起使用
1)wc命令。統計檔案的行數、單詞數、檔案大小等資訊。
a)2)cut命令。用來擷取某個字段。[root@localhost ~]# echo 'hello world' > test.txt
[root@localhost ~]# cat test.txt | wc
1 2 12
1代表檔案的行數,2代表檔案內容的單詞總數(以空格分隔),12代表檔案的大小位元組數
b)-l 統計檔案行數
c)-c 統計檔案位元組數
d)-m 統計檔案的字元數(包括字母、數字、特殊字元)
注意:每行的行末都會有乙個隱藏的結束符$所以統計的時候會加上這個字元
e)-w 統計檔案的單詞數(以空格為分隔符)
f)-l 統計檔案最長行的字元數(以字元計算長度)
最常用的語法為:cut -d'分隔符' -f第幾字段a)-c 顯示每一行的第n個到第m個字元,如:其實不加單引號-d後面直接跟分隔符也是可以的,但是個人習慣加單引號,若分隔符為單引號',則用雙引號將其括起來,如:
[root@localhost tmp]# cat test
a'b'c'd'e
[root@localhost tmp]# cat test | cut -d"'" -f3
c
[root@localhost tmp]# cat testhello world
i am bob
[root@localhost tmp]# cat test | cut -b1-7
hello w
i am bo
b)-s 不顯示不包含分隔符的行,如:
[root@localhost tmp]# cat testhello world
i am bob
#$%^
[root@localhost tmp]# cat test | cut -d' ' -f1 -s
hello
i
3)sort命令。內容排序。
-t 分隔符 :作用跟cut的-d乙個意思-n :使用純數字排序
-r :反向排序
-u :去重複
a)例:head -n5 /etc/passwd | sort -t: -k3 -n -r -u
[root@aca-ct-1-250 ~]# head -n5 /etc/passwd |sort -t: -k3 -n -r -u
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
4)uniq命令。去除重複行。
-c :統計重複的行數,並把行數寫在前面a)例:
[root@aca-ct-1-250 ~]# cat test
aaabbb
cccaaa
[root@aca-ct-1-250 ~]# sort test | uniq -c
2 aaa
1 bbb
1 ccc
5)tee命令。相當於》,不同的是在重定向的同時在螢幕上輸出,常用在|之後。
a)例:[root@aca-ct-1-250 ~]# echo "hello" | tee test.txt
hello
6)tr命令。替換命令,用來替換文件中的內容。
-d:刪除某個字元-s:刪除重複的字元
[root@aca-ct-1-250 ~]# cat test.txt
hello
[root@aca-ct-1-250 ~]# cat test.txt |tr [a-z] [a-z]
hello
[root@aca-ct-1-250 ~]# cat test.txt |tr -d h
ello
[root@aca-ct-1-250 ~]# cat test.txt |tr -s l
helo
ubuntu學習筆記 shell基礎應用(1)
一.標準輸入輸出 1 命令cat是乙個把鍵盤作為標準輸入,把螢幕作為標準輸出。輸入cat命令,再按下回車鍵,然後在鍵盤輸入this is test1,按回車鍵後螢幕會顯示this is test2。按下ctrl c,結束cat命令的執行。如下 cat this is test1 this is te...
SHELL學習筆記(1)
第二章入門 1.wc 字數計算次序 可以列印出行數,字元數,字數等,分別為wc l or wc c or wc w 2.shell可以識別三種命令 內建命令,shell函式和外部命令 3.the usage of echo r 回車 t 水平製表符 v 垂直製表符 a 警示 b 退格 c 這個引數之...
Shell學習筆記1
運算子 語法 表示式1,表示式2 特點 1 在雙括號結構中,所有表示式可以像c語言一樣,如 a b 等。2 在雙括號結構中,所有變數可以不加入 符號字首。3 雙括號可以進行邏輯運算,四則運算 4 雙括號結構 擴充套件了for,while,if條件測試運算 5 支援多個表示式運算,各個表示式之間用 分...