基本命令
1、用戶
1、 root :超級用戶
2、 普通用戶(生產環境一般使用普通用戶)
2、終端terminal
1、 設備終端 :鼠標、顯示器
2、 物理終端 (/dev/console):
1. 控制臺
3、 虛擬終端(tty:teletypewriters,/dev/tty# #為[1-6])
1. Tty 可以有n個,ctrl+alt+F[1-6]
4、 圖形終端(/dev/tty7) startx, xwindows
1. Centos 6 :ctrl
+Alt+F[1-6]
2. Centos 7
:在哪個終端啟動,即位于哪個虛擬終端
5、 串行端口(/dev/ttyS#)
ttys
6、 偽終端(pty:pseudo-tty,/dev/pts/#)
pts ,ssh 遠程連接
7、 查看當前的終端設備:tty
8、 應用程序—附件—終端:
1、 支持多個“標簽”shell的圖形化終端模擬器
3、 Ctrl+shift+q :關閉當前窗口
4、 Ctrl+shift+t :創建一個標簽頁
5、 Ctrl+shift+w :關閉一個標簽頁
6、 Ctrl+pgup/pgdn :切換上一個/前一個標簽頁
7、 Ctrl+shift+c :復制選中的文本
8、 Ctrl+shift+v :把文本粘貼到當前光標處
3、交互式接口:啟動終端后,在終端設備附加一個交互式應用程序
1、 GUI : Graphic User Interface
i. X protocol, window manager ,desktop
ii. Desktop: GNOME(C ,圖形庫gtk);
iii. KDE (C++,圖形庫qt);
iv. XFCE(輕量級桌面)
2、 CLI:Command
Line Interface
Shell 程序:sh (bourn) csh tcsh ksh
4、Shell 是Linux 系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行
shell 也被稱為LINUX 的命令解釋器(command interpreter )
shell 是一種高級程序設計語言
5、GNU Bourne-Again Shell(bash) 是GNU 計劃中重要的工
具軟件之一,目前也是 Linux 標準的shell ,與sh 兼容
6、查看當前使用的shell:echo ${SHELL}
7、顯示當前系統使用的所有的shell : cat
/etc/shells
8、查看系統變量:env 或 export
9、~ :代表家目錄
# :代表超級目錄
$ :代表普通用戶
10、顯示提示符格式: echo $PS1
修改命令提示符 :PS1=”[\u@\h \w]\\$”
PS1=”\[\e[31m\][\u@\h \w]\\$\[\e[0m\]”
\e : \033 \u:當前用戶 \h:主機名簡稱 \H:主機名
\w :當前工作目錄 \W:當前工作目錄基名 \t :24小時時間格式
\T:12小時時間格式 \!:命令歷史數 \# :開機后命令歷史數
11、shell命令分兩種:
一種是內部命令 :由內核直接提供
Help: 內部命令列表
Enable -n command 禁用內部命令
Enable -n 查看所有禁用的內部命令
一種是外部命令 :由系統上的某個二進制文件提供
查看路徑 :which -a | –skip—alias command
Whereis command
區別指定的命令是內部還是外部命令:
type command
12、hash :hash緩存表
系統初始hash 表為空,當外部命令執行時,默認會從PATH路
徑下尋找該命令,找到后會將這條命令的路徑記錄到hash表
中,當再次使用該命令時,shell 解釋器首先會查看hash 表,
存在將執行之,如果不存在,將會去PATH 路徑下尋找。利用
hash緩存表可大大提高命令的調用速率
hash:會顯示最近執行的命令
hash –l:顯示hash緩存,可作為輸入使用
hash –t command:顯示命令的路徑
hash -r :清除緩存
13、alias :查詢系統中已經存在的別名
別名前加\ :代表執行其實的命令;單引號也可以;或直接在命令的路徑下調用
“\COMMAND”
’COMMAND’
/PATH/COMMAND
alias name =”name1” 僅在當前shell下有效
當前用戶 :~/.bashrc 所有用戶:/etc/bashrc
取消別名 :unalias name
16、Enable command 可以啟用命令,只對內部命令有效, Enable -n command 禁用內部命令
Enable -n 查看所有禁用的內部命令
17、pwd :顯示當前目錄
18、command [options] [argyments]
選項:用于啟用或者關閉命令的某個或某些功能
短選項:-c 例如 :-l ,-h
長選項:–word ,例如 :–all ,–human—readable
參數 :命令的作用對象,比如文件名,用戶名等
注意:多選項,以及多參數和命令之間使用空白字符分隔
取消和結束多個命令的執行:ctrl+c ;ctrl+d
\ :一個命令可以用\分成多行
; 多個命令可以用分號分開
19、date :顯示日期和時間
Linux的兩種時鐘:系統時鐘:由linux內核通過CPU的工作頻率進行的
硬件時鐘:主板
Hwclock ,clock :顯示硬件時鐘
-s ,–hctosys 以硬件時鐘為準
-w ,–sysytohc 以系統時間為準
時區:/etc/localtime
Date –s :修改系統時間
Date –d :指定具體時間
(兩天前星期幾)
Date +%F : 當前時間
Date +%Y:年 m:月 d:日 H:時 M:分 S:秒
Date –date=”3 days ago”
反引號“ :將命令執行結果作為輸出 雙引號 、單引號:字符串輸出
Cal :顯示日歷 cal -y :顯示全年日歷
20、bc :命令行的計算器
21、nano:文本編輯器
22、half 、poweroff :關機
Reboot : -f 強制,但不調用shutdown
-p 切斷電源
Shutdown :關機或重啟
-r :reboot
-h :half
-c :取消
Time :now :立刻關機
+m :相當時間表示法,多久之后
Hh:mm :絕對時間表示,指明具體時間
Init 0 :關機
6 :重啟
23、用戶登錄信息命令
Whoami :查看當前有效登錄用戶
Who :系統當前所有的登錄會話
W :顯示所有登錄的用戶以及連接
24、screen :屏幕
Screen -s name :開啟一個會話
Screen -x name :加入一個會話
Ctrl + a + d : 退出
Screen -r :恢復剛剛的會話
Screen -ls :顯示所有已經打開的screen會話
25、echo :顯示字符
-E :默認 不支持 \ 解釋功能
-n :不自動換行
-e :啟用 \ 字符的解釋功能
啟用命令選項-e ,若字符串中出現以下字符,則特
別加以處理,而不會將它當成一般文字輸出
\a 發出警告聲
\b 退格鍵
\c 最后不加上換行符號
\n 換行且光標移至行首
\r 回車,即光標移至行首,但不換行
\t 插入tab
\\ 插入\ 字符
\0nnn 插入nnn (八進制)所代表的ASCII 字符
echo -e
‘\033[43;31;5mmagedu\033[0m’
\xHH 插入HH (十六進制)所代表的ASCII字
顯示變量: echo “$name” 變量會被替換,弱引用
Echo ‘$name’變量不會被替換,強引用
26、dirname :獲取文件的目錄名
Basename :獲取問價你的基名
27、uname :功能說明:uname用來獲取電腦和操作系統的相關信息
補充說明:uname可顯示linux主機所用的操作系統的版本、硬件的名稱等基本信息。
-a或–all 詳細輸出所有信息,依次為內核名稱,主機名,內核版本號,內核版本,硬件名,處理器類型,硬件平臺類型,操作系統名稱
-m或–machine 顯示主機的硬件(CPU)名
-n或-nodename 顯示主機在網絡節點上的名稱或主機名稱
-r或–release 顯示linux操作系統內核版本號
-s或–sysname 顯示linux內核名稱
-v 顯示顯示操作系統是第幾個 version 版本
-p 顯示處理器類型或unknown
-i 顯示硬件平臺類型或unknown
-o 顯示操作系統名
–help 獲得幫助信息
–version 顯示uname版本信息
28、查看系統版本 :cat /etc/redhat-release
29、env 、 export :查看系統默認的變量
30、hostname :顯示當前系統的主機名 定義系統當前的主機名
僅僅對當前的環境生效
31、命令行擴展:$() 或 “(反引號) 把一個命令的輸出打印給另一個命令的參數
32、打印重復字符串的簡化形式
Echo file{1,3,5}
Echo {1..10}
Echo {a..z}
Echo {000..20..2}
33、命令補全
內部命令:
外部命令:bash根據PATH環境變量定義的路徑,自左而右在每個路徑搜索以給定命令名命名的文件,第一次找到的命令即為要執行的命令
用戶給定的字符串只有一條唯一對應的命令,直接補全,否則再次tab會給出列表
路徑補全:把用戶給出的字符串當作路徑開頭,并在其指定上級目錄下搜索以指定的字符串開頭的文件名,如果唯一,則直接補全,否則再次tab給出列表
command 2Tab 所有命令行補全
string2Tab 以string 開頭命令
/2Tab 顯示所有根目錄下一級目錄,包括隱藏目錄
./2Tab 當前目錄下子目錄,包括隱藏目錄
*2Tab 當前目錄下子目錄,不包括隱藏目錄
~2Tab 所有用戶列表
$2Tab 所有變量
@2Tab /etc/hosts 記錄 (centos7 不支持)
=2Tab 相當于ls –A
34、命令行歷史 :history
歷史命令一般記錄在 .bash_history 文件中
當前shell中的歷史記錄會被記錄在內存,只有退出之后才會保存在 .bash_history
History 默認最多記錄1000行
最后一個退出的會寫在配置文件中
History -c :清空命令歷史
-r :讀取歷史文件,附加到歷史文件
-w :保存在歷史列表到指定的歷史文件
–p :展開歷史參數成多行,但不保存到歷史列表中
-s :展開歷史參數成一行,附加到歷史列表最后
-d offset :刪除歷史中指定的第offset個命令
$HISTSIZE :命令歷史記錄的條數
$HISTFILE :指定歷史文件的存放位置
$HISTFILESIZE :命令歷史文件記錄的條數
HISTTIMEFORMAT=”%F %T”:顯示每條命令的具體執行時間
HISTIGNORE=”str1:str2:…” 忽略string1,string2的歷史
控制命令歷史的記錄方式: 環境變量 :HISTCONTROL
ignoredups :默認。忽略重復的命令,連續切相同為重復
ignorespace :忽略所有以空白開頭的命令
ignoreboth :相當于ignoredups和ignorespace 的組合
erasedups : 刪除重復命令
重復前一個命令,有4種方法:
重復前一個命令使用上方向鍵
按!!并回車執行
輸入!-1并回車執行
按ctrl+p 并回車執行
!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
Ctrl-r 在命令歷史中搜索命令
Ctrl+g :從歷史搜索模式退出
要重新調用前一個命令中的最后一個參數:
1、 !$
2、 ESC , .
(點擊esc鍵后松開,然后點 . 鍵)
3、 ALT+.
(按住alt的同時點擊.鍵)
command !^ :利用上一個命令的第一個參數值
command !$ :利用上一個參數的最后一個參數值
command !* :利用上一個命令的全部參數
command ?。?/span>n :利用上一個命令的第n個參數
command !string:^ :從命令歷史中搜索以string開頭的命令,并獲取它的第一個參
數
command !string:$ :從命令歷史中搜索以string開頭的命令,并獲取它的最后一個參數
command !string:n :從命令歷史中搜索以string開頭的命令,并獲取它的第n個參數
command !string:* :從命令歷史中搜索以string開頭的命令,并獲取它的所有參數
35、快捷鍵:
ctrl+l : 相當于clear
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 :從光標刪除至命令行尾
ctrl+d :刪除光標處的一個字符
ctrl+y :將刪除的字符粘貼到光標后
alt+c :從光標處開始向右更改為首字母大寫的單詞
alt+u :從光標處開始向右更改為全部大寫的字母
alt+l :從光標處更改為全部小寫的單詞
ctrl+t :交換光標處和之前的字符位置
alt+t :交換光標處和之前的單詞位置
alt+N :提示輸入指定字符后,重復顯示該字符N次
36、變量的簡單用法 :export 變量名=“值”
存放在 /etc/profile 或~/.bash_profile
37、whatis :顯示命令的簡短描述 ,跟man一樣的幫助命令
使用前需要: makewhatis | mandb 制作數據庫
38、命令幫助
1、內部命令幫助方法:help command
man command
2、外部命令幫助方法 : command –help
Man
command
Info command
程序自身的幫助文檔
程序官方文檔
發行版的官方文檔
–help :顯示用法總結和參數列表
Man命令: man命令的配置文件:/etc/man.config 或 man_db.conf
幫助手冊中的段落說明:
NAME 名稱及簡要說明
SYNOPSIS 用法格式說明
[] 可選內容
<> 必選內容
a|b 二選一
{ } 分組
… 同一內容可出現多次
DESCRIPTION 詳細說明
OPTIONS 選項說明
EXAMPLES 示例
FILES 相關文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug 信息
SEE ALSO 其它幫助參考
man 命令的操作方法:
使用less 命令實現
space, ^v, ^f, ^F: 向文件尾翻屏
b, ^b: 向文件首部翻屏
d, ^d: 向文件尾部翻半屏
u, ^u: 向文件首部翻半屏
RETURN, ^N, e, ^E or j or
^J: 向文件尾部翻一行
y or ^Y or ^P or k or ^K :向文件首部翻一行
q: 退出
# :跳轉至第#行 行
1G: 回到文件首部
G
39、tree -L 1 –d /
Tree 用來查看目錄結構(需要先安裝)
-L 指定層數 -d 只查看目錄
40、dmesg :查看啟動的時候的內核日志
Last :登錄成功的用戶及ip
Lasb:登錄失敗的用戶以及ip
Lastb :去查看哪些地址的服務器在掃描我們的機器,然后把這些ip加入到host_deny iptables中
41、pwd -L :如果當前為鏈接路徑的話,則顯示鏈接路徑
-P :顯示真實物理路徑
42、絕對路徑:
以正斜杠開始
完整的文件的位置路徑
可用于任何想指定一個文件名的時候
相對路徑名:
不以斜杠開始
指定相對于當前工作目錄或某目錄的位置
可以作為一個簡短的形式指定一個文件名
43、cd 改變目錄
使用絕對或者相對路徑:
Cd /home/wang
Cd home/wang
切換至父目錄: cd..
切換至當前用戶的主目錄: cd
切換至以前的工作目錄:cd –
選項:-p
相關的環境變量: PWD:當前目錄路徑
OLDPWD
:上一次目錄路徑
44、ls :列出當前目錄的內容或指定目錄
用法:ls [options] [files_or_dirs]
Ls –a 包含隱藏的文件
Ls –l 顯示額外的信息
Ls -R 目錄遞歸通過
Ls -ld 目錄和符號鏈接信息
Ls -d 顯示當前目錄的詳細信息,不顯示目錄下的內容
Ls -1 文件分行顯示
Ls -S 按從大到小排序
Ls -t 按mtime排序
Ls -u 配合-t選項顯示并按atime從新到舊排序
Ls -U 按目錄存放順序顯示
Ls -X 按文件后綴排序
45、stat :查看文件狀態
文件:metadata ,data
三個時間戳 :
Access time :訪問時間,atime,讀取文件內容
Modify time :修改時間 ,mtime ,改變文件內容(數據)
Change time :改變時間,ctime,元數據發生改變(屬性發生改變)
Mtime改變,ctime也會跟著改變
修改文件屬性或者權限,則ctime也會跟著改變
Atime 并不會實時發生改變,只有當mtime比atime新的時候才會改變
使用編輯器打開文件可能造成atime的改變
使用 touch –a 修改文件的訪問時間也會造成ctime的改變
46、touch : -m 修改mtime,也會造成ctime的改變
-c 修改ctime 如果文件不存在,則不予創建
-a 修改atime ,也會造成ctime的改變
-t [[cc]yy]MMDDhhmm[.ss] 指定atime和mitime的時間戳
結合-m 或-c 或 –a 修改制定的時間
Touch –m -t “time” 文件
47、cp :復制文件和目錄
Cp a b :復制一個文件并命名為b
Cp a tmp/ 把多個文件源復制到目錄下
Cp -r 目錄1 目錄2 :如果目錄2不存在,則會把目錄1重新拷貝一份并命名為目錄2
如果目錄2已經存在,則直接將目錄1拷貝到目錄2下
-i:覆蓋前提示
-r 或-R :遞歸復制目錄以及內部的所有內容
-d :復制的時候,如果目錄有鏈接文件,則只復制鏈接文件
-p :–preserv 復制的時候將文件的屬性 一起復制
-a :–pdr 把所有的目錄以及所有的屬性復制過去
-v :復制的時候顯示詳細過程
-f :強制復制,不管目標文件有沒有
Cp -av
Cp -avf 強制復制
48、mv :移動和重命名文件
常用選項: -I 交互式
-f :強制,如果目標已經存在同名文件,則強制移動過去,不提示
Mv a b 將a重名為b a有可能是文件或目錄
Mv a bd/ :將源文件a移動到目錄bd下
49、rm :刪除
常用選項: -i :交互式
-f :強制刪除
-r :遞歸
50、tree :顯示目錄樹
-d :只顯示目錄
-L 數目 :指定顯示的層級數目
-p pattern :只顯示由指定pattern匹配到的路徑
51、mkdir :創建目錄
-p :存在于不報錯,且可自動創建所需的各目錄(遞歸創建)
-v :顯示詳細信息
-m MODE :創建目錄是直接指定權限
52、rmdir :刪除空目錄
-p :遞歸刪除父空命令
-v :顯示詳細信息
53、inode :索引節點
df -i :查看某個分區inode的使用
ll -i :查看某個文件的inode號
Inode表中包含文件系統所有文件列表
一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據),包括:文件類型,權限,UID,GID,鏈接數(指向這個文件名路徑名稱個數),該文件的大小和不同的時間戳,指向磁盤上文件的數據塊指針,有關文件的其他數據
Inode 根據系統上的inode號去找到對應的文件
Inode 系統上的inode號會滿,有可能是磁盤上的小文件過多
Inode 是在磁盤格式化的時候已經確定
為什么空間沒滿,但是我的數據寫不進去,是因為小文件太多,造成inode用完了,解決方法就是把數據拷貝出來,重新格式化分區,重新指定inode
一個文件只能有一個inode
Cp 操作就是生成一個新的inode,然后把源文件的數據復制過去,同時把新的inode指過去
Rm刪除的時候只是刪除inode,數據還在
Mv的時候如果在同一個分區,那么mv的時候只是修改了文件路徑,文件本身的inode沒變
如果目標文件和源文件位于不同的分區(文件系統),那么一般執行的是先cp后刪除操作
54、鏈接文件
硬鏈接 :創建硬鏈接會增加額外的記錄項以引用文件
對于同一個文件系統上的一個物理文件
每個目錄引用相同的indoe號
創建時鏈接數遞增
刪除文件時: rm命令遞減計數的鏈接
文件要存在,至少有一個連接數
當鏈接數為零時,該文件被刪除
不能跨驅動器或分區
語法 :ln filename 被鏈接文件
軟(符號)鏈接 :
一個符號鏈接指向另一個文件
Ls –l 的顯示連接的名稱和引用的文件
一個符號鏈接的內容是它引用文件的名稱
可以對目錄進行
可以跨分區
指向的是另一個文件的路徑;其大小 為指向的路徑字符串的長度;不增加或減少目標文件indoe的引用計數
語法 :ln -s filename 被鏈接文件
-f :強制鏈接 ,無論原來的鏈接是否存在,強制她它指向一個新的位置
-n :把符號鏈接的目的目錄視為一般文件
55、file :用來查看某個文件的文件類型
-b :不顯示文件名稱
-f a.txt: 列出a.txt文件中所記錄的文件對應的文件類型
-F 使用指定分隔符號替換輸出文件名后默認“:”分隔符
-L 查看對應軟鏈接對應文件的文件類型
56、tr :轉換和刪除字符
選項 :-c -C –complement:取字符集的補集
-d –delete :刪除所有屬于第一字符集的字符
-s –squeeze-repeats :把連續重復的字符以單獨一個字符顯示
-t –truncate –set1 :將第一個字符集對應字符轉化為第二個字符集對應的字符
Tr ‘a-z’’A-Z’ < /etc/fstab
Tr -d ‘0-9’ > /etc/fstab
Tr –d –c ‘0-9’ < /etc/fstab
Echo “ssss” | tr –s ‘s’
57、Less :一頁一頁地查看輸入
Ls –l /etc | less
58、文件查看命令:cat 、tac、rev
Cat [option] .. [file]..
-E: 顯示行結束符$
-n :對顯示出的每一行進行編號
-A –Vet :顯示所有控制符
-b :列出非空行編號
-T : 顯示制表符
-v :顯示隱藏的特殊字符
-s :壓縮連續的空行成一行
59、tac:把文件倒過來顯示
60、more:分頁查看文件
More -d :顯示翻頁 以及退出提示(enter向下一行,space 向下一屏,b回到最開始的地方)
61、less:一頁一頁的查看文件或STDIN輸出
查看時有用的命令包括: /文本 :搜索 文本
n / N 跳到下一個或上一個匹配
62、head :顯示文本前#(默認為10)行
Head -c # :指定獲取前#字節
-n # :指定獲取前#行
-#:指定行數
63、tail :顯示文本后#(默認是10)行
Tail -c # :指定獲取后#字節
-n # :指定獲取后#行
–# :指定行數
-f :跟蹤顯示文件新追加的內容,常用日志監控
64、cut :按列抽取文本
Cut -d”分隔符” : 指明分隔符,默認tab
-f # :第#個字段
#,#,#:離散的多個字符,例如1,3,9
#-# :連續的額多個字符
-c :按字符切割
65、paste :合并兩個文件同行號的列到一行
-d”分隔符” :指定分隔符,默認tab
-s :所有行合成一行顯示
66、wc :收集文本統計數據,計算單詞總數,行總數,字節總數和字符總數
可以對文件或STDIN中的數據運行
默認是統計行數、字數、字符數
Wc -l :只統計行數
-w :只統計單詞總數
-c :只統計字節總數
-m :多少字符
67、sort :文本排序,把整理過的文本顯示在STDOUT,不改變原始文件
Sort -r :執行反方向(由上至下)整理
-n :執行按數字大小整理
-f :選項忽略(fold)字符串中的字符大小寫
-u :選項(獨特,unique)刪除輸出中的重復行
-t c :使用c 作為字符界定符
-k num :選擇某個字段來進行排序
Cat /etc/passwd | sort –t “:” –k
3
68、uniq: 從輸入中刪除前后相接的重復的行
Uniq -c :顯示每行重復出現的次數
-d :心啊是重復過的行
-u :顯示不曾重復的行
sort userlist.txt | uniq
–c
69、統計日志中頻繁訪問的前10個ip
cat /log | cut -d” ” -f1 |
sort | uniq -c | sort -nr | head
70、diff :命令的輸出被保存在一種叫做“補丁”的文件中
使用 –u 選項來輸出“統一的”diff格式文件,最適合于補丁文件(svn git
(主流) :打補丁工具)
diff -u foo.conf-broken foo.conf-works > foo.patch
71、patch :復制在其他文件中進行的改變
-b :來自動備份改變了的文件
patch -b foo.conf-broken foo.patch
72、grep :文本過濾工具,根據用戶指定的“模式”對目標文本進行匹配檢查,打印匹配到的行
Grep ,egrep ,fgrep(不支持正則表達式搜索)
–color=auto :對匹配到的文本著色顯示
-v :顯示不被pattern匹配到的行,相當于取反
-i :忽略字符串大小寫
-n :顯示匹配的行號
-c : 統計匹配到的行數
-o :僅顯示匹配到的字符串
-q :靜默模式,不輸出任何信息
-A# :after ,后#行
-B# :before ,前#行
-C# :CONTEXT ,前后各#行
-e :實現多個選項間的邏輯or關系
grep –e ‘cat ’ -e ‘dog’ file
-w :匹配整個單詞
-E :使用ERE
-F :相當于fgrep ,不支持正則表達式
73、netstat -nat : 用來查看系統中正在監聽的端口
lt+F[1-6]
2. Centos 7 :在哪個終端啟動,即位于哪個虛擬終端
5、 串行端口(/dev/ttyS#)
ttys
6、 偽終端(pty:pseudo-tty,/dev/pts/#)
pts ,ssh 遠程連接
7、 查看當前的終端設備:tty
8、 應用程序—附件—終端:
1、 支持多個“標簽”shell的圖形化終端模擬器
2、 Ctrl+shift+n :創建新窗口
3、 Ctrl+shift+q :關閉當前窗口
4、 Ctrl+shift+t :創建一個標簽頁
5、 Ctrl+shift+w :關閉一個標簽頁
6、 Ctrl+pgup/pgdn :切換上一個/前一個標簽頁
7、 Ctrl+shift+c :復制選中的文本
8、 Ctrl+shift+v :把文本粘貼到當前光標處
3、交互式接口:啟動終端后,在終端設備附加一個交互式應用程序
1、 GUI : Graphic User Interface
i. X protocol, window manager ,desktop
ii. Desktop: GNOME(C ,圖形庫gtk);
iii. KDE (C++,圖形庫qt);
iv. XFCE(輕量級桌面)
2、 CLI:Command Line Interface
Shell 程序:sh (bourn) csh tcsh ksh
4、Shell 是Linux 系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行
shell 也被稱為LINUX 的命令解釋器(command interpreter )
shell 是一種高級程序設計語言
5、GNU Bourne-Again Shell(bash) 是GNU 計劃中重要的工
具軟件之一,目前也是 Linux 標準的shell ,與sh 兼容
6、查看當前使用的shell:echo ${SHELL}
7、顯示當前系統使用的所有的shell : cat /etc/shells
8、查看系統變量:env 或 export
9、~ :代表家目錄
# :代表超級目錄
$ :代表普通用戶
10、顯示提示符格式: echo $PS1
修改命令提示符 :PS1=”[\u@\h \w]\$”
PS1=”[\e[31m][\u@\h \w]\$[\e[0m]”
\e : \033 \u:當前用戶 \h:主機名簡稱 \H:主機名
\w :當前工作目錄 \W:當前工作目錄基名 \t :24小時時間格式
\T:12小時時間格式 !:命令歷史數 # :開機后命令歷史數
11、shell命令分兩種:
一種是內部命令 :由內核直接提供
Help: 內部命令列表
Enable command 可以啟用命令
Enable -n command 禁用內部命令
Enable -n 查看所有禁用的內部命令
一種是外部命令 :由系統上的某個二進制文件提供
查看路徑 :which -a | –skip—alias command
Whereis command
區別指定的命令是內部還是外部命令:
type command
12、hash :hash緩存表
系統初始hash 表為空,當外部命令執行時,默認會從PATH路
徑下尋找該命令,找到后會將這條命令的路徑記錄到hash表
中,當再次使用該命令時,shell 解釋器首先會查看hash 表,
存在將執行之,如果不存在,將會去PATH 路徑下尋找。利用
hash緩存表可大大提高命令的調用速率
hash:會顯示最近執行的命令
hash –l:顯示hash緩存,可作為輸入使用
hash –t command:顯示命令的路徑
hash -r :清除緩存
13、alias :查詢系統中已經存在的別名
別名前加\ :代表執行其實的命令;單引號也可以;或直接在命令的路徑下調用
“\COMMAND”
’COMMAND’
/PATH/COMMAND
alias name =”name1” 僅在當前shell下有效
當前用戶 :~/.bashrc 所有用戶:/etc/bashrc
取消別名 :unalias name
16、Enable command 可以啟用命令,只對內部命令有效, Enable -n command 禁用內部命令
Enable -n 查看所有禁用的內部命令
17、pwd :顯示當前目錄
18、command [options] [argyments]
選項:用于啟用或者關閉命令的某個或某些功能
短選項:-c 例如 :-l ,-h
長選項:–word ,例如 :–all ,–human—readable
參數 :命令的作用對象,比如文件名,用戶名等
注意:多選項,以及多參數和命令之間使用空白字符分隔
取消和結束多個命令的執行:ctrl+c ;ctrl+d
\ :一個命令可以用\分成多行
; 多個命令可以用分號分開
19、date :顯示日期和時間
Linux的兩種時鐘:系統時鐘:由linux內核通過CPU的工作頻率進行的
硬件時鐘:主板
Hwclock ,clock :顯示硬件時鐘
-s ,–hctosys 以硬件時鐘為準
-w ,–sysytohc 以系統時間為準
時區:/etc/localtime
Date –s :修改系統時間
Date –d :指定具體時間
(兩天前星期幾)
Date +%F : 當前時間
Date +%Y:年 m:月 d:日 H:時 M:分 S:秒
Date –date=”3 days ago”
反引號:將命令執行結果作為輸出 雙引號 、單引號:字符串輸出
(反引號) 把一個命令的輸出打印給另一個命令的參數
Cal :顯示日歷 cal -y :顯示全年日歷
20、bc :命令行的計算器
21、nano:文本編輯器
22、half 、poweroff :關機
Reboot : -f 強制,但不調用shutdown
-p 切斷電源
Shutdown :關機或重啟
-r :reboot
-h :half
-c :取消
Time :now :立刻關機
+m :相當時間表示法,多久之后
Hh:mm :絕對時間表示,指明具體時間
Init 0 :關機
6 :重啟
23、用戶登錄信息命令
Whoami :查看當前有效登錄用戶
Who :系統當前所有的登錄會話
W :顯示所有登錄的用戶以及連接
24、screen :屏幕
Screen -s name :開啟一個會話
Screen -x name :加入一個會話
Ctrl + a + d : 退出
Screen -r :恢復剛剛的會話
Screen -ls :顯示所有已經打開的screen會話
25、echo :顯示字符
-E :默認 不支持 \ 解釋功能
-n :不自動換行
-e :啟用 \ 字符的解釋功能
啟用命令選項-e ,若字符串中出現以下字符,則特
別加以處理,而不會將它當成一般文字輸出
\a 發出警告聲
\b 退格鍵
\c 最后不加上換行符號
\n 換行且光標移至行首
\r 回車,即光標移至行首,但不換行
\t 插入tab
\\ 插入\ 字符
\0nnn 插入nnn (八進制)所代表的ASCII 字符
echo -e '\033[43;31;5mmagedu\033[0m'
\xHH 插入HH (十六進制)所代表的ASCII字
顯示變量: echo “$name” 變量會被替換,弱引用
Echo ‘$name’變量不會被替換,強引用
26、dirname :獲取文件的目錄名
Basename :獲取問價你的基名
27、uname :功能說明:uname用來獲取電腦和操作系統的相關信息
補充說明:uname可顯示linux主機所用的操作系統的版本、硬件的名稱等基本信息。
-a或–all 詳細輸出所有信息,依次為內核名稱,主機名,內核版本號,內核版本,硬件名,處理器類型,硬件平臺類型,操 作系統名稱
-m或–machine 顯示主機的硬件(CPU)名
-n或-nodename 顯示主機在網絡節點上的名稱或主機名稱
-r或–release 顯示linux操作系統內核版本號
-s或–sysname 顯示linux內核名稱
-v 顯示顯示操作系統是第幾個 version 版本
-p 顯示處理器類型或unknown
-i 顯示硬件平臺類型或unknown
-o 顯示操作系統名
–help 獲得幫助信息
–version 顯示uname版本信息
28、查看系統版本 :cat /etc/redhat-release
29、env 、 export :查看系統默認的變量
30、hostname :顯示當前系統的主機名 定義系統當前的主機名
僅僅對當前的環境生效
31、命令行擴展:$() 或
32、打印重復字符串的簡化形式
Echo file{1,3,5}
Echo {1..10}
Echo {a..z}
Echo {000..20..2}
33、命令補全
內部命令:
外部命令:bash根據PATH環境變量定義的路徑,自左而右在每個路徑搜索以給定命令名命名的文件,第一次找到的命令即為要執行的命令
用戶給定的字符串只有一條唯一對應的命令,直接補全,否則再次tab會給出列表
路徑補全:把用戶給出的字符串當作路徑開頭,并在其指定上級目錄下搜索以指定的字符串開頭的文件名,如果唯一,則直接補全,否則再次tab給出列表
command 2Tab 所有命令行補全
string2Tab 以string 開頭命令
/2Tab 顯示所有根目錄下一級目錄,包括隱藏目錄
./2Tab 當前目錄下子目錄,包括隱藏目錄
2Tab 當前目錄下子目錄,不包括隱藏目錄
~2Tab 所有用戶列表
$2Tab 所有變量
@2Tab /etc/hosts 記錄 (centos7 不支持)
=2Tab 相當于ls –A
34、命令行歷史 :history
歷史命令一般記錄在 .bash_history 文件中
當前shell中的歷史記錄會被記錄在內存,只有退出之后才會保存在 .bash_history
History 默認最多記錄1000行
最后一個退出的會寫在配置文件中
History -c :清空命令歷史
-r :讀取歷史文件,附加到歷史文件
-w :保存在歷史列表到指定的歷史文件
–p :展開歷史參數成多行,但不保存到歷史列表中
-s :展開歷史參數成一行,附加到歷史列表最后
-d offset :刪除歷史中指定的第offset個命令
$HISTSIZE :命令歷史記錄的條數
$HISTFILE :指定歷史文件的存放位置
$HISTFILESIZE :命令歷史文件記錄的條數
HISTTIMEFORMAT=”%F %T”:顯示每條命令的具體執行時間
HISTIGNORE=”str1:str2:…” 忽略string1,string2的歷史
控制命令歷史的記錄方式: 環境變量 :HISTCONTROL
ignoredups :默認。忽略重復的命令,連續切相同為重復
ignorespace :忽略所有以空白開頭的命令
ignoreboth :相當于ignoredups和ignorespace 的組合
erasedups : 刪除重復命令
重復前一個命令,有4種方法:
重復前一個命令使用上方向鍵
按!!并回車執行
輸入!-1并回車執行
按ctrl+p 并回車執行
!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
Ctrl-r 在命令歷史中搜索命令
Ctrl+g :從歷史搜索模式退出
要重新調用前一個命令中的最后一個參數:
1、 !$
2、 ESC , . (點擊esc鍵后松開,然后點 . 鍵)
3、 ALT+. (按住alt的同時點擊.鍵)
command !^ :利用上一個命令的第一個參數值
command !$ :利用上一個參數的最后一個參數值
command ! :利用上一個命令的全部參數
command !:n :利用上一個命令的第n個參數
command !string:^ :從命令歷史中搜索以string開頭的命令,并獲取它的第一個參
數
command !string:$ :從命令歷史中搜索以string開頭的命令,并獲取它的最后一個參數
command !string:n :從命令歷史中搜索以string開頭的命令,并獲取它的第n個參數
command !string:* :從命令歷史中搜索以string開頭的命令,并獲取它的所有參數
35、快捷鍵:
ctrl+l : 相當于clear
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 :從光標刪除至命令行尾
ctrl+d :刪除光標處的一個字符
ctrl+y :將刪除的字符粘貼到光標后
alt+c :從光標處開始向右更改為首字母大寫的單詞
alt+u :從光標處開始向右更改為全部大寫的字母
alt+l :從光標處更改為全部小寫的單詞
ctrl+t :交換光標處和之前的字符位置
alt+t :交換光標處和之前的單詞位置
alt+N :提示輸入指定字符后,重復顯示該字符N次
36、變量的簡單用法 :export 變量名=“值”
存放在 /etc/profile 或~/.bash_profile
37、whatis :顯示命令的簡短描述 ,跟man一樣的幫助命令
使用前需要: makewhatis | mandb 制作數據庫
38、命令幫助
1、內部命令幫助方法:help command
man command
2、外部命令幫助方法 : command –help
Man command
Info command
程序自身的幫助文檔
程序官方文檔
發行版的官方文檔
Google
–help :顯示用法總結和參數列表
Man命令: man命令的配置文件:/etc/man.config 或 man_db.conf
幫助手冊中的段落說明:
NAME 名稱及簡要說明
SYNOPSIS 用法格式說明
[] 可選內容
必選內容
a|b 二選一
{ } 分組
… 同一內容可出現多次
DESCRIPTION 詳細說明
OPTIONS 選項說明
EXAMPLES 示例
FILES 相關文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug 信息
SEE ALSO 其它幫助參考
man 命令的操作方法:
使用less 命令實現
space, ^v, ^f, ^F: 向文件尾翻屏
b, ^b: 向文件首部翻屏
d, ^d: 向文件尾部翻半屏
u, ^u: 向文件首部翻半屏
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行
y or ^Y or ^P or k or ^K :向文件首部翻一行
q: 退出
# :跳轉至第#行 行
1G: 回到文件首部
G
39、tree -L 1 –d /
Tree 用來查看目錄結構(需要先安裝)
-L 指定層數 -d 只查看目錄
40、dmesg :查看啟動的時候的內核日志
Last :登錄成功的用戶及ip
Lasb:登錄失敗的用戶以及ip
Lastb :去查看哪些地址的服務器在掃描我們的機器,然后把這些ip加入到host_deny iptables中
41、pwd -L :如果當前為鏈接路徑的話,則顯示鏈接路徑
-P :顯示真實物理路徑
42、絕對路徑:
以正斜杠開始
完整的文件的位置路徑
可用于任何想指定一個文件名的時候
相對路徑名:
不以斜杠開始
指定相對于當前工作目錄或某目錄的位置
可以作為一個簡短的形式指定一個文件名
43、cd 改變目錄
使用絕對或者相對路徑:
Cd /home/wang
Cd home/wang
切換至父目錄: cd..
切換至當前用戶的主目錄: cd
切換至以前的工作目錄:cd –
選項:-p
相關的環境變量: PWD:當前目錄路徑
OLDPWD :上一次目錄路徑
44、ls :列出當前目錄的內容或指定目錄
用法:ls [options] [files_or_dirs]
Ls –a 包含隱藏的文件
Ls –l 顯示額外的信息
Ls -R 目錄遞歸通過
Ls -ld 目錄和符號鏈接信息
Ls -d 顯示當前目錄的詳細信息,不顯示目錄下的內容
Ls -1 文件分行顯示
Ls -S 按從大到小排序
Ls -t 按mtime排序
Ls -u 配合-t選項顯示并按atime從新到舊排序
Ls -U 按目錄存放順序顯示
Ls -X 按文件后綴排序
45、stat :查看文件狀態
文件:metadata ,data
三個時間戳 :
Access time :訪問時間,atime,讀取文件內容
Modify time :修改時間 ,mtime ,改變文件內容(數據)
Change time :改變時間,ctime,元數據發生改變(屬性發生改變)
Mtime改變,ctime也會跟著改變
修改文件屬性或者權限,則ctime也會跟著改變
Atime 并不會實時發生改變,只有當mtime比atime新的時候才會改變
使用編輯器打開文件可能造成atime的改變
使用 touch –a 修改文件的訪問時間也會造成ctime的改變
46、touch : -m 修改mtime,也會造成ctime的改變
-c 修改ctime 如果文件不存在,則不予創建
-a 修改atime ,也會造成ctime的改變
-t [[cc]yy]MMDDhhmm[.ss] 指定atime和mitime的時間戳
結合-m 或-c 或 –a 修改制定的時間
Touch –m -t “time” 文件
47、cp :復制文件和目錄
Cp a b :復制一個文件并命名為b
Cp a tmp/ 把多個文件源復制到目錄下
Cp -r 目錄1 目錄2 :如果目錄2不存在,則會把目錄1重新拷貝一份并命名為目錄2
如果目錄2已經存在,則直接將目錄1拷貝到目錄2下
-i:覆蓋前提示
-r 或-R :遞歸復制目錄以及內部的所有內容
-d :復制的時候,如果目錄有鏈接文件,則只復制鏈接文件
-p :–preserv 復制的時候將文件的屬性 一起復制
-a :–pdr 把所有的目錄以及所有的屬性復制過去
-v :復制的時候顯示詳細過程
-f :強制復制,不管目標文件有沒有
Cp -av
Cp -avf 強制復制
48、mv :移動和重命名文件
常用選項: -I 交互式
-f :強制,如果目標已經存在同名文件,則強制移動過去,不提示
Mv a b 將a重名為b a有可能是文件或目錄
Mv a bd/ :將源文件a移動到目錄bd下
49、rm :刪除
常用選項: -i :交互式
-f :強制刪除
-r :遞歸
50、tree :顯示目錄樹
-d :只顯示目錄
-L 數目 :指定顯示的層級數目
-p pattern :只顯示由指定pattern匹配到的路徑
51、mkdir :創建目錄
-p :存在于不報錯,且可自動創建所需的各目錄(遞歸創建)
-v :顯示詳細信息
-m MODE :創建目錄是直接指定權限
52、rmdir :刪除空目錄
-p :遞歸刪除父空命令
-v :顯示詳細信息
53、inode :索引節點
df -i :查看某個分區inode的使用
ll -i :查看某個文件的inode號
Inode表中包含文件系統所有文件列表
一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據),包括:文件類型,權限,UID,GID,鏈接數(指向這個文件名路徑名稱個數),該文件的大小和不同的時間戳,指向磁盤上文件的數據塊指針,有關文件的其他數據
Inode 根據系統上的inode號去找到對應的文件
Inode 系統上的inode號會滿,有可能是磁盤上的小文件過多
Inode 是在磁盤格式化的時候已經確定
為什么空間沒滿,但是我的數據寫不進去,是因為小文件太多,造成inode用完了,解決方法就是把數據拷貝出來,重新格式化分區,重新指定inode
一個文件只能有一個inode
Cp 操作就是生成一個新的inode,然后把源文件的數據復制過去,同時把新的inode指過去
Rm刪除的時候只是刪除inode,數據還在
Mv的時候如果在同一個分區,那么mv的時候只是修改了文件路徑,文件本身的inode沒變
如果目標文件和源文件位于不同的分區(文件系統),那么一般執行的是先cp后刪除操作
54、鏈接文件
硬鏈接 :創建硬鏈接會增加額外的記錄項以引用文件
對于同一個文件系統上的一個物理文件
每個目錄引用相同的indoe號
創建時鏈接數遞增
刪除文件時: rm命令遞減計數的鏈接
文件要存在,至少有一個連接數
當鏈接數為零時,該文件被刪除
不能跨驅動器或分區
語法 :ln filename 被鏈接文件
軟(符號)鏈接 :
一個符號鏈接指向另一個文件
Ls –l 的顯示連接的名稱和引用的文件
一個符號鏈接的內容是它引用文件的名稱
可以對目錄進行
可以跨分區
指向的是另一個文件的路徑;其大小 為指向的路徑字符串的長度;不增加或減少目標文件indoe的引用計數
語法 :ln -s filename 被鏈接文件
-f :強制鏈接 ,無論原來的鏈接是否存在,強制她它指向一個新的位置
-n :把符號鏈接的目的目錄視為一般文件
55、file :用來查看某個文件的文件類型
-b :不顯示文件名稱
-f a.txt: 列出a.txt文件中所記錄的文件對應的文件類型
-F 使用指定分隔符號替換輸出文件名后默認“:”分隔符
-L 查看對應軟鏈接對應文件的文件類型
56、tr :轉換和刪除字符
選項 :-c -C –complement:取字符集的補集
-d –delete :刪除所有屬于第一字符集的字符
-s –squeeze-repeats :把連續重復的字符以單獨一個字符顯示
-t –truncate –set1 :將第一個字符集對應字符轉化為第二個字符集對應的字符
Tr ‘a-z’’A-Z’ /etc/fstab
Tr –d –c ‘0-9’ foo.patch
71、patch :復制在其他文件中進行的改變
-b :來自動備份改變了的文件
patch -b foo.conf-broken foo.patch
72、grep :文本過濾工具,根據用戶指定的“模式”對目標文本進行匹配檢查,打印匹配到的行
Grep ,egrep ,fgrep(不支持正則表達式搜索)
–color=auto :對匹配到的文本著色顯示
-v :顯示不被pattern匹配到的行,相當于取反
-i :忽略字符串大小寫
-n :顯示匹配的行號
-c : 統計匹配到的行數
-o :僅顯示匹配到的字符串
-q :靜默模式,不輸出任何信息
-A# :after ,后#行
-B# :before ,前#行
-C# :CONTEXT ,前后各#行
-e :實現多個選項間的邏輯or關系
grep –e ‘cat ’ -e ‘dog’ file
-w :匹配整個單詞
-E :使用ERE
-F :相當于fgrep ,不支持正則表達式
73、netstat -nat : 用來查看系統中正在監聽的端口
原創文章,作者:2547221149,如若轉載,請注明出處:http://www.www58058.com/73588