現在看到bash,在寫這篇博客的時候已經是第二遍看了
type:bash的內置命令
不加任何參數時,會顯示是外部命令還是內部命令
-t:列出的字眼的意思
file:外部命令
alias:有別名
builtin:內部命令
-p:後面接的是外部命令,才會顯示完整的文件名
-a:將所有含name的命令都列出來,包括別名
命令的執行:
shell的變量功能
例如:username=/var/spool/mail/user ......$username....... 直接輸入$username代替
變量:就是以一組文字或符號等,來替代一些設置或是一串保留的數據
變量的顯示與設置:echo和unset
設置就是=號 XXX=yyyyy
雙引號和單引號:雙引號帶便原有的特性,單引號僅為一般字符
引號必須要配對,不管單雙
`:1旁邊的按鍵,命令行裡首先執行`後面的。
例:ll `whereis path` 先執行whereis
環境變量
env
主要注意以下幾個:
HOME:代表用戶的主文件夾
SHELL:告知目前這個環境使用的shell是哪個程序
HISTORY:記錄歷史信息的條數
MAIL:讀取郵件信箱文件
PATH:執行文件查找的路徑
LANG:語系數據
RANDOM:“隨機數”的變量
所有變量
set
PS1:提示符的設置
\d:顯示日期
\H:完整的主機名
\h:僅取主機名在第一個小數點前的名字
\T:顯示時間
\A:顯示時間
\u:目前賬戶名稱
\v:BASH的版本信息
\w:完整的工作目錄名稱
\W:列出工作目錄名稱
\#:執行的第幾個命令
\$:提示符 root為# 其他為$
export
自定義變量轉出環境變量
locale
影響顯示結果的語系變量
一般記住LANG和LC-ALL就可以了
系統默認的語系定義在/etc/sysconfig/i18n
變量的有效范圍
環境變量=全局變量
自定義變量=局部變量
變量鍵盤讀取、數組與聲明:
read:
-p:後面接提示符
-t:後面可以接“秒數”
read atest
this is a test
輸入了可以顯示
read -p 'please keyin your name:' -t 30 named
declare/typeset:
聲明變量的類型
-a:將變量定義為數組型
-i:將變量定義為整數數字型
-x:將變量變為環境變量
-r:將變量設置為只讀型
-p:單獨列出變量的類型
數組變量類型
array
與文件系統及程序的限制關系
ulimit
-H:嚴格的設置,必定不能操過這個數值
-S:警告設置
-a:列出所有的限制額度
-c:限制內核文件最大容量
-f:可以創建的單個文件最大容量
-d:可以使用的最大斷裂內存
....... 一般做ulimit -a就能看到怎麼做
變量內容的刪除、替代與替換
#代表刪除,從變量的最前面開始向右刪除,刪除最短的那個
##代表刪除最長的
echo ${path#/*bin:}
%從最後開始向前刪除,刪除最短那個
%%刪除最長那個
echo ${path%:*bin}
替換功能
echo ${path/bin/BIN} 替換第一個
echo ${path//bin/BIN} 替換所有
變量的測試與內容替換
echo ${username-root} 如果沒有username,那就取root
username=${username:-root} 如果用:後變量為空或未設置,都能以後面的內容替換
unset str
var=${str-newer} 得出var=newer str=
str=older
var=${str-newer} 得出var=older str=older
unset str
var=${str=newer} 得出var=newer str=newer
str=older
var=${str=newer} 得出var=older str=older
unset str
var=${str?無此變量}
命令的別名和歷史命令
alias、unalias
其實就一條:alias XXX=XXXX
如果要永久設置的話,一般是在~/.bashrc裡面
歷史命令
history
!!:執行上一個命令
!數字:代表執行地幾條
!file:代表找開頭是file的命令,執行
type -a 命令查找的順序
/etc/issue /etc/motd
/etc/issue:tty登陸的時候顯示的信息
/etc/motd:telnet登陸的時候顯示的信息
bash環境變量配置
login和non-login shell
用戶名和密碼登陸的是login 不用的是non-login
/etc/profile是系統整體設置
~/.bash_profile ~./bash_login ~/.profile屬於個人用戶設置
看/etc/profile文件
/etc/inputrc
一般不修改
/etc/profile.d/*.sh
擴展名為sh的文件
/etc /sysconfig/i18n
系統默認語系
這三個文件login shell只會讀取其中一個,順序如下
~/.bash_profile
~/.bash_login
~/.profile
改變/etc/profile和~/.bash_profile需要source來更新生效。
source filename:
etc/bashrc是redhat特有的
如果.bashrc被誤刪除了,可以復制etc/skel/.bashrc到家目錄 再進行修改
stty -a
列出目前環境的所有按鍵選項
^代表ctrl
eof:end of file 結束
intr:代表中斷
kill:代表刪除現在命令行上面的所有文字
quit:代表送出個quit信號
start:在某個程序停止後,重新啟動他的output
設置的話 stty XXX ^XXX
通配符
*:代表任意字符
?:代表一定有一個任意字符
[]:代表一定有括號裡面的一個字符
【-】:在編碼順序內癿所有字符
【^]:代表反向
例:找出 /etc/ 底下以 cron 為開頭癿檔名
ll -d /etc/cron*
數據流重導向
> >>
>代表正確的數據輸出到某個文檔內
>>代表累加形式
cat /etc/passwd>ls1 cat /etc/shadow>>ls1 (ls1的內容就會是passwd+shadow)的內容了
< <<
cat > catfile < ~/.bashrc
建立catfile,內容從.bashrc中得到
<<代表輸入特定字符結束
cat>test<<end
輸入end就會結束
管道命令
cut
-d:後面接分割字符
-f:依據-d
-c:指定的字符長度
cut -d ':' -f 3 /etc/passwd
cut -c 12-20 截取12-20這幾個字符
grep
搜尋文檔
-a:以text形式找
-c:計算找到的次數
-i:忽略大小寫
-n:輸出行號
-v:反向選擇
--color=auto:自動加亮標記
例:
last |grep 'root'
last | grep 'root' -v -n
sort
排序
-f:忽略大小寫
-b:忽略前面的空格
-M:以月份來排序
-n:以數字來排序
-r:反向排序
-u:有重復只列出一個
-t:分隔符
-k:以區間來排序
例:cat /etc/passwd |sort -t ':' -k 3 -n
重復只列出一個
uniq
-i:忽略大小寫
-c:計數
cat /etc/passwd | cut -d ':' -f 3| sort -n |uniq -c
wc:
計數
-l:列出行數
-w:列出英文單詞數
-m:列出字符數
tee:
雙重引導
-a:累加
例:last |tee /testfile
這個命令和>的區別就是會在屏幕上面顯示出來而已
字符轉換命令
tr:【-ds】
替代或者刪除信息
-d:刪除信息
-s:去掉重復的字符
cat /passwd |tr '[a-z][A-Z]'
col:把tab鍵轉成空格鍵
join:
有相同的字符時,可以連接起來