小技巧
ctrl + shift + = 放大終端窗口的字體顯示
ctrl + - 縮小終端窗口的字體顯示
一部分參考了網上的一些文章
內部命令也稱shell內嵌命令,這些命令是寫在bash源碼的builtins里面的,由shell 程序識別并在 shell 程序內部完成運行,通常在 Linux 系統(tǒng)加載運行時 shell 就被加載并駐留在系統(tǒng)內存中,不需要臨時去磁盤加載命令。而且解析內部命令 shell 不需要創(chuàng)建子進程,因此其執(zhí)行速度比外部命令快。
外部命令存放在一個文件中,需要時候在文件中查找,這些文件定義在$PATH中,通常放在/bin,/usr/bin,/sbin,/usr/sbin目錄中。
我們可以通過enable命令來查看內部命令
[root@localhost ~]# enable
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
enable complete
enable compopt
enable continue
enable declare
enable dirs
enable disown
enable echo
enable enable
enable eval
enable exec
enable exit
enable export
enable false
enable fc
enable fg
enable getopts
enable hash
enable help
enable history
enable jobs
enable kill
enable let
enable local
enable logout
enable mapfile
enable popd
enable printf
enable pushd
enable pwd
enable read
enable readarray
enable readonly
enable return
enable set
enable shift
enable shopt
enable source
enable suspend
enable test
enable times
enable trap
enable true
enable type
enable typeset
enable ulimit
enable umask
enable unalias
enable unset
enable wait
幫助命令
help
獲取shell內置命令的幫助信息,不能用于外部命令.
help [-dms] [pattern...]
例子:
一、用于查看shell內建命令的簡要信息,幫助信息中顯示有該命令的簡要說明以及一些參數的使用以及說明。
[root@localhost ~]# help
GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)
These shell commands are defined internally. Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list
二、外部命令的 help
ls --help
man
man 命令,它是 Manual pages 的縮寫,它是 Linux 系統(tǒng)中在線軟件文檔的一種普遍的形式,其內容包括計算機程序(包括庫和系統(tǒng)調用)、正式的標準和慣例,抽象的概念等。獲取幫助信息,沒有內部命令與外部命令的區(qū)分。
man [OPTION...] [SECTION] PAGE...
例子:
man man
man 1 ls # 如要查看相應區(qū)段的內容,就在 man 后面加上相應區(qū)段的數字即可
info
如果你感覺man 還是不夠, 那么你可以使用info,通過info可以獲取到更加詳細的信息。
info [OPTION]... [MENU-ITEM...]
例子:
info ls
文件目錄
cd
用于更改當前目錄
cd - #返回長層目錄
cd .. #返回上層目錄
cd 回車 #返回主目錄
cd / #根目錄
cd ~ #回到自己的家目錄
ls
ls 用于 列出相關目錄下的所有目錄文件
格式: ls [選項] [目錄名]
-a 列出包括.a開頭的隱藏文件的所有文件
-A 通-a, 擔不列出"."和".."
-l 列出文件的詳情信息
-c 根據ctime排序顯示
-t 根據修改時間排序
--color[=WHEN] 用色彩辨別文件類型 WHEN可以是 'never', 'always', 'auto'其中之一
白色: 表示普通文件
藍色: 表示目錄
綠色: 表示可執(zhí)行文件
紅色: 表示壓縮文件
淺藍色: 鏈接文件
紅色閃爍: 表示連接文件有問題
黃色: 表示設備文件
灰色: 表示其他文件
pwd
查看當前所屬路徑
mkdri
創(chuàng)建目錄
格式: mkdir[選項] 目錄...
參數
-p 遞歸創(chuàng)建目錄, 若父目錄不存在則依次創(chuàng)建
-m 自定義創(chuàng)建目錄的權限, eg: mkdir -m 777 hehe
-v 顯示創(chuàng)建目錄詳情
例子
mkdir -p /home/zhaoming/www
rmdir
刪除空目錄
參數
-v 顯示執(zhí)行過程
-p 若自父母刪除后父目錄為空則一并刪除
例子
rmdir -p /home/zhaoming/www
touch
創(chuàng)建空文件或者更新文件時間
格式: touch [選項] 文件
參數
-a 只修改存取時間
-m 只修改變動時間
-r eg: touch -r a b ,使b的時間和a相同
-t 指定特定的時間 eg: touch -t 201211142234.50 log.log
-t time [[CC]YY]MMDDhhmm[.SS], C:年前兩位
例子
touch index.html
cp
將源文件復制到目標文件,或者將多個源文件復制到目標目錄
格式: cp [選項]源文件或目錄
參數
-r -R 遞歸復制該目錄以及子目錄內容
-p 連同檔案屬性一起復制
-f 不詢問而強制復制
-s 生成快捷方式
-a 將檔案的所有特性都以復制
例子
cp -r test/ newdir # 將當前目錄下的test文件夾復制到新的newdir下
mv
移動或重命名文件
格式: mv [選項] 源文件或目錄
參數
-b 覆蓋前做備份
-f 如不詢問而強制覆蓋
-i 如存在咨詢問是否覆蓋
-u 較新才覆蓋
-t 將多個源文件移動到同意目錄下, 文件參數在后
例子
mv oldFilename.txt newFileName.txt # 將文件oldFileName.txt 更名為 newFileName.txt
mv fileName.txt /home/zhaoming/www # 將文件fileName.txt 移動到/www/zhaoming/www
注意
如果目錄存在,則該命令執(zhí)行移動操作。
如果目錄不存在,則該命令執(zhí)行修改操作。
rm
刪除文件
格式: rm [選項] 文件
參數
-r 刪除文件
-f 刪除不提示
-i 刪除提示
-v 詳細顯示進行步驟
例子
rm -rf dirName # 遞歸刪除目錄下的所有文件
所以這里知道rm -rf /* 的危害了吧
rm -r * # 刪除當前目錄下的所有文件以及目錄
注意
文件一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令。
cat
查看文件內容
格式:
cat[選項][文件]...
參數
-n 或 --number # 編號文件內容再輸入
-E # 在結束行提示$
-b 或 --number-nonblank # 和 -n 相似,只不過對于空白行不編號。
例子
cat -number test.txt
我最常用的
cat err.log | tail -n 20 # 查看err.log的最后20行
cat err.log | head -n 20 # 查看err.log 前20行
cat err.log | tail -n +20 # 從第20行開始顯示(包含第20行)后面的所有行:
cat err.log | head -n -20 # 從倒數第20行開始顯示(不包含倒數第20行)之前的所有行
cat err.log | head -n 500 | tail -n +100
cat err.log | tail -n +100 | head -n 401
sed -n '100,500p' err.log # 這三個都是 顯示100行到500行
echo
顯示一行文本, 用于字符串的輸出
參數
-n 輸出后不換行
-e 遇到轉義字符特殊處理
例子
echo 'he\nhe' # 顯示 he\nhe
echo -e 'he\nhe' # 顯示he{換行了} he
echo 111 > 1.txt # 可以將創(chuàng)建1.txt內容為111
echo "\"It is echo\"" # "It is echo"
echo $PWD # / 輸出變量
echo -e "OK! \n" # ok! 換行
echo `date` # 顯示命令內容 Tue Oct 13 19:48:24 CST 2020
>>
重定向
>列表的內容寫入到文件中(覆蓋源文件)
>>列表的內容追加到文件末尾
例子
[root@localhost]# ll > 1.txt
[root@localhost]# cat 1.txt
total 0
-rw-r--r--. 1 root root 0 Oct 13 20:00 1.txt
-rw-r--r--. 1 root root 0 Oct 13 20:00 index.txt
ls -l >> a.txt
tac
反向顯示, 查看文件內容,倒序
格式 tac [選項] fineName
例子
[root@localhost]# touch test.txt
[root@localhost]# vim test.txt
[root@localhost]# cat test.txt
123
456
[root@localhost]# tac test.txt
456
123
more
按頁查看文章內容, 從前向后讀取文件, 因此在啟動時就加載整個文件
參數
+n 從第n行開始顯示
-n 每次查看n行數據
+/String 搜尋String字符串位置, 從其前兩行開始查看
-c 清屏在顯示
-p 換頁時清屏
操作
空白鍵 (space):代表向下翻一頁;
Enter:代表向下翻『一行』;
q:代表立刻離開 more ,不再顯示該文件內容。
Ctrl+F 向下滾動一屏
Ctrl+B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
實例
more test.txt
less
可前后移動地逐屏查看文章內容, 在查看前不會加載整個文件
參數
-m # 顯示類似于more命令的百分比
-N # 顯示行號
/ # 字符串: 向下搜索"字符串"的功能
? # 字符串: 向上搜索"字符串"的功能
n # 重復前一個搜索 (于 / 或 ? 有關)
N # 反向重復前一個搜索(與 / 或 ? 有關)
b # 向后翻一頁
d # 向后翻半頁
操作
空白鍵 # 向下翻動一頁;
[pagedown] # 向下翻動一頁;
[pageup] # 向上翻動一頁;
/字串 # 向下搜尋『字串』的功能;n:向下查找;N:向上查找;
?字串 # 向上搜尋『字串』的功能;n:向上查找;N:向下查找;
q # 離開 less 這個程序
head
顯示檔案開頭, 默認開頭10行
格式: hand [參數] ... [文件] ...
參數
-v # 顯示文件名
-c number # 顯示前number子字符, 若number為負數, 則顯示除最后number個字符的所有內容
-number /n (+)number # 顯示前number行內容
-n number # 若number為負數, 只顯示除最后number行數據的所有內容
實例
head -n 1 test.txt # 查看test.txt文件第一行
tail
顯示文件結尾內容
格式:
tail [必要參數][選擇參數][文件]
參數
-v # 顯示詳情的處理信息
-q # 不顯示處理信息
-num/-n (-)num #顯示最后num行內容
-n +num # 從第num行開始顯示后面的數據
-c # 顯示最后c個字符
-f # 循環(huán)讀取
實例
tail -n 1 test.txt # 查看test.txt文件的最后一行
運維
whereis
定位可執(zhí)行文件,源代碼文件.幫助文件在文件系統(tǒng)中為位置
格式:
whereis [bms][BMS 目錄名 -f] 文件名
參數
-b # 定位可執(zhí)行文件
-m # 定位幫助文件
-s # 定位源代碼文件
-u # 搜索默認路徑下除可執(zhí)行文件源文件 幫助文件以外的其他文件
-B # 指定搜索可執(zhí)行文件的路徑
-M # 指定搜索幫助文件的路徑
-S # 指定搜索源代碼文件的路徑
例子
whereis vim
which
可執(zhí)行文件名稱 查看可執(zhí)行文件的位置, 在PATH變量指定的路徑中查看系統(tǒng)命令是否存在及其位置, 查看外部命令的磁盤路徑
例子
[root@localhost]# which java
/usr/bin/java
[root@localhost]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
locate
通過搜尋數據庫快速搜尋檔案
參數
-r # 使用正規(guī)運算式尋找的條件
-b, --basename # 僅匹配路徑名的基本名稱
-c, --count # 只輸出找到的數量
-d, --database DBPATH
# 使用 DBPATH 指定的數據庫,而不是默認數據庫 /var/lib/mlocate/mlocate.db
-e, --existing # 僅打印當前現有文件的條目
-1 # 如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到權限無法看到 的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統(tǒng)中取得檔案的 權限資料。
-0, --null # 在輸出上帶有NUL的單獨條目
-S, --statistics # 不搜索條目,打印有關每個數據庫的統(tǒng)計信息
-q # 安靜模式,不會顯示任何錯誤訊息。
-P, --nofollow, -H # 檢查文件存在時不要遵循尾隨的符號鏈接
-l, --limit, -n LIMIT # 將輸出(或計數)限制為LIMIT個條目
-n # 至多顯示 n個輸出。
-m, --mmap # 被忽略,為了向后兼容
-r, --regexp REGEXP # 使用基本正則表達式
--regex # 使用擴展正則表達式
-q, --quiet # 安靜模式,不會顯示任何錯誤訊息
-s, --stdio # 被忽略,為了向后兼容
-o # 指定資料庫存的名稱。
-h, --help # 顯示幫助
-i, --ignore-case # 忽略大小寫
-V, --version # 顯示版本信息
history
顯示操作歷史和記錄列表
例子
[root@localhost]# history
1 ifconfig
2 clear
3 ......
........
ps
查看系統(tǒng)中素有的進程
參數
-a # 查看所有進程
-u # 顯示所有用戶的所有進程
-x # 顯示沒有終端的進程
例子
ps -aux # 查看系統(tǒng)所有的進程
ps -aux | grep nginx # 查看nginx相關的進程
ps -ef | grep xxxx # 查看xxx進程父子進程的關系
作用
如果想查看進程的CPU占用率和內存占用率,可以使用aux;
如果想查看進程的父進程ID可以使用ef;
解釋
[root@localhost ~]# ps -ef | grep nginx
root 8002 1 0 9月03 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
USER:該進程是由哪個用戶產生的
PID:進程的ID號
%CPU:該進程占用CPU資源的百分比,占用越高,進程越耗費資源;
%MEM:該進程占用物理內存的百分比,占用越高,進程越耗費資源;
VSZ:該進程占用虛擬內存的大小,單位KB;
RSS:該進程占用實際物理內存的大小,單位KB;
TTY:該進程是在哪個終端中運行的。其中tty1-tty7代表本地控制臺終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0-255代表虛擬終端。
STAT:進程狀態(tài)。常見的狀態(tài)有:R:運行、S:睡眠、T:停止狀態(tài)、s:包含子進程、+:位于后臺
START:該進程的啟動時間
TIME:該進程占用CPU的運算時間,注意不是系統(tǒng)時間
COMMAND:產生此進程的命令名
ps -ef
UID:用戶ID
PID:進程ID
PPID:父進程ID
C:CPU用于計算執(zhí)行優(yōu)先級的因子。數值越大,表明進程是CPU密集型運算,執(zhí)行優(yōu)先級會降低;數值越小,表明進程是I/O密集型運算,執(zhí)行優(yōu)先級會提高
STIME:進程啟動的時間
TTY:完整的終端名稱
TIME:CPU時間
CMD:啟動進程所用的命令和參數
top
查看系統(tǒng)基本狀態(tài)
參數
-d # 秒數:指定top命令每隔幾秒更新。默認是3秒在top命令的交互模式當中可以執(zhí)行的命令:
-i # 使top不顯示任何閑置或者僵死進程。
-p # 通過指定監(jiān)控進程ID來僅僅監(jiān)控某個進程的狀態(tài)。
-s # 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
操作選項
P # 以CPU使用率排序,默認就是此項
M # 以內存的使用率排序
N # 以PID排序
q # 退出top
解釋

第一行信息為任務隊列信息
| 內容 | 說明 |
|---|---|
| 20:38:42 | 系統(tǒng)當前時間 |
| up 7:11 | 系統(tǒng)的運行時間 |
| 1 users | 當前登錄了一個用戶 |
| load average: 0.00, 0.00, 0.00 | 系統(tǒng)在之前1分鐘,5分鐘,15分鐘的平均負載。一般認為小于1時,負載較小。如果大于1,系統(tǒng)已經超出負荷。 |
第二行為進程信息
| Tasks: 253 total | 系統(tǒng)中的進程總數 |
|---|---|
| 1 running | 正在運行的進程數 |
| 252 sleeping | 睡眠的進程 |
| 0 stopped | 正在停止的進程 |
| 0 zombie | 僵尸進程。如果不是0,需要手工檢 查僵尸進程 |
第三行為CPU信息
| Cpu(s): 2.0%us | 用戶模式占用的CPU百分比 |
|---|---|
| 0.3%sy | 系統(tǒng)模式占用的CPU百分比 |
| 0.0%ni | 改變過優(yōu)先級的用戶進程占用的CPU百分比 |
| 97.7%id | 空閑CPU的CPU百分比 |
| 0.0%wa | 等待輸入/輸出的進程的占用CPU百分比 |
| 0.0%hi | 硬中斷請求服務占用的CPU百分比 |
| 0.1%si | 軟中斷請求服務占用的CPU百分比 |
| 0.0%st | st(Steal time)虛擬時間百分比。就是當有虛擬機時,虛擬CPU等待實際CPU的時間百分比。 |
第四行為物理內存信息
| Mem: 798.1 total | 物理內存的總量,單位MiB |
|---|---|
| 543.7M used | 已經使用的物理內存數量 |
| 56.6M free | 空閑的物理內存數量 |
| 199.7M buffers | 作為緩沖的內存數量 |
第五行為交換分區(qū)(swap)信息
| Swap: 1024.0M total | 交換分區(qū)(虛擬內存)的總大小 |
|---|---|
| 503.8M used | 已經使用的交互分區(qū)的大小 |
| 520.2M free | 空閑交換分區(qū)的大小 |
| 117.9M cached | 作為緩存的交互分區(qū)的大小 |
pstree
顯示進程樹
格式
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
參數
-p # 顯示進程PID
-u # 顯示進程的所有所屬用戶
例子
pstree -u
ps -p
kill
殺死進程 | 終止進程
強迫進程停止執(zhí)行
kill -9 pid[進程號]
例子
kill -9 xxxx # 根據進程ip
kill firefox # 根據進程名
netstat
查看該進程網絡信息&查看端口號占用情況
參數
-an # 按一定順序排列輸出
-p # 表示顯示那個進程在調用
-nltp # 查看tcp協(xié)議進程端口號
例子
netstat –anp|grep 端口號
# (功能描述:此命令用來顯示整個系統(tǒng)目前的網絡情況。例如目前的連接、數據包傳遞數據、或是路由表內容)
netstat -nlp | grep 端口號
# (功能描述:查看網絡端口號占用情況)
netstat -anp | grep 1024
netstat -napo |grep "php-fpm" | wc -l # 查看當前fastcgi進程個數
lsof
lsof -i tcp:80
du
命令用于顯示目錄或文件的大小
參數
-h # 以人類可讀的方式顯示
-a # 顯示目錄占用的磁盤空間大小,還要顯示其下目錄和文件占用磁盤空間的大小
-s # 顯示目錄占用的磁盤空間大小,不要顯示其下子目錄和文件占用的磁盤空間大小
-c # 顯示幾個目錄或文件占用的磁盤空間大小,還要統(tǒng)計它們的總和
--apparent-size # 顯示目錄或文件自身的大小
-l # 統(tǒng)計硬鏈接占用磁盤空間的大小
-L # 統(tǒng)計符號鏈接所指向的文件占用的磁盤空間大小
例子
du -sh # 查看當前目錄總共占的容量。而不單獨列出各子項占用的容量
du -lh --max-depth=1 # 查看當前目錄下一級子文件和子目錄占用的磁盤容量
du -sh * | sort -n # 統(tǒng)計當前文件夾(目錄)大小,并按文件大小排序
du -sk filename # 查看指定文件大小
tree
查看文件目錄
參數
-a # 顯示所有文件和目錄。
-A # 使用ASNI繪圖字符顯示樹狀圖而非以ASCII字符組合。
-C # 在文件和目錄清單加上色彩,便于區(qū)分各種類型。
-d # 顯示目錄名稱而非內容。
-D # 列出文件或目錄的更改時間。
-f # 在每個文件或目錄之前,顯示完整的相對路徑名稱。
-F # 在執(zhí)行文件,目錄,Socket,符號連接,管道名稱名稱,各自加上"*","/","=","@","|"號。
-g # 列出文件或目錄的所屬群組名稱,沒有對應的名稱時,則顯示群組識別碼。
-i # 不以階梯狀列出文件或目錄名稱。
-L # level 限制目錄顯示層級。
-l # 如遇到性質為符號連接的目錄,直接列出該連接所指向的原始目錄。
-n # 不在文件和目錄清單加上色彩。
-N # 直接列出文件和目錄名稱,包括控制字符。
-p # 列出權限標示。
-P # <范本樣式> 只顯示符合范本樣式的文件或目錄名稱。
-q # 用"?"號取代控制字符,列出文件和目錄名稱。
-s # 列出文件或目錄大小。
-t # 用文件和目錄的更改時間排序。
-u # 列出文件或目錄的擁有者名稱,沒有對應的名稱時,則顯示用戶識別碼。
-x # 將范圍局限在現行的文件系統(tǒng)中,若指定目錄下的某些子目錄,其存放于另一個文件系統(tǒng)上,則將該子目錄予以排除在尋找范圍外
例子
tree # 以樹狀圖列出當前目錄結構 (如果文件目錄嵌套過多的話不要使用,不方便查看)
tree -C # 顏色顯示
tree -f # 顯示文件全路徑
tree -L 2 # 只顯示兩層
tree -P *.html # 只顯示HTML文件
tree -F # 顯示目錄后面的\;顯示可執(zhí)行文件*;功能類似ls -F
find
在文件樹中查找文件, 并作出響應的處理
格式:
find [path][option][action]
參數
選項與參數:
1. 與時間有關的選項: 共有 -atime, -ctime 與 -mtime 和 -atime, -ctime與-mtime 以-mtime說明
-mtime n: n為數字,意義為在n天之前的[一天內]被改動過的文件檔案
+n: 列出n天前(不含n天本身) 被改動過的內容的檔案名
-n: 列出在n天之內(含n天本身)被改動過內容的檔案名
-never file: file為一個存在的檔案, 列出比file還要新的檔案名
2. 與使用者或組名有關的參數:
-uid n: n為數字, 這個數字使用的賬號 ID,亦即 UID
-gid n: n為數字, 這個數字是組名 亦即 GID
-user name: name為使用賬號名稱! eg: admin
-group name: name為組名: eg: users
-nouser: 尋找檔案的擁有者不存在 /etc/passwd
-nogroup: 勛在檔案的擁有者不存在與 /etc/group 的檔案
3. 與檔案權限及名稱有關的參數:
-name filename: 搜尋文件名 filename的檔案
-size [+|-]SIZE: 搜尋比SIZE還要大[+]或小[-]的檔案, 這個SIZE的規(guī)則有:
c: 代表byte
k: 代表 1024bytes, eg: -size +50k #查找大于50kb
-type TYPE: 搜尋檔案的類型為TYPE的, 類型主要有:
一般正規(guī)檔案(f)
裝置檔案(b, c)
目錄(d)
連結構 (l)
socket (s)
FIFO (p)
-perm mode: 搜尋檔案權限[剛好等于] mode的檔案, 這個mode為類似chomd的屬性, eg: -rwsr-xr-x 的屬性為4755
-perm -mode: 搜尋檔案權限[必須要囊括 mode的權限]的檔案,
eg:
我們要搜尋 -rwxr--r-- 即:0744的檔案 使用-perm -0744, 當一個檔案的權限為 -rwsr-xr-x,即: 4755時, 也會被列出來, 因為-rwsr-xr-x的屬性已經囊括了-rwxr--r--的屬性了
-perm +mode: 搜尋檔案權限[包含一mode的權限]的檔案
eg: 搜尋-rwxr-xr-x 即 -prem +755時, 但一個文件屬性為 -rw--------也會被列出來, 因為-rw---的屬性存在
4.額外可進行的動作
-exec command: command為其他指令,-exec 后面可在接額外的指令來處理搜尋到的結果
-print: 將結果打印到屏幕上, 這個動作是預動作
eg:
find / -prem +7000 -exec ls -l {} \:額外指令以exec開頭, 以\:結尾{}替代前面找到的內容
| xargs
-i 默認的前面輸出用{}代替
eg: find -name'*.log' | xargs -i mv {} test
常用例子
按照文件名:
find /home/ -name xxx.txt # 在home目錄下查找文件名為xxx.txt的文件
按照擁有者:
find /opt/ -user zhaoming # 在opt目錄下, 查找用戶名稱為zhaoming的文件
按照文件大小
find /home -size +204800 # 在home目錄下查找文件大于200M的文件 (+n 大于 | -n 小于 | n 等于)
我最為常用的:
find /www/wwwroot/xxxx/ -name '*.*' | xargs grep "abcd"
# 在/www/wwwroot/xxxx/ 目錄下查找 文件包含 "abcd"的文件
日期
date
- 1.顯示當前時間
[root@localhost ~]# date
2020年 10月 12日 星期一 12:56:14 CST # 或者是英文的
[root@localhost ~]# date +%Y
2020 # 顯示當前年份
[root@localhost ~]# date +%m
10 # 顯示當前月份
[root@localhost ~]# date +%Y-%m-%d
2020-10-12 # 顯示當前年月日的各種格式
[root@localhost ~]# date +%Y/%m/%d
2020/10/12
[root@wh2_119_96_222_116 ~]# date "+%Y-%m-%d %H:%M:%S"
2020-10-12 13:23:02 # 顯示當前的顯示年月日時分秒
- 2.顯示非當前時間
[root@localhost ~]# date -d yesterday +%Y-%m-%d
2020-10-11 # 顯示昨天當下時間 并格式化 或者使用下面的命令。
[root@localhost ~]# date -d '1 days ago' +%Y-%m-%d
[root@localhost ~]# date -d next-day +%Y-%m-%d
2020-10-13 # 顯示明天的當下時間并格式化
[root@localhost ~]# date -d 'next monday' +%Y-%m-%d
2020-10-19 # 顯示下星期一的日期
- 3.設置日期
date -s "xxxx-xx-xx xx:xx:xx"
格式
date -s 字符串時間
在設置時間后我們可以將其寫入到BIOS,避免重啟失效
hwclock -w # 強制把系統(tǒng)時間寫入到CMOS
在計算機領域,CMOS常指保存計算機基本啟動信息(如日期、時間、啟動設置等)的芯片。有時人們會把CMOS和BIOS混稱,其實CMOS是主板上的一塊可讀寫的并行或串行FLASH芯片,是用來保存BIOS的硬件配置和用戶對某些參數的設定。
cal
- 1.顯示本月日歷
[root@localhost ~]# cal
十月 2020
日 一 二 三 四 五 六
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
- 2.顯示某一年的日歷
[root@localhost ~]# cal 2019
2019
一月 二月 三月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
........
- 3.顯示系統(tǒng)前一個月,當前月,下個月的日歷
[root@localhost ~]# cal -3
九月 2020 十月 2020 十一月 2020
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30
打包壓縮
- 1.
gzip命令用來壓縮文件
-a:使用ASCII文字模式;
-d:解開壓縮文件;
-f:強行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否為符號連接;
-h:在線幫助;
-l:列出壓縮文件的相關信息;
-L:顯示版本與版權信息;
-n:壓縮文件時,不保存原來的文件名稱及時間戳記;
-N:壓縮文件時,保存原來的文件名稱及時間戳記;
-q:不顯示警告信息;
-r:遞歸處理,將指定目錄下的所有文件及子目錄一并處理;
-S或<壓縮字尾字符串>或----suffix<壓縮字尾字符串>:更改壓縮字尾字符串;
-t:測試壓縮文件是否正確無誤;
-v:顯示指令執(zhí)行過程;
-V:顯示版本信息
-<壓縮效率>:壓縮效率是一個介于1~9的數值,預設值為“6”,指定愈大的數值,壓縮效率就會愈高;
--best:此參數的效果和指定“-9”參數相同;
--fast:此參數的效果和指定“-1”參數相同。
實例
gzip -rv test # 把test文件夾下的所有都變成*.gz
- 2.
gunzip命令,gunzip是個使用廣泛的解壓縮程序.
以上兩個命令: 只能壓縮文件不能壓縮目錄, 并且不保留原文件.
- 3.zip/unzip
zip + 參數 + xxxx.zip + 將要壓縮的文件或者目錄
# -r 壓縮目錄
- 4.
tar[朱選項+輔選項]文件或者多個目錄, 多個目錄或檔案打包,壓縮成一個大檔案
主選項:
-c 建立打包檔案, 可匹配 -v來查看過程中被打包的文檔名[filename]
-t 查看打包檔案的內容含有那些檔名
輔選項:
-j 透過bzip2的支持進行壓縮/解壓縮, 此時檔名最好為*.tar.gz
-z 透過gzip的支持進行壓縮/解壓: 此時檔名最好為*.tar.gz
-v 在壓縮過程中, 將正在處理的文件名顯示出來
-f filename -f后面要立刻處理的檔名
-C 目錄 這個選項在解壓壓縮, 若要在特定目錄解壓縮, 可以使用這個選項
--exclude FILE: 在壓縮打包過程中忽略某文件 eg: tar --exclude /home/zenghao -zcvf myfile.tar.gz /home/*/etc
-p 保留備份數據的原本權限與屬性, 常用于備份(-c) 重要壓縮的檔案或目錄名稱
-P 保留絕對路徑, 即允許備份數據中含有根目錄存在之意
壓縮: tar -jcvf filename.tar.bz2 要被壓縮的檔案或者目錄名稱
查詢: tar -jtvf filename.tar.bz2
解壓縮: tar -jxvf filename.tar.bz2 -C 欲解壓縮的目錄
實例
tar -xvf test.tar /home/zhaoming/www # 解壓到 www下
tar -cvf test.tar test # 將test文件夾壓縮為 test.tar
tar -zcvf test.tar.gz test.txt # 將test.txt 壓縮
tar -zxvf test.tar.gz /home/zhaoming/www # 解壓
tar -jcvf test.tar.bz2 test.txt # 壓縮
tar -jxvf test.tar.bz2 /home/zhaoming/ww 解壓
yum
- 1.概述
在Linux上使用源碼安裝的方式安裝有時非常的麻煩, 使用yum可以簡化安裝過程
- 2.基本語法
yum [options] [command] [package ...]
選項:
-y #對所有提問都回答“yes”
參數:
install # 安裝rpm軟件包
update # 更新rpm軟件包
check-update # 檢查是否有可用的更新軟件包
remove # 刪除指定的rpm軟件包
list # 顯示軟件包信息
clean # 清理yum過期緩存
deplist # 顯示yum軟件包的所有依賴關系
實例
yum install -y <package_name> # 安裝指定軟件并確認安裝
yum remove -y <package_name> # 刪除指定軟件并確認刪除
yum list # 列出所有可安裝的軟件清單命令
yum deplist httpd # 列出一個包所有依賴的包
yum check-update # 列出所有可更新的軟件清單命令
yum update # 更新所有軟件命令
yum update <package_name> # 僅更新指定的軟件命令
yum search <keyword> # 查找軟件包 命令
yum clean # 清除緩存目錄下的軟件包及舊的headers
換源
國內源有很多,常見的有阿里源,網易源,清華源等
但是網易(163)yum源是國內最好的yum源之一 ,無論是速度還是軟件版本,都非常的不錯。
將yum源設置為163 yum,可以提升軟件包安裝和更新的速度,同時避免一些常見軟件版本無法找到
- 1.將默認yum文件備份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 2.下載對應版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前請做好相應備份)
wget http://mirrors.163.com/.help/CentOS8-Base-163.repo
mv CentOS8-Base-163.repo CentOS-Base.repo
- 3.生成緩存
yum clean all
yum makecache
- 4.測試
yum update -y # 更新yum
rpm
- 1.概述
RPM(RedHat Package Manager),Rethat軟件包管理工具,類似windows里面的setup.exe是Linux這系列操作系統(tǒng)里面的打包安裝工具,它雖然是RedHat的標志,但理念是通用的。
格式:
Apache-1.3.23-11.i386.rpm
- "apache" 軟件名稱
- "1.3.23-11" 軟件的版本號,主版本和此版本
- "i386" 是軟件所運行的硬件平臺
- "rpm" 文件擴展名,代表RPM包
- 2.查詢命令
rpm -qa # 查詢所安裝的所有rpm軟件包
rpm –qa | grep rpm # 由于軟件包比較多,一般都會采取過濾
- 3.安裝命令
rpm -ivh RPM包全名
參數介紹:
-i = install # 安裝
-v = verbose # 顯示詳細信息
-h = hash # 進度條
--nodeps # 不檢測依賴進度
- 4.卸載命令
rpm -e RPM軟件包 # 一般的常規(guī)卸載
rpm -e --nodeps RPM軟件包 # 如果該RPM包的安裝依賴其他包,即使其它包沒安裝,也強制卸載。
ln軟連接
基本用法
Linux ln命令是一個非常重要命令,它的功能是為某一個文件在另外一個位置建立一個同步的鏈接。
當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然后在 其它的目錄下用ln命令鏈接(link)它就可以,不必重復的占用磁盤空間。
Linux文件系統(tǒng)中,有所謂的鏈接(link),我們可以將其視為檔案的別名,而鏈接又可分為兩種 : 硬鏈接(hard link)與軟鏈接(symbolic link),硬鏈接的意思是一個檔案可以有多個名稱,而軟鏈接的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬鏈接是存在同一個文件系統(tǒng)中,而軟鏈接卻可以跨越不同的文件系統(tǒng)。
不論是硬鏈接或軟鏈接都不會將原本的檔案復制一份,只會占用非常少量的磁碟空間。
軟鏈接,以路徑的形式存在。類似于Windows操作系統(tǒng)中的快捷方式
軟鏈接可以 跨文件系統(tǒng) ,硬鏈接不可以
軟鏈接可以對一個不存在的文件名進行鏈接
軟鏈接可以對目錄進行鏈接
硬鏈接,以文件副本的形式存在。但不占用實際空間。
不允許給目錄創(chuàng)建硬鏈接
硬鏈接只有在同一個文件系統(tǒng)中才能創(chuàng)建
格式:
ln [options] [source/dir] [dest/dir]
參數
-s # 軟連接(符號鏈接)
-b # 刪除,覆蓋以前建立的鏈接
-d # 允許超級用戶制作目錄的硬鏈接
-f # 強制執(zhí)行
-i # 交互模式, 文件存在則提示用戶是否覆蓋
-n # 把符號鏈接視為一般目錄
-v # 顯示詳細的處理過程
實例:
ln -s /usr/local/nodejs/bin/npm /usr/local/bin/
ln -s /usr/local/nodejs/bin/node /usr/local/bin/
上面的示例是我們通過軟件的方式使用node,為/usr/local/nodejs/bin/npm和node目錄創(chuàng)建軟件鏈接,如果這兩個目錄丟失了,軟連接將會失效。
注意
cd不加參數進入的是軟連接的地址
cd [軟連接]
cd加參數-P進入的則是實際的物理地址
cd -P [軟連接]
用戶管理
- 1.添加用戶
格式
useradd [選項] [userName]
例子
useradd usera # 添加用戶usera
useradd -g groupa usera # 添加用戶并指定用戶組
useradd -r usera # 添加系統(tǒng)用戶
- 2.刪除用戶
格式
userdel [選項] [userName]
例子
userdel -r usera # 刪除userbdc用戶以及與此用戶相關的所有文件
-r 刪除用戶的同時,刪除與用戶相關的所有文件
- 3.判斷用戶是否存在
格式
id [選項] [userName]
例子
id usera # 判斷用戶usera 是否存在
- 4.修改用戶
格式
usermod [選項] [userName]
例子
usermod -g root usera # 修改usera用戶為root用戶組
- 5.切換用戶
格式
su [選項] [userName]
例子
su usera
切換用戶,只能獲得用戶的執(zhí)行權限,不能獲得環(huán)境變量
su - usera
切換到用戶并獲得該用戶的環(huán)境變量及執(zhí)行權限
- 6.查看登錄用戶信息
cat /etc/passwd # 查看創(chuàng)建了哪些組
查看自身用戶名稱
whoami
顯示登陸用戶的用戶名
who am i
顯示有哪些用戶登錄到了本臺機器上
who
- 7.sudo
修改配置文件/etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
userbdc ALL=(ALL) ALL或 NOPASSWD:ALL(不需要輸入密碼)
關機重啟
關機
格式
shutdown [選項] [時間]
shutdown 命令其實也是可以 安全 關閉 或者 重新啟動系統(tǒng)
參數
-r # 重新啟動
提示
如果不指定選項, 默認表示1分鐘之后關閉電腦
例子
shutdown -r now # 重新啟動操作系統(tǒng),其中 now 表示現在
shutdown now # 立刻關機,其中 now 表示現在
shutdown 20:25 # 系統(tǒng)在今天的 20:25 會關機
shutdown +10 # 系統(tǒng)再過十分鐘后自動關機
shutdown -c # 取消之前指定的關機計劃
重啟
若系統(tǒng)的 runlevel 為 0 或 6 ,則重新開機,否則以 shutdown 指令(加上 -r 參數)來取代
格式
reboot [-n] [-w] [-d] [-f] [-i]
參數
-n # 在重開機前不做將記憶體資料寫回硬盤的動作
-w # 并不會真的重開機,只是把記錄寫到 /var/log/wtmp 檔案里
-d # 不把記錄寫到 /var/log/wtmp 檔案里(-n 這個參數包含了 -d)
-f # 強迫重開機,不呼叫 shutdown 這個指令
-i # 在重開機之前先把所有網絡相關的裝置先停止
例子
reboot # 立即重啟