前言
總結這篇博客,其實我也想了很久。一直猶豫不決,寫還是不寫呢?最終我還是決定總結一篇基礎篇,自己以前學習的時候都是看視頻總結的。寫下這篇總結對新入坑者肯定是有些好處的,至少可以少走一些彎路,自己也可以得到一些提升。
還沒有安裝虛擬機的小夥伴可以參考我之前的博文:
linux養成達人之入門實踐圖文超詳細(工欲善其事,必先利其器篇)
目錄
- 命令格式以及文件處理命令
- 文件搜索命令
- 幫助命令
- 壓縮命令
- 關機與重啓命令
- 其它常用命令
- shell基礎
正文
一、命令格式以及文件處理命令
好了,上面羅裏吧嗦的講了一堆,結果只是前戲。這會肯定有人納悶了,我看了這麼久的前戲,咋還沒進去。這不,下面你蹭一蹭就進去了,進入正題。
[root@localhost~]#
- root:代表當前登錄用戶,超級用戶。
- localhost:代表默認主機名
- ~:代表你的當前目錄[家目錄],root用戶登錄所在初始目錄在根目錄
- #:代表root用戶提示符
- 如果是$符號是普通用戶登錄
1. 命令格式
- 命令 [選項][參數]
- 注意:個別命令使用不遵循此格式。有多個選項時可以寫在一起,簡化選項與完整選項-
a
等於--all
查看列表詳情命令:ls
[選項][參數]
- -
a
:顯示所有文件,包含隱藏文件 - -
l
:顯示詳細信息 - -
d
:查看目錄屬性 - -
h
:個性化顯示文件大小 - -
i
:顯示inode
2. 目錄處理命令
- 建立目錄命令:
mkdir
[選項] [目錄] - -p:遞歸創建
切換所在目錄命令:cd
[目錄]
- 簡化操作,注意:cd與符號之間是有空格的
- cd ~:進入當前目錄的家目錄
- cd -:進入上次目錄
- cd …:進入上一級目錄
- cd .:進入當前目錄
TAB
鍵:補全
查看當前路徑命令:pwd
,常用命令
刪除目錄命令:rmdir
[選項],刪除目錄,一般不用,瞭解就行。
刪除命令:rm
[選項] [目錄或文件]
- -r:刪除目錄
- -f:強制刪除
複製命令:cp
[選項][原目錄或文件][目標目錄]
選項:
- -r:複製目錄
- -p:連帶文件屬性複製
- -d:如果源文件是鏈接文件,則複製鏈接屬性
- -a:相當於-pdr
剪切或改名命令:mv
[原目錄或文件][目標目錄]
- 注意:當原文件目錄和目標目錄是同一目錄時就是改名,當原文件目錄和目標目錄不是一目錄時就是剪切
3. 常見目錄作用
- :/ 根目錄
- :/
bin
命令保存目錄(普通用戶就可以讀取的命令) - :/
boot
啓動目錄,啓動相關文件 - :/dev 設備文件保存目錄
- :/
etc
配置文件保存目錄 - :/
home
普通用戶的家目錄 - :/lib 系統庫保存目錄
- :/mnt 系統掛載目錄
- :/media 掛載目錄
*********************************** 視覺疲勞分割線 ***********************************
- :/
root
超級用戶的家目錄 - :/
tmp
臨時目錄 - :/
sbin
命令保存目錄(超級用戶才能使用的目錄) - :/
proc
直接寫入內存 - :/sys
- :/
usr
系統軟件資源目錄 - :/usr/bin 系統命令(普通用戶)
- :/usr/sbin 系統命令(超級用戶)
- :/
var
系統相關文檔內容
4. 鏈接命令:ln
,注意:實際的應用中實用的更多的是軟鏈接
硬鏈接:ln /root/cangls /tmp/cangls.hard
特徵:
- 擁有相同的I節點和block塊,可以看做是同一個文件
- 可通過I節點識別
- 不能誇分區
- 不能針對目錄使用
軟鏈接:ln -s /root/cangls /tmp/cangls.soft
,注意:使用軟鏈接時,原文件一定要用絕對路徑
特徵:
- 類似windows快捷鍵
- 軟鏈接擁有自己的I節點和block塊,但是數據塊中只保存源文件的文件名和I節點號,並沒有實際的文件數據
- lrwxrwxrwx,l:軟鏈接,軟鏈接權限都爲lrwxrwxrwx,注意:真實權限都看源文件
- 修改任意文件,另一個都改變
- 刪除原文件,軟鏈接無法使用
二、文件搜索命令
- 文件搜索命令
locate
- locate [文件名],只能接文件名
- 在後臺數據庫中按文件名搜索,搜索速度更快
/var/lib/mlocate
- locate命令所搜索的後臺命令,不是及時更新,這時可以使用updatedb命令更新
updatedb
更新數據庫
/etc/updatedb.conf
配置文件
- PRUNE_BIND_MOUNTS,開啓搜索限制
- PRUNEFS="",不搜索的系統文件
- PRUNENAMES="",不搜索的文件類型
- PRUNEPAEHS="",不搜索的路徑
2. 命令搜索命令
whereis
[命令],搜索命令所在路徑以及幫助文檔所在位置
- b:只查找可執行文件
- m:只查找幫助文件
- 注意:侷限性,只能搜索系統命令
which
[文件名]
- 搜索所在路徑以及別名,部分命令不支持,例如:pwd,cd
find
文件搜索命令
- find [搜索範圍][搜索條件]
- 例如:
find / -name install.log
- 避免大範圍搜索,會非常耗費系統資源。
- find是在系統中搜索符合條件的文件名。如需匹配,使用通配符,通配符是完全匹配。
不區分大小寫:find
/root -iname install.log
按照所有者搜索:find
/root -user root
查找所有者的文件:find
/root -nouser
查找10天前修改的文件:find
/var/log -mtime +10
- -10,10天內修改的文件;10,10天當天修改的文件;+10,10天前修改的文件。
atimne
,文件訪問時間;ctime
,修改文件屬性;mtime
,修改文件內容。
查找/etc
目錄下大小爲25KB的文件:find /etc -size 25k
- -25k,小於25KB的文件
- 25k,等於25KB的文件
- +25k,大於25KB的文件
查找i節點爲262422的文件
find . -inum 262422
查找/etc/目錄下大於20KB且小於50KB的文件
find /etc -size +20k -a -size -50k
- -a相當於and,邏輯與,兩個條件都滿足
- -o相當於or,邏輯或,兩個條件滿足一個即可
查找/etc/目錄下大於20KB且小於50KB的文件,並且顯示詳細信息
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
-exec/-ok
命令{}\;
對搜索結果執行操作
grep
字符串搜素命令
- grep [選項] 字符串 文件名,在文件當中匹配符合的字符串
- -i,忽略大小寫
- -v,排除指定字符串
- 根據文件大小匹配:
grep "size" anaconda-ks.cfg
find
與grep
的區別
- find命令:在系統當中搜索符合條件的文件名,如需匹配,使用通配符,通配符是完全匹配。
- grep命令:在文件當中搜索符合條件的字符串,如需匹配,使用正則表達式進行匹配,正則表達式是包含匹配。
三、幫助命令
1. 幫助命令,man
的級別:
- 1:查看命令的幫助
- 2:查看可被內核調用的函數的幫助
- 3:查看函數和函數庫的幫助
- 4:查看特殊件的幫助(主要是/dev目錄下的文件)
- 5:查看配置文件的幫助
- 6:查看遊戲的幫助
- 7:查看其它雜項的幫助
- 8:查看系統管理員可用命令的幫助
- 9:查看和內核相關文件的幫助
man
命令,獲取指定命令的幫助
- 例如:
man ls
,查看ls的幫助
查看命令擁有哪個級別的幫助
man -f
命令相當於whatis
命令
例如:
- man -5 passwd
- man -4 null
- man -8 ifconfig
查看命令相關的所有幫助
man -k
命令,相當於apropos
命令- 例如:apropos -passwd
2. 其它幫助命令
--help
命令,獲取命令選項幫助- 例如:ls --hrlp
help shell
內部命令
- 獲取shell內部命令的幫助
- 例如:whereis cd,確定是否是shell內部命令
- 例如:help cd,獲取內部命令幫助
info
,詳細命令幫助
- 回車:進入子幫助頁面(帶有*號標記)
- u:進入上層頁面
- n:進入下一個幫助小結
- p:進入上一個幫助小結
- q:退出
四、壓縮命令
1. 壓縮命令1
zip
命令
- 壓縮文件:
zip
壓縮文件名 源文件 - 壓縮目錄:
zip -r
壓縮文件名 原目錄 - 解壓縮:
unzip
壓縮文件
.gz
格式壓縮,gzip
源文件
- 壓縮爲
.gz
格式的壓縮文件,源文件會消失
gzip -c
源文件 > 壓縮文件
- 壓縮爲
.gz
格式,源文件保留,例如:gzip -c bols > bols.gz
gzip -r
目錄
- 壓縮目錄下所有的子文件,但不能壓縮目錄
.gz
格式解壓縮
- gzip -d 壓縮文件
- gunzip 壓縮文件
.bz2
格式壓縮
- bzip2 源文件
- 壓縮爲.bz2格式,不保留源文件
bzip2 -k
源文件
- 壓縮後保留源文件
- 注意:bzip2命令不能壓目錄
.bz2
解壓縮
bzip2 -d
壓縮文件- 解壓縮,加上
-k
屬性保留壓縮文件
bunzip2
壓縮文件
- 解壓縮,加上-k屬性保留壓縮文件
2. 壓縮命令2
.tar.gz
壓縮格式- 其實
.tar.gz
格式是先打包爲.tar格式,在壓縮爲.gz格式
tar -zcvf
壓縮包名.tar.gz
源文件
- -z:壓縮爲.tar.gz格式
tar -zxvf
壓縮包名.tar.gz
源文件
- -x:解壓縮.tar.gz格式
.tar.bz2
壓縮格式
- tar -jcvf 壓縮包名.tar.bz2 源文件
- -j:壓縮爲.tar.bz2格式
- tar -jxvf 壓縮包名.tar.bz2 源文件
- -x:解壓縮.tar.bz2格式
打包命令tar
tar -cvf
打包文件名 源文件
- -c:打包
- -v:顯示過程
- -f:指定打包後的文件名
- 例如:tar -cvf bols.tar longls
解打包命令
- tar -xvf 打包文件名
- -x:解打包
- 例如:
tar -xvf bols.tar
五、關機與重啓命令
瞭解關機與重啓命令之前,首先看一下系統運行級別:
- 0:關機
- 1:單用戶
- 2:不完全多用戶,不含NFS服務
- 3:完全多用戶
- 4:未分配
- 5:圖形界面
- 6:重啓
- 關機命令
shutdown
命令,shutdown
[選項] 時間
- -c:取消前一個關機命令
- -h:關機
- -r:重啓
*.**********************************************分割線***********************************************1
- 其它關機命令:halt,poweroff,init 0
- 其它重啓命令:
reboot
,init 6 - 注意:使用服務器時,不要隨便去使用關機命令。一旦使用了,會造成不必要的麻煩。
2.重啓命令
reboot
,執行命令進行重啓shutdown -r
,執行命令進行重啓
注意:使用logout
命令,養成良好的習慣退出登錄
六、其它常用命令
- 掛載命令格式
mount
[-t 文件系統] [-o 特殊選項] 設備文件名 掛載點
-t
文件系統:加入系統文件類型來指定掛載的類型,可以是ext3
、ext4
、iso9660
等文件系統-o
特殊選項:可以指定掛載的額外選項
掛載命令,查詢與自動掛載
mount
:查詢系統中已經掛載的設備mount -a
:依據配置文件/etc/fstb
的內容,自動掛載
部分參數說明
atime/noatime
:更新訪問時間/不更新訪問時間。訪問分區文件時,是否更新文件的訪問時間,默認爲更新。async/sync
:異步/同步,默認爲異步auto/noauto
:自動/手動,執行mount -a命令時,是否會自動安裝/etc/fstb文件內容掛載,默認自動。defaults
:定義默認值,相當於rw
,suid
,dev
,exec
,auto
,nouser
,async
這七個選項。exec/noexec
:執行/不執行,設定是否允許在文件系統中執行可執行文件,默認exec允許。remount
:重新掛載已掛載的文件系統,一般用於指定修改特殊權限。rw/ro
:讀寫/只讀,文件系統掛載時,是否具有讀寫權限,默認rw
。suid/nosuid
:具有/不具有suid權限,設定文件系統是否具有suid和sgid的權限,默認具有。user/nouser
:允許/不允許普通用戶掛載,設定文件系統是否允許普通用戶掛載,默認不允許,只有root
可以掛載分區。usrquota
:寫入代表文件系統支持用戶磁盤配額,默認不支持。grpquota
:寫入代表文件系統支持組磁盤配額,默認不支持。
掛載光盤
- 建立掛載點:
mkdir /mnt/cdrom/
- 掛載光盤:
mount -t iso9660 /dev/cdrom /mnt/cdrom/
,這裏說明下:只是習慣在mnt
下建立,media
下建立也行。 mount /dev/sr0 /mnt/cdrom/
卸載命令
unmount
設備文件名或者掛載點- 例如:
unmount /mnt/cdrom/
掛載U盤
fdisk -l
:查看U盤設備文件名mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默認不支持NTFS文件系統
2. 用戶登錄查看命令
查看用戶登錄信息,w
用戶名
命令輸出:
USER
:登錄的用戶名TTY
:登錄終端FROM
:從哪個IP地址登錄LOGIN@
:登錄時間DILE
:用戶閒置時間JCPU
:與該終端連接的所有進程佔用的時間。這個時間裏並不包括過去的後臺作業時間,但包括當前正在運行的後臺作業佔用時間PCPU
:當前進程所佔用時間WHAT
:當前正在運行的命令w
查詢登錄用戶,顯示系統時間和運行時間,用戶個數以及平均負載。
查看登錄用戶信息,who
用戶名
命令輸出:
- 用戶名,登錄終端,登錄時間(登錄來源IP地址)
whoami
查看當前用戶
查詢當前登錄和過去登錄的用戶信息,last
last
命令默認讀取/var/log/wtmp
文件數據- 命令輸出:用戶名,登錄終端,登錄IP,登錄時間,退出時間(在線時間)
查看所有用戶最後一次登錄時間,lastlog
lastlog
命令默認讀取/var/log/lastlog
文件內容- 命令輸出:用戶名,登錄終端,登錄IP,最後一次登錄時間
netstat
命令,查看網絡狀態
netstat -an | grep ESTABLISHED
七、shell基礎
1.shell
概述
- shell的兩種主要語法類型有
Bourne
和C
,這兩種語法彼此不兼容。Bourne家族主要包括:sh、ksh、Bash、psh、zsh; - C家族主要包括:csh、tcsh
Bash
中其它特殊符號
- ‘’,單引號。在單引號中所有特殊符號,如"$“和”`"(反引號)都沒有特殊含義
- “”,雙引號。在雙引號中所有特殊符號除"
$
"、"、"、"\
“外都無特殊含義。”$"、"、"、"“擁有"調用變量的值”、"引用命令"和"轉義符"的含義 - ``,反引號。反引號括起來的是系統命令,在Bash中會優先執行它。和
$
()作用一樣,推薦使用$
(),反引號容易誤導。 - $(),與反引號作用相同,用來引用系統命令。
- #,在shell腳本中,#代表註釋。
$
,用於調用變量的值,如果需要調用name的值時,需要使用$name獲取變量的值。- \,轉義符,跟在\之後的特殊符號將失去特殊含義,變爲普通字符。例如:$將輸出"$"符號,則不會作爲變量引用。
2 .腳本執行方式
#編寫一個簡單的linux腳本,使用vim命令
vim /home/hello.sh
#注意你的腳本開頭必須加上:#!/bin/bash
#!/bin/bash
echo "hello world" >> /root/hello.log
#賦予讀和執行權限
chmod 755 /hello.sh
#使用 sh hello.sh 命令執行
3. 別名與快捷鍵
查看與設定別名
alias
命令,查看系統命令中所有的命令別名alias
別名 = ‘原命令’,設定命令別名,當然這樣設置只會臨時生效
別名永久生效與刪除別名
vi ~/.bashrc
,寫入環境變量配置文件unalias
別名,刪除別名
命令生效順序
- 第一順位執行用絕對路徑或相對路徑執行的命令
- 第二順位執行別名
- 第三順位執行Bash的內部命令
- 第四順位執行按照$PATH環境變量定義的目錄查找順序找到的第一個命令
4. 歷史命令,history
[選項][歷史命令保存文件]
- -c:清空歷史命令
- -w:把緩存中的歷史命令寫入歷史命令保存文件~/.bash_history
歷史命令的調用
- 使用上、下箭頭調用以前的歷史命令
- 使用"!n"重複執行第n條命令
- 使用"!!"重複執行上一條命令
- 使用"!字符串"重複執行最後一條以該字符串開頭的命令
5. 輸出重定向
echo
輸出命令 [選項][輸出內容]
- -e:支持反斜線控制的字符轉換
控制字符作用
- \a:輸出警告音
- \b:退格鍵,向左刪除
- \n:換行符
- \r:回車鍵
- \t:製表符,TAB鍵
- \v:垂直製表符
- \0nnn:按照八進制ASCII碼輸出字符。其中0爲數字零,nnn爲三位八進制數。
- \xhh:按照十六進制ASCII碼輸出字符。hh是兩位十六進制數。
例如:echo "cangls" >> av.avi
,表示以追加形式將蒼老師輸出到av
文件中。
標準輸出重定向:
-
命令 > 文件,以覆蓋的方式,把命令的正確輸出到指定的文件或設備當中
-
命令 >> 文件,以追加的方式,把命令的正確輸出到指定的文件或設備當中
-
錯誤命令 2> 文件,以覆蓋的方式,把命令的錯誤輸出到指定的文件或設備當中
-
錯誤命令 2>> 文件,以追加的方式,把命令的錯誤輸出到指定的文件或設備當中
正確輸出和錯誤輸出同時保存:
- 命令 > 文件 2>&1,以覆蓋的方式,把命令的正確和錯誤輸出保存在同一個文件中
- 命令 >> 文件 2>&1,以追加的方式,把命令的正確和錯誤輸出保存在同一個文件中
- 命令 &> 文件,以覆蓋的方式,把命令的正確和錯誤輸出保存在同一個文件中
- 命令 &>>文件,以追加的方式,把命令的正確和錯誤輸出保存在同一個文件中
- 命令 >> 文件1 2>> 文件2,把正確的輸出到文件1中,錯誤的輸出到文件2中
有出重定向,當然也有輸入重定向,瞭解就行。
wc
[選項][文件名]
- -c:統計字節數
- -w:統計單詞數
- -l:統計行數
最後總結出實用的幾種,以追加的形式把錯誤和正確的結果輸出到文件中:
- 命令 >> 文件 2>&1
- 命令 &>> 文件
- 命令 >> 文件1 2>> 文件2
6. 管道符
命令格式
- 命令1 | 命令2,命令1的正確輸出作爲命令2的操作對象
多命令順序執行
- ;,格式1:命令2,多個命令順序執行,命令之間沒有任何邏輯關係
- &&,命令1&&命令2,邏輯與,當命令1正確執行,命令2纔會執行;命令1無法正確執行,命令2不會執行
- ||,命令1||命令2,邏輯或,當命令1非正確執行,命令2纔會執行;命令1正確執行,命令2不會執行
7. 通配符
linux中的通配符
*
,匹配任意內容?
,匹配任意一個字符- [],匹配任意一箇中括號內的字符,例如[abc]代表匹配一個字符,可能是a,也可能是b或c。
- [-],匹配中括號裏的任意一個字符,-代表一個範圍,例如:[a-z]代表匹配一個小寫字母。
- [ ^ ],邏輯非,匹配不是中括號裏的一個字符,例如:[^0-9]代表匹配一個非數字的字符。
思來想去還是把這幾個總結放在最後
安裝完系統後,使用date
命令,發現虛擬機的時間不對,是不是感覺有點不舒服,強迫症得把它改回來。首先使用chkconfig --list | grep ntpdate
命令進行檢查是否安裝服務,chkconfig
命令是針對rpm
包安裝的服務的。假如沒安裝,使用yum -y install ntpdate
命令安裝。
使用此命令:ntpdate time.windows.com
,校對時間,值得注意的是這樣只會臨時生效。
這裏還是寫詳細點,通過vim
命令編輯文件,vim
[文件名]。想編輯這個文件,會有提示按i
鍵插入,退出保存輸入:wq
,不保存退出輸入q!
。
這會有小夥伴會問了,每次開機啓動都要手動執行校對時間命令豈不是很麻煩,別急嘛。這不貼心的暖男給你們找出解決方法了,編輯vim /etc/rc.local
文件 ,寫入ntpdate time.windows.com
就OK了。如下圖所示:
添加用戶與設置密碼,這裏再補充一個常用的命令,有時候爲了學習方便,你會去新建幾個普通用戶進行測試。使用useradd
命令添加用戶,使用passwd
命令修改密碼。
useradd
[選項]
useradd 接用戶名,例如:useradd user1
,新建一個user1用戶,當然useradd也可以加參數,使用man useradd
命令可查看幫助文檔,後面會總結到的。如下圖,你進入了幫助文檔,按上下鍵往下翻。想退出,按q鍵就可以直接退出幫助文檔了。
passwd
[選項]
passwd 用戶名,例如:passwd user1
,修改user1的密碼,同樣使用上面提到的man
幫助命令可以查看幫助文檔。
瞭解一些常用的快捷鍵,很實用的
- ctrl + c:強制終止當前命令
- ctrl + l:清屏
- ctrl + a:光標移動到命令行首
- ctrl + e:光標移動到命令行尾
- ctrl + u:從光標所在位置刪除到行首
- ctrl + z:把命令放入後臺
- ctrl + r:在歷史命令中搜索
TAB
快捷鍵,命令與補全文件。在Bash
中,命令與文件補全是非常方便與常用的功能,只要在輸入命令或文件時,按"TAB"鍵就會自動補全。
好了,到此爲止就是此篇文章的全部內容了,能看到這的都是帥哥靚妹啊!!!祝在座的各位客官們鼠年大吉,“鼠”不盡的快樂!“鼠”不盡的收穫!“鼠”不盡的鈔票!“鼠”不盡的笑容!“鼠”不盡的幸福!“鼠”不盡的甜蜜!“鼠”不盡的激情!“鼠”不盡的活力!“鼠”不盡的健康!
尾聲
相信小夥伴們看了這篇博客,對linux操作系統的基本命令肯定是有所瞭解了。centos、ubantu等等這些都是類Unix操作系統,命令使用都大同小異,基本上很多都是通用的,用啥系統都因人而異。不過也得適應公司所使用的,個人比較喜歡用centos而已。