一:用戶登錄
root用戶:管理員賬戶,也被稱為超級用戶,root擁有對Linux系統的所有權限,甚至可以把自己殺死(rm -rf /*),除非必須,一般不用root用戶登錄系統
普通用戶:權限受到限制,只可以對自己有權限的文件進行操作
二:終端(terminal)
終端:
- 設備終端:鼠標,鍵盤,顯示器
- 物理終端:控制臺(/dev/console)
- 虛擬終端:/dev/tty[1-6] 在物理機旁邊可以使用Alt+F【1-6】進行切換
- 串行終端:/dev/ttyS
- 偽終端:/dev/pts/# 通過ssh遠程即可打開一個偽終端
ps:可以使用#tty命令來查看當前終端
[root@centos6 ~]#tty /dev/pts/0
交互式接口:
交互式接口:啟動終端后,在終端設備附加一個交互式應用程序
- GUI:Graphic User Interface,及圖形化窗口,常見圖形桌面有GNOME、KDE和XFCE等,CentOS默認為GNOME桌面
- CLI:Command Line Interface,及命令行窗口,常用的shell有sh、csh、tcsh、ksh、bash和zsh等,默認shell為bash
[root@centos6 ~]#cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh
可以看到系統支持的shell
shell:
shell也被稱為LINUX的命令解釋器(command interpreter)。是Linux系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行。同時shell也是一種高級程序設計語言,即bash腳本語言
bash:
GNU Bourne-Again Shell(bash)是GNU計劃中重要的工具軟件之一,目前也是Linux標準的shell,與sh兼容。同時也是CentOS的默認shell。
[root@centos6 ~]#echo $SHELL /bin/bash
命令提示符:
管理員的是#,普通用戶為$。使用echo $PS1可以查看當前用戶的提示符格式,也可以修改變量或者寫入/etc/profile.d/file.sh來自定義用戶提示符。
常用參數:
\u 當前用戶
\h 主機名簡稱
\H 主機名
\w 當前工作目錄
\W 當前工作目錄基名
\t 24小時時間格式
\T 12小時時間格式
\! 命令歷史數
\# 開機后命令歷史數
命令分類:
shell中的命令有倆類,內部命令和外部命令,使用help或enable可以列出內部命令列表。
內部命令:由shell自帶,而且通過某命令形式提供
enable
cmd 啟用內部命令
-n cmd 禁用內部命令
-n 查看所有已禁用的內部命令
?外部命令:在文件系統路徑下有對應的可執行文件,可使用:which –skip-ailas cmd 查看命令可執行文件的路徑
[root@centos6 ~]#which --skip-alias ls /bin/ls
ps:使用type命令可以判斷命令是內部命令還是外部命令,如果顯示路徑則是外部命令
[root@centos6 ~]#type pwd pwd is a shell builtin [root@centos6 ~]#type ls ls is aliased to `ls --color=auto'
Hash緩存
系統初始hash表為空,當外部命令執行時,默認會從PATH路徑下尋找該命令,找到后會將這條命令的路徑記錄到hash表中,當再次使用該命令時,shell解釋器首先會查看hash表,存在將執行之,如果不存在,將會去PATH路徑下尋找。利用hash緩存表可大大提高命令的調用速率。
hash
-l 顯示hash緩存
-p path cmd 將命令全路徑path起別名為cmd
-t cmd 打印緩存中name的路徑
-d cmd 清除cmd緩存
-r 清除全部緩存
命令別名(alias)
alias?顯示當前shell中已定義的命令別名
CMD=‘VALUE’ 定義別名
unalias?name取消別名
-a 取消所有別名
如果想永久生效需要寫入~/.bashrc(對當前用戶生效)或/etc/bashrc(對所有用戶生效,全局),不建議修改全局配置文件
ps: 使用source或.可重讀配置文件,使其立即生效
如果別名和原命令名重名,使用雙引號、單引號或者\來執行原命令
命令格式
COMMAND [OPTIONS…] [ARGUMENTS…]
選項分為長選項和短選項,如下,執行結果是一樣的
[root@centos6 ~]#ls -a . clear .gnome2 install.log.syslog .pulse-cookie .. .config .gnote .kde .ssh .abrt .cshrc .gnupg .local .tcshrc anaconda-ks.cfg .dbus .gstreamer-0.10 motd Templates .bash_history Desktop .gtk-bookmarks Music Videos .bash_logout Documents .gvfs .nautilus .viminfo .bash_profile Downloads .ICEauthority Pictures .Xauthority .bashrc .esd_auth .imsettings.log Public .cache .gconf install.log .pulse [root@centos6 ~]#ls --all . clear .gnome2 install.log.syslog .pulse-cookie .. .config .gnote .kde .ssh .abrt .cshrc .gnupg .local .tcshrc anaconda-ks.cfg .dbus .gstreamer-0.10 motd Templates .bash_history Desktop .gtk-bookmarks Music Videos .bash_logout Documents .gvfs .nautilus .viminfo .bash_profile Downloads .ICEauthority Pictures .Xauthority .bashrc .esd_auth .imsettings.log Public .cache .gconf install.log .pulse
參數是命令的作用對象,如文件名、用戶名等
[root@centos6 ~]#id root uid=0(root) gid=0(root) groups=0(root)
ps:
- 多個選項以及多參數和命令之間使用空白字符分隔
- 取消和結束命令執行:Ctrl+c,Ctrl+d
- 多個命令可以用;符號分開
- 一個命令可以用\分成多行
日期和時間
Linux分為倆種時鐘,系統時鐘和硬件時間,系統時間由CPU振蕩器計時,硬件時間為主板BIOS時間
date?可以用來顯示或設定系統的日期與時間。
-d<字符串>:顯示字符串所指的日期與時間。 -s<字符串>:根據字符串來設置日期與時間。
%H 小時(以00-23來表示)。 %I 小時(以01-12來表示)。 %K 小時(以0-23來表示)。 %l 小時(以0-12來表示)。 %M 分鐘(以00-59來表示)。 %P AM或PM。 %r 時間(含時分秒,小時以12小時AM/PM來表示)。 %s 總秒數。起算時間為1970-01-01 00:00:00 UTC。 %S 秒(以本地的慣用法來表示)。 %T 時間(含時分秒,小時以24小時制來表示)。 %X 時間(以本地的慣用法來表示)。 %Z 市區。 %a 星期的縮寫。 %A 星期的完整名稱。 %b 月份英文名的縮寫。 %B 月份的完整英文名稱。 %c 日期與時間。只輸入date指令也會顯示同樣的結果。 %d 日期(以01-31來表示)。 %D 日期(含年月日)。 %j 該年中的第幾天。 %m 月份(以01-12來表示)。 %U 該年中的周數。 %w 該周的天數,0代表周日,1代表周一,異詞類推。 %x 日期(以本地的慣用法來表示)。 %y 年份(以00-99來表示)。 %Y 年份(以四位數來表示)。 %n 在顯示時,插入新的一行。 %t 在顯示時,插入tab。 MM 月份(必要) DD 日期(必要) hh 小時(必要) mm 分鐘(必要) ss 秒(選擇性)
hwclock, clock : 顯示硬件時鐘
-s, –hctosys以硬件時鐘為準,校正系統時鐘
-w, –systohc以系統時鐘為準,校正硬件時鐘
tzselect(CentOS6.x)
timedatectl(CentOS7.x)
list-timezone 列出所有時區
set-timezone “時區” 設置時區
status 列出當前時區
/usr/share/zoneinfo/Asia/Shanghai 時區
/etc/localtime 時區
cal -y 顯示日歷
?常用命令
- halt?關機
- poweroff?關機
- shutdown?[OPTION]… TIME [MESSAGE] 關機或重啟
- -r +TIME重啟
- TIME:now立刻執行,+m相對時間,幾分鐘后執行,hh:mm絕對時間,具體時間關機
- -h +TIME關機
- -c 取消關機
- -r +TIME重啟
- reboot?重啟
- whoami?顯示當前登錄的用戶
- who?顯示當前系統所有的登錄會話
- w?系統當前所有的登錄會話及所做的操作
- nano?文本編輯器
-
- -S?[SESSION] 新建會話
- -x?[SESSION] 加入會話
- exit 退出并關閉會話
- Ctrl+a,d 安裝Ctrl+a松開按d,剝離當前screen會話
- -ls 列出所有已建立的會話
- -r?[SESSION] 恢復screen會話
- echo?[-neE] [arg …] 顯示字符,echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開, 并在最后加上換行號
- -e?啟用\字符的解釋功能
- \a 發出警告聲
- \b 退格鍵
- \c 最后不加換行符號
- \n 換行且光標移至行首
- \r 回車,光標移至行首但不換行
- \t 插入tab
- \\插入“\”字符
- \0nnn 插入nnn(八進制)所代表的ASCII字符
- \xHH插入HH(十六進制)所代表的ASCII字
- -n 不自動換行
- -e?啟用\字符的解釋功能
screen CentOS6.x默認沒有安裝,需要用rpm或yum安裝后使用
四:bash使用技巧
?引用
雙引號(””):弱引用,可識別變量,但是不識別命令
[root@centos6 ~]#echo "ls $HISTSIZE" ls 1000
單引號(”):強引用,變量和命令統統不識別,以字符串輸出
[root@centos6 ~]#echo 'ls $HISTSIZE' ls $HISTSIZE
反引號(··):命令引用,執行被引用的命令,并輸出結果,和“$()”功能相同
[root@centos6 ~]#echo `echo $HISTSIZE` 1000
?擴展
{}:括號內的參數分別和外部參數做笛卡爾乘積
[root@centos6 ~]#echo file{1..5}{6,7,8} file16 file17 file18 file26 file27 file28 file36 file37 file38 file46 file47 file48 file56 file57 file58
命令補全
當輸入一個命令字符開頭可以表示唯一性時,按下tab鍵即可補全命令。
如果命令開頭字符串不足以唯一標示一個命令時,按下2次tab鍵可顯示所有以此字符串開頭的命名。
文件路徑補全和命令補全用法相同,如果不是唯一文件或文件夾名時則顯示當前目錄的所有以此字符串開頭的文件或文件夾。
- command 2Tab 所有子命令或文件補全
- string2Tab 以string開頭命令
- /2Tab 顯示所有根目錄下一級目錄,包括隱藏目錄
- ./2Tab 當前目錄下子目錄,包括隱藏目錄
- *2Tab 當前目錄下子目錄,不包括隱藏目錄
- ~2Tab 所有用戶列表
- $2Tab 所有變量
- @2Tab /etc/hosts記錄(centos7不支持)
- =2Tab 相當于ls –A (centos7不支持)
命令歷史
命令在執行后命令歷史會保存到內存中,當退出shell時這些命令歷史會自動追加到~/.bash_history文件中
當登錄shell時則會從~/.bash_history文件重新讀入內存
- 如果想執行上一命令使用“↑”、”!!”、”!-1″或Ctrl+p調用
- !:0 執行前一條命令(去除參數)
- Ctrl + n 顯示當前歷史中的下一條命令
- Ctrl + j 執行當前命令
- !n 執行history命令輸出對應序號n的命
- !-n 執行history歷史中倒數第n個命令
- !string 重復前一個以“string”開頭的命令
- !?string 重復前一個包含string的命令
- !string:p僅打印命令歷史,而不執行
- !$:p 打印輸出!$ (上一條命令的最后一個參數)的內容
- !*:p打印輸出!*(上一條命令的所有參數)的內容
- ^string刪除上一條命令中的第一個string
- ^string1^string2將上一條命令中的第一個string1替換為string2
- !:gs/string1/string2將上一條命令中所有的string1都替換為string2
- 使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令
- ctrl-r來在命令歷史中搜索命令
- Ctrl+g:從歷史搜索模式退出
- 要重新調用前一個命令中最后一個參數
- !$ 表示
- Esc, .(點擊Esc鍵后松開,然后點擊. 鍵)
- Alt+ .(按住Alt鍵的同時點擊. 鍵)
?調用歷史參數
- command !^ 利用上一個命令的第一個參數做cmd的參數
- command !$ 利用上一個命令的最后一個參數做cmd的參數
- command !* 利用上一個命令的全部參數做cmd的參數
- command !:n 利用上一個命令的第n個參數做cmd的參數
- command !n:^ 調用第n條命令的第一個參數
- command !n:$ 調用第n條命令的最后一個參數
- command !n:m調用第n條命令的第m個參數
- command !n:* 調用第n條命令的所有參數
- command !string:^ 從命令歷史中搜索以string 開頭的命令,并獲取它的第一個參數
- command !string:$ 從命令歷史中搜索以string 開頭的命令,并獲取它的最后一個參數
- command !string:n 從命令歷史中搜索以string 開頭的命令,并獲取它的第n個參數
- command !string:* 從命令歷史中搜索以string 開頭的命令,并獲取它的所有參數
history命令詳解
usage:
- history [-c] [-d offset] [n]
- history -anrw [filename]
- history -ps arg [arg…]
history: 顯示命令歷史記錄
-c: 清空命令歷史
-d offset: 刪除歷史中指定的第offset個命令
n: 顯示最近的n條歷史
-a: 追加本次會話新執行的命令歷史列表至歷史文件
-r: 讀歷史文件附加到歷史列表
-w: 保存歷史列表到指定的歷史文件
-n: 讀歷史文件中未讀過的行到歷史列表
-p: 展開歷史參數成多行,但不存在歷史列表中
-s: 展開歷史參數成一行,附加在歷史列表后
HISTORY相關變量
- HISTSIZE:命令歷史記錄的條數
- HISTFILE:指定歷史文件,默認為~/.bash_history
- HISTFILESIZE:命令歷史文件記錄歷史的條數
- HISTTIMEFORMAT=“%F %T “ 顯示時間
- HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2開頭的歷史
- HISTCONTROL 控制命令歷史的記錄方式
- ignoredups默認,忽略重復的命令,連續且相同為“重復”
- ignorespace忽略所有以空白開頭的命令
- ignoreboth相當于ignoredups, ignorespace的組合
- erasedups刪除重復命令
變量的賦值方法:
export? 變量名=“值”
存放到/etc/profile 或~/.bash_profile中,不建議修改/etc/profile文件
bash快捷鍵
- Ctrl + l清屏,相當于clear命令
- Ctrl + o執行當前命令,并重新顯示本命令
- Ctrl + s阻止屏幕輸出,鎖定
- Ctrl + q允許屏幕輸出
- Ctrl + c終止命令
- Ctrl + z掛起命令
- Ctrl + a光標移到命令行首,相當于Home
- Ctrl + e光標移到命令行尾,相當于End
- Ctrl + f光標向右移動一個字符
- Ctrl + b光標向左移動一個字符
- Alt + f光標向右移動一個單詞尾
- Alt + b光標向左移動一個單詞首
- Ctrl + xx光標在命令行首和光標之間移動
- Ctrl + u從光標處刪除至命令行首
- Ctrl + k從光標處刪除至命令行尾
- Alt + r 刪除當前整行
- Ctrl + w從光標處向左刪除至單詞首
- Alt + d從光標處向右刪除至單詞尾
- Ctrl + d刪除光標處的一個字符
- Ctrl + h刪除光標前的一個字符
- Ctrl + y將刪除的字符粘貼至光標后
- Alt + c從光標處開始向右更改為首字母大寫的單詞
- Alt + u從光標處開始,將右邊一個單詞更改為大寫
- Alt + l從光標處開始,將右邊一個單詞更改為小寫
- Ctrl + t交換光標處和之前的字符位置
- Alt + t交換光標處和之前的單詞位置
- Alt + N提示輸入指定字符后,重復顯示該字符N次
ps:注意:Alt組合快捷鍵經常和其它軟件沖突
五:獲得幫助
本地文檔幫助
whatis
makewhatis | mandb 創建數據庫緩存
CMD -h|–help
man?or info
內部命令使用man bash,外部命令使用man 章節號 CMD,man命令的配置文件在/etc/man.config | man_db.conf
MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置
man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索
中文man需安裝包man-pages-zh-CN
man章節介紹
- 用戶命令
- 系統調用
- C庫調用
- 設備文件及特殊文件
- 配置文件格式
- 游戲
- 雜項
- 管理類命令
- Linux內核API
在線文檔幫助
- http://www.nginx.org
- http://tomcat.apache.org
- http://httpd.apache.org
- http://www.python.org
- http://kbase.redhat.com
- http://www.redhat.com/docs
- http://access.redhat.com
- rhn.redhat.com
- http://tldp.org
- http://www.slideshare.net
- http://www.google.com
- Openstackfiletype:pdf
- rhcasite:redhat.com/docs
感謝閱讀,歡迎大家共同交流學習!
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93450
很全,贊一個