一、基礎命令
1、bash shell
echo $SHELL或者echo ${SHELL} | 查看當前終端所使用的shell類型 |
cat /etc/shells | 查看本機所支持的所有shell |
2、命令提示符
echo $PS1 | 查看當前用戶命令提示符的格式 |
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]" | 修改提示符格式 |
vim ~/.bash_profile | 永久修改當前用戶命令提示符的格式 |
vim /etc/profile | 永久修改所有用戶的命令提示符的格式 |
1)修改提示符格式
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
5:表示字符閃爍,4表示字符下面打印橫線。
41:表示字符的背景色。
33:表示字符的顏色。
1:表示字符的粗細。
什麼數字代表什麼顏色,Linux中有專門的文件定義,該文件就是/etc/DIR_COLORS
\[ 和 \] 是成對存在的,第一隊\[\]用於括住顏色字符的開始部分(m表示開始),第二隊用於括住顏色字符的結尾部分(0m表示結束)。注意:$符號一定要用2個\\反斜線轉義,否者root賬戶的提示符將會變成$,而不是#
各字段解釋如下:
\e:即\033
\u:當前用戶
\h:主機名簡稱
\H:主機名(FQDN)
\w:當前工作目錄(絕對路徑)
\W:當前工作目錄基名
\t:24小時時間格式
\T:12小時時間格式
\!:命令歷史數
\#: 開機後命令歷史數
練習:修改命令提示符
3、執行命令
enable | 查看當前系統所有啓用的內置命令,對於bash的shell來說,所有內置命令都是由/bin/bash程序提供的,並且該程序會在系統啓動後被裝載到內存當中。因此內置命令的查找速度非常快。 |
enable -n command | 禁用指定內部命令 |
enable -n | 查看所有禁用的內部命令 |
enable command | 啓用指定的內部命令 |
help | 同enable,查看當前系統所有的內置命令 |
which -a | -a:all,將匹配到的所有條目都打印出來,不加-a的情況下默認只打印匹配到的第一條記錄。 |
whereis | 同which,查看命令的路徑 |
type COMMAND | 查看指定命令的類型(內部或外部) |
4、執行外部命令
系統初始hash表爲空,當外部命令執行時,默認會從PATH路徑下尋找該命令,找到後會將這條命令的路徑記錄到hash表中,當再次使用該命令時,shell解釋器首先會查看hash表,存在將執行之,如果不存在,將會去PATH路徑下尋找。利用hash緩存表可大大提高命令的調用速率。
hash | 顯示hash緩存 |
hash -r | 清除hash緩存 |
5、命令別名
alias name=value | 定義別名NAME,其相當於執行命令VALUE |
vim ~/.bahsrc | 將命令別名添加到該文件中,只對當前用戶生效。 |
vim /etc/bashrc | 將命令別名添加到該文件中,只所有用戶都生效。 |
alias | 顯示當前shell進程所有可用的命令別名 |
unalias name | 取消命令別名 |
unalias -a | 取消所有的命令別名 |
練習,在linux中添加cdnet別名,使其能夠進入/etc/sysconfig/network-scripts
當命令別名存在的情況下,我們如何繞過別名,執行真正的命令呢?有如下方法:
\aliasname |
"aliasname" |
'aliasname' |
command aliasname |
/path/command |
例如:\cp,cp其實是cp -i的別名,\cp繞過了cp -i,執行的就是cp不帶任何參數。
注意:別名、內部命令和外部命令的優先級依次降低,所以當內部命令和別名的名字相同時,系統只會調取別名執行而不會執行內部命令。
6、日期時間
1)日期、時間
clock | 顯示硬件時間 |
clock -w | 讀取系統時間覆蓋硬件時間 |
clock -s | 讀取硬件時間覆蓋系統時間 |
date | 顯示內核計算出的系統時間 |
date 030710052018.30 | 手動設置時間,格式是“月日小時分鐘年.秒” |
date +%s | 以時間搓顯示當前時間 |
date +%F | 顯示當前時間的年月日 |
timedatectl | 簡要的列出當前時間、時區和NTP同步設置 |
timedatectl set-time "2017-12-13 09:30:00" | 手動設置時間 |
2)時區
timedatectl set-timezone Asia/Shanghai | 設置時區爲上海 |
cat /etc/localtime | 查看當前系統的時區 |
3)語言環境
4)顯示日曆
cal | 只顯示當前日期的日曆 |
cal -y | -y:year的意思,顯示一整年的日曆 |
練習:爲了保證所有服務器的時間一致,將所有服務器指向同一個ntp服務器。
7、關機重啓
poweroff/halt | 關機 |
shutdown -r TIME | -r:reboot,重啓。TIME有以下三種表示方式:第一種是+m,相對時間表示法,幾分鐘之後;例如 +3。第二種是now,立刻,相當於+0。第三種是hh:mm絕對時間表示,指明具體時間。如果不指定time,默認相當於+1,即一分鐘後重啓,時間單位爲分鐘 |
shutdown -h TIME | -h:halt,關機,使用同上。 |
shutdown -c | -c:cancle,當設定關機、重啓後,可以使用該選項取消之前的設定。 |
8、顯示用戶登錄信息
who | 顯示當前所有登錄會話的信息 |
who am i 或者whoami | 顯示當前登錄用戶的詳細信息 |
w | 顯示當前所有登錄會話的信息及所做的操作 |
9、screen命令
screen -S help | 創建一個名爲help的新screen會話 |
screen -x help | 加入名爲help的screen會話 |
screen -ls | 顯示所有已經打開的screen會話 |
Ctrl+a,d | 鍵盤Ctrl+a+d鍵一起按,表示臨時退出當前screen會話,退出後使用screen -x help繼續加入到help會話, |
exit | 退出當前的screen會話(所有加入到該screen會話的session也都將退出) |
練習:使用screen創建屏幕共享
10、echo命令
echo -e | -e,允許打印的字符中出現特殊字符(轉移字符) |
echo -n | 不打印換行字符,默認會打印一個換行字符出來 |
echo {1..100..2} |
|
如果echo命令啓用了選項-e,則echo命令將會解釋特殊字符,若字符串中出現以下字符,則echo將會特別加以處理,而不會將它當成一般文字輸出:
11、{}的使用
12、命令行歷史
history -c | 清空內存緩存中的命令歷史記錄,但是硬盤上的.bash_history文件中記錄的歷史命令不會被清除。想要徹底清除歷史命令,還要將.bash_history文件中的歷史命令全部清空。先刪內存緩存中歷史命令,然後再清理.bash_history文件,否者清理命令會被記錄下來的。 |
history -d “offset” | offset:刪除內存中的歷史中指定的第offset個命令。 |
history -w /root/history.bk | 將內存中的歷史命令保存到指定的文件中。 |
echo $HISTSIZE | 查看history最大的命令數 |
登錄shell時,會讀取命令歷史文件(~/.bash_history)中記錄的命令,登錄進shell後新執行的命令首先會記錄在緩存(內存)中;這些內存中緩存的命令會在用戶退出時“追加”至命令歷史文件中。
history默認最多隻會存放1000條歷史命令,超過之後,老的歷史命令將會被丟棄,在/etc/profile永久修改該值。
重複history中的命令,有如下方法:
13、獲取命令幫助的方法
whatis | 簡要的說明信息 |
help command --help | 內部命令使用該方法獲取幫助,也可以使用man |
command --help | 外部命令獲取幫助,也可以使用man |
man或者info後者pinfo | 詳細說明信息 |
/usr/share/doc/ | 安裝軟件時一般會有說明文檔放在該目錄下,比man要詳細的多 |
如果想要漢化man文檔,可以安裝man-pages-zh-CN中文包
man每個章節所表達的意思如下:
man命令的選項參數:
man -a keyword | 找到所有包含keyword的章節,並依次查看,按q鍵,結束一個章節,進入下一個章節的閱讀。G翻到文檔末尾,1G翻到文檔開頭。查找結果中按n下一個,N上一個。 |
man -k keyword | 列出所有包含keyword的頁面,範圍要比-f大。 |
man -f keyword | 相當於whatis,列出所有包含keyword的“章節”。 |
man -w [章節] keyword | 顯示命令指定章節的man幫助文件的路徑,章節可選。 |
舉例如下:
14、其他一些常用命令
cat /proc/meminfo | 查看內存信息 |
shift+pgup | 翻頁(當上下箭頭鍵移動不能顯示輸出信息時使用) |
lsblk | 查看本機硬盤及分區信息 |
cat /proc/partition | 查看本機分區信息 |
lsb_release -a | 查看本機內核信息,-a表示--all的意思 |
tty | 顯示當前登錄用戶所使用的終端名稱 |
cat /etc/centos-release | 查看centos的發行版本 |
lscpu | 查看cpu的詳細信息 |
vim /boot/grup2/grup.cfg | net.ifnames=0 |
練習:Centos7的網卡默認是ens開頭的,而centos6的是eth開頭的,如果想要批量管理這些服務器,那麼就要統一這些網卡名稱,那麼如何將Centos7的網卡改成eth開頭呢?方法如下: