中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

專業(yè)做網(wǎng)站設(shè)計哪家好bt種子bt天堂

專業(yè)做網(wǎng)站設(shè)計哪家好,bt種子bt天堂,做阿里巴巴1688網(wǎng)站程序,建筑工程信息查詢Linux 基礎(chǔ) 操作系統(tǒng) 操作系統(tǒng) Operating System 簡稱 OS ,是軟件的一部分,它是硬件基礎(chǔ)上的第一層軟件,是硬件和其它軟件溝通的橋梁。 操作系統(tǒng)會控制其他程序運行,管理系統(tǒng)資源,提供最基本的計算功能,…

Linux 基礎(chǔ)

操作系統(tǒng)

操作系統(tǒng)?Operating System?簡稱?OS?,是軟件的一部分,它是硬件基礎(chǔ)上的第一層軟件,是硬件和其它軟件溝通的橋梁。

操作系統(tǒng)會控制其他程序運行,管理系統(tǒng)資源,提供最基本的計算功能,如管理及配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序等,同時還提供一些基本的服務程序。

嵌入式學習提升進階,十五分鐘講清完整路線2141 播放 · 1 贊同視頻?編輯?

什么是 Linux

Linux 系統(tǒng)內(nèi)核與 Linux 發(fā)行套件的區(qū)別

  • Linux?系統(tǒng)內(nèi)核指的是由?Linus Torvalds?負責維護,提供硬件抽象層、硬盤及文件系統(tǒng)控制及多任務功能的系統(tǒng)核心程序。
  • Linux?發(fā)行套件系統(tǒng)是我們常說的?Linux?操作系統(tǒng),也即是由?Linux?內(nèi)核與各種常用軟件的集合產(chǎn)品。

總結(jié):真正的?Linux?指的是系統(tǒng)內(nèi)核,而我們常說的?Linux?指的是“發(fā)行版完整的包含一些基礎(chǔ)軟件的操作系統(tǒng)”。

Linux 對比 Windows

  1. 穩(wěn)定且有效率;
  2. 免費(或少許費用);
  3. 漏洞少且快速修補;
  4. 多任務多用戶;
  5. 更加安全的用戶與文件權(quán)限策略;
  6. 適合小內(nèi)核程序的嵌入系統(tǒng);
  7. 相對不耗資源。

Linux 系統(tǒng)種類

  • 紅帽企業(yè)版?Linux?:RHEL?是全世界內(nèi)使用最廣泛的?Linux?系統(tǒng)。它具有極強的性能與穩(wěn)定性,是眾多生成環(huán)境中使用的(收費的)系統(tǒng)。
  • Fedora?:由紅帽公司發(fā)布的桌面版系統(tǒng)套件,用戶可以免費體驗到最新的技術(shù)或工具,這些技術(shù)或工具在成熟后會被加入到?RHEL?系統(tǒng)中,因此?Fedora?也成為?RHEL?系統(tǒng)的試驗版本。
  • CentOS?:通過把?RHEL?系統(tǒng)重新編譯并發(fā)布給用戶免費使用的?Linux?系統(tǒng),具有廣泛的使用人群。
  • Deepin?:中國發(fā)行,對優(yōu)秀的開源成品進行集成和配置。
  • Debian?:穩(wěn)定性、安全性強,提供了免費的基礎(chǔ)支持,在國外擁有很高的認可度和使用率。
  • Ubuntu?:是一款派生自?Debian?的操作系統(tǒng),對新款硬件具有極強的兼容能力。Ubuntu?與?Fedora?都是極其出色的?Linux?桌面系統(tǒng),而且?Ubuntu?也可用于服務器領(lǐng)域。
【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【 865977150】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦!!!前100名進群領(lǐng)取,額外贈送一份價值 699的內(nèi)核資料包(含視頻教程、電子書、實戰(zhàn)項目及代碼)

學習直通車:

Linux內(nèi)核源碼/內(nèi)存調(diào)優(yōu)/文件系統(tǒng)/進程管理/設(shè)備驅(qū)動/網(wǎng)絡(luò)協(xié)議棧-學習視頻教程-騰訊課堂?ke.qq.com/course/4032547?flowToken=1040236?ke.qq.com/course/4032547?flowToken=1040236?ke.qq.com/course/4032547?flowToken=1040236

內(nèi)核資料直通車:

Linux內(nèi)核源碼技術(shù)學習路線+視頻教程代碼資料?docs.qq.com/doc/DTkZRWXRFcWx1bWVx?docs.qq.com/doc/DTkZRWXRFcWx1bWVx?docs.qq.com/doc/DTkZRWXRFcWx1bWVx?編輯

終端連接阿里云服務器

通過執(zhí)行?ssh root@121.42.11.34?命令,然后輸入服務器連接密碼就可以順利登陸遠程服務器。從現(xiàn)在開始我們就可以在本地電腦操作遠程服務器。

  1. 這個黑色的面板就是終端也就是?Shell?(命令行環(huán)境)。
  2. ssh root@xxx?這是一條命令,必須要在?Shell?中才能執(zhí)行。

Shell

Shell?這個單詞的原意是“外殼”,跟?kernel(內(nèi)核)相對應,比喻內(nèi)核外面的一層,即用戶跟內(nèi)核交互的對話界面。

  • Shell?是一個程序,提供一個與用戶對話的環(huán)境。這個環(huán)境只有一個命令提示符,讓用戶從鍵盤輸入命令,所以又稱為命令行環(huán)境(?command line interface?,簡寫為?CLI?)。Shell?接收到用戶輸入的命令,將命令送入操作系統(tǒng)執(zhí)行,并將結(jié)果返回給用戶。
  • Shell?是一個命令解釋器,解釋用戶輸入的命令。它支持變量、條件判斷、循環(huán)操作等語法,所以用戶可以用?Shell?命令寫出各種小程序,又稱為?Shell?腳本。這些腳本都通過Shell?的解釋執(zhí)行,而不通過編譯。
  • Shell?是一個工具箱,提供了各種小工具,供用戶方便地使用操作系統(tǒng)的功能。

Shell 的種類

Shell?有很多種,只要能給用戶提供命令行環(huán)境的程序,都可以看作是?Shell?。

歷史上,主要的?Shell?有下面這些:

  • Bourne Shell(sh)
  • Bourne Again shell(bash)
  • C Shell(csh)
  • TENEX C Shell(tcsh)
  • Korn shell(ksh)
  • Z Shell(zsh)
  • Friendly Interactive Shell(fish)

其中?Bash?是目前最常用的?Shell?。MacOS?中的默認?Shell?就是?Bash?。

通過執(zhí)行?echo $SHELL?命令可以查看到當前正在使用的?Shell?。還可以通過?cat /etc/shells?查看當前系統(tǒng)安裝的所有?Shell?種類。

命令

命令行提示符

進入命令行環(huán)境以后,用戶會看到?Shell?的提示符。提示符往往是一串前綴,最后以一個美元符號?$?結(jié)尾,用戶可以在這個符號后面輸入各種命令。

執(zhí)行一個簡單的命令?pwd?:

[root@iZm5e8dsxce9ufaic7hi3uZ ~]# pwd
/root

命令解析:

  • root:表示用戶名;
  • iZm5e8dsxce9ufaic7hi3uZ:表示主機名;
  • ~:表示目前所在目錄為家目錄,其中?root?用戶的家目錄是?/root?普通用戶的家目錄在?/home?下;
  • #:指示你所具有的權(quán)限(?root?用戶為?#?,普通用戶為?$?)。
  • 執(zhí)行?whoami?命令可以查看當前用戶名;
  • 執(zhí)行?hostname?命令可以查看當前主機名;

關(guān)于如何創(chuàng)建、切換、刪除用戶,在后面的用戶與權(quán)限會具體講解,這里先使用?root?用戶進行演示。

[備注]?root?是超級用戶,具備操作系統(tǒng)的一切權(quán)限。

命令格式

command parameters(命令 參數(shù))

長短參數(shù)

單個參數(shù):ls -a(a 是英文 all 的縮寫,表示“全部”)
多個參數(shù):ls -al(全部文件 + 列表形式展示)
單個長參數(shù):ls --all
多個長參數(shù):ls --reverse --all
長短混合參數(shù):ls --all -l

參數(shù)值

短參數(shù):command -p 10(例如:ssh root@121.42.11.34 -p 22)
長參數(shù):command --paramters=10(例如:ssh root@121.42.11.34 --port=22)

快捷方式

在開始學習?Linux?命令之前,有這么一些快捷方式,是必須要提前掌握的,它將貫穿整個?Linux?使用生涯。

  • 通過上下方向鍵 ↑ ↓ 來調(diào)取過往執(zhí)行過的?Linux?命令;
  • 命令或參數(shù)僅需輸入前幾位就可以用?Tab?鍵補全;
  • Ctrl + R?:用于查找使用過的命令(history?命令用于列出之前使用過的所有命令,然后輸入?!?命令加上編號(?!2?)就可以直接執(zhí)行該歷史命令);
  • Ctrl + L:清除屏幕并將當前行移到頁面頂部;
  • Ctrl + C:中止當前正在執(zhí)行的命令;
  • Ctrl + U:從光標位置剪切到行首;
  • Ctrl + K:從光標位置剪切到行尾;
  • Ctrl + W:剪切光標左側(cè)的一個單詞;
  • Ctrl + Y:粘貼?Ctrl + U | K | Y?剪切的命令;
  • Ctrl + A:光標跳到命令行的開頭;
  • Ctrl + E:光標跳到命令行的結(jié)尾;
  • Ctrl + D:關(guān)閉?Shell?會話;

文件和目錄

文件的組織

查看路徑

pwd

顯示當前目錄的路徑

which

查看命令的可執(zhí)行文件所在路徑,?Linux?下,每一條命令其實都對應一個可執(zhí)行程序,在終端中輸入命令,按回車的時候,就是執(zhí)行了對應的那個程序,?which?命令本身對應的程序也存在于?Linux?中。

總的來說一個命令就是一個可執(zhí)行程序。

瀏覽和切換目錄

ls

列出文件和目錄,它是?Linux?最常用的命令之一。

【常用參數(shù)】

  • -a?顯示所有文件和目錄包括隱藏的
  • -l?顯示詳細列表
  • -h?適合人類閱讀的
  • -t?按文件最近一次修改時間排序
  • -i?顯示文件的?inode?(?inode?是文件內(nèi)容的標識)

cd

cd?是英語?change directory?的縮寫,表示切換目錄。

cd / --> 跳轉(zhuǎn)到根目錄
cd ~ --> 跳轉(zhuǎn)到家目錄
cd .. --> 跳轉(zhuǎn)到上級目錄
cd ./home --> 跳轉(zhuǎn)到當前目錄的home目錄下
cd /home/lion --> 跳轉(zhuǎn)到根目錄下的home目錄下的lion目錄
cd --> 不添加任何參數(shù),也是回到家目錄

[注意] 輸入cd /ho?+ 單次?tab?鍵會自動補全路徑 + 兩次?tab?鍵會列出所有可能的目錄列表。

du

列舉目錄大小信息。

【常用參數(shù)】

  • -h?適合人類閱讀的;
  • -a?同時列舉出目錄下文件的大小信息;
  • -s?只顯示總計大小,不顯示具體信息。

瀏覽和創(chuàng)建文件

cat

一次性顯示文件所有內(nèi)容,更適合查看小的文件。

cat cloud-init.log

【常用參數(shù)】

  • -n?顯示行號。

less

分頁顯示文件內(nèi)容,更適合查看大的文件。

less cloud-init.log

【快捷操作】

  • 空格鍵:前進一頁(一個屏幕);
  • b?鍵:后退一頁;
  • 回車鍵:前進一行;
  • y?鍵:后退一行;
  • 上下鍵:回退或前進一行;
  • d?鍵:前進半頁;
  • u?鍵:后退半頁;
  • q?鍵:停止讀取文件,中止?less?命令;
  • =?鍵:顯示當前頁面的內(nèi)容是文件中的第幾行到第幾行以及一些其它關(guān)于本頁內(nèi)容的詳細信息;
  • h?鍵:顯示幫助文檔;
  • /?鍵:進入搜索模式后,按?n?鍵跳到一個符合項目,按?N?鍵跳到上一個符合項目,同時也可以輸入正則表達式匹配。

head

顯示文件的開頭幾行(默認是10行)

head cloud-init.log

【參數(shù)】

  • -n?指定行數(shù)?head cloud-init.log -n 2

tail

顯示文件的結(jié)尾幾行(默認是10行)

tail cloud-init.log

【參數(shù)】

  • -n?指定行數(shù)?tail cloud-init.log -n 2
  • -f?會每過1秒檢查下文件是否有更新內(nèi)容,也可以用?-s?參數(shù)指定間隔時間?tail -f -s 4 xxx.log

touch

創(chuàng)建一個文件

touch new_file

mkdir

創(chuàng)建一個目錄

mkdir new_folder

【常用參數(shù)】

  • -p?遞歸的創(chuàng)建目錄結(jié)構(gòu)?mkdir -p one/two/three

文件的復制和移動

cp

拷貝文件和目錄

cp file file_copy --> file 是目標文件,
file_copy 是拷貝出來的文件cp file one --> 把 file 文件拷貝到 one 目錄下,
并且文件名依然為 filecp file one/file_copy --> 把 file 文件拷貝到 one 目錄下,
文件名為file_copycp *.txt folder --> 把當前目錄下所有 txt 文件拷貝到 folder 目錄下

【常用參數(shù)】

  • -r?遞歸的拷貝,常用來拷貝一整個目錄

mv

移動(重命名)文件或目錄,與cp命令用法相似。

mv file one --> 將 file 文件移動到 one 目錄下mv new_folder one --> 將 
new_folder 文件夾移動到one目錄下mv *.txt folder --> 把當前目錄下所有 
txt 文件移動到 folder 目錄下mv file new_file --> file 文件重命名為 new_file

文件的刪除和鏈接

rm

刪除文件和目錄,由于?Linux?下沒有回收站,一旦刪除非常難恢復,因此需要謹慎操作

rm new_file  --> 刪除 new_file 文件rm f1 f2 f3  --> 同時刪除 f1 f2 f3 3個文件

【常用參數(shù)】

  • -i?向用戶確認是否刪除;
  • -f?文件強制刪除;
  • -r?遞歸刪除文件夾,著名的刪除操作?rm -rf?。

ln

英文?Link?的縮寫,表示創(chuàng)建鏈接。

學習創(chuàng)建鏈接之前,首先要理解鏈接是什么,我們先來看看?Linux?的文件是如何存儲的:

Linux?文件的存儲方式分為3個部分,文件名、文件內(nèi)容以及權(quán)限,其中文件名的列表是存儲在硬盤的其它地方和文件內(nèi)容是分開存放的,每個文件名通過?inode?標識綁定到文件內(nèi)容。

Linux 下有兩種鏈接類型:硬鏈接和軟鏈接。

硬鏈接

使鏈接的兩個文件共享同樣文件內(nèi)容,就是同樣的?inode?,一旦文件1和文件2之間有了硬鏈接,那么修改任何一個文件,修改的都是同一塊內(nèi)容,它的缺點是,只能創(chuàng)建指向文件的硬鏈接,不能創(chuàng)建指向目錄的(其實也可以,但比較復雜)而軟鏈接都可以,因此軟鏈接使用更加廣泛。

ln file1 file2  --> 創(chuàng)建 file2 為 file1 的硬鏈接

如果我們用?rm file1?來刪除?file1?,對?file2?沒有什么影響,對于硬鏈接來說,刪除任意一方的文件,共同指向的文件內(nèi)容并不會從硬盤上刪除。只有同時刪除了?file1?與file2?后,它們共同指向的文件內(nèi)容才會消失。

軟鏈接

軟鏈接就類似?windows?下快捷方式。

ln -s file1 file2

執(zhí)行?ls -l?命名查看當前目錄下文件的具體信息

total 0-rw-r--r-- 1 root root 0 Jan 14 06:29 file1lrwxrwxrwx 1 
root root 5 Jan 14 06:42 file2 -> file1  # 表示file2 指向 file1

其實?file2?只是?file1?的一個快捷方式,它指向的是?file1?,所以顯示的是?file1?的內(nèi)容,但其實?file2?的?inode?與?file1?并不相同。如果我們刪除了?file2?的話,?file1是不會受影響的,但如果刪除?file1?的話,?file2?就會變成死鏈接,因為指向的文件不見了。

用戶與權(quán)限

用戶

Linux?是一個多用戶的操作系統(tǒng)。在?Linux?中,理論上來說,我們可以創(chuàng)建無數(shù)個用戶,但是這些用戶是被劃分到不同的群組里面的,有一個用戶,名叫?root?,是一個很特殊的用戶,它是超級用戶,擁有最高權(quán)限。

自己創(chuàng)建的用戶是有限權(quán)限的用戶,這樣大大提高了?Linux?系統(tǒng)的安全性,有效防止誤操作或是病毒攻擊,但是我們執(zhí)行的某些命令需要更高權(quán)限時可以使用?sudo?命令。

sudo

以?root?身份運行命令

sudo date  --> 當然查看日期是不需要sudo的這里只是演示,
sudo 完之后一般還需要輸入用戶密碼的

useradd + passwd

  • useradd?添加新用戶
  • passwd?修改用戶密碼

這兩個命令需要?root?用戶權(quán)限

useradd lion --> 添加一個lion用戶,添加完之后在 /home 
路徑下可以查看passwd lion --> 修改lion用戶的密碼

userdel

刪除用戶,需要?root?用戶權(quán)限

userdel lion --> 只會刪除用戶名,不會從/home中刪除對應文件夾userdel 
lion -r --> 會同時刪除/home下的對應文件夾

su

切換用戶,需要?root?用戶權(quán)限

sudo su --> 切換為root用戶(exit 命令或 CTRL + D 快捷鍵都可以使普通用戶切換為 
root 用戶)su lion --> 切換為普通用戶su - --> 切換為root用戶

群組的管理

Linux?中每個用戶都屬于一個特定的群組,如果你不設(shè)置用戶的群組,默認會創(chuàng)建一個和它的用戶名一樣的群組,并且把用戶劃歸到這個群組。

groupadd

創(chuàng)建群組,用法和?useradd?類似。

groupadd friends

groupdel

刪除一個已存在的群組

groupdel foo  --> 刪除foo群組

groups

查看用戶所在群組

groups lion  --> 查看 lion 用戶所在的群組

usermod

用于修改用戶的賬戶。

【常用參數(shù)】

  • -l?對用戶重命名。需要注意的是?/home?中的用戶家目錄的名字不會改變,需要手動修改。
  • -g?修改用戶所在的群組,例如?usermod -g friends lion修改?lion?用戶的群組為?friends?。
  • -G?一次性讓用戶添加多個群組,例如?usermod -G friends,foo,bar lion?。
  • -a-G?會讓你離開原先的群組,如果你不想這樣做的話,就得再添加?-a?參數(shù),意味著append?追加的意思。

chgrp

用于修改文件的群組。

chgrp bar file.txt --> file.txt文件的群組修改為bar

chown

改變文件的所有者,需要?root?身份才能運行。

chown lion file.txt --> 把其它用戶創(chuàng)建的file.txt轉(zhuǎn)讓給lion用戶chown 
lion:bar file.txt --> 把file.txt的用戶改為lion,群組改為bar

【常用參數(shù)】

  • -R?遞歸設(shè)置子目錄和子文件,?chown -R lion:lion /home/frank?把?frank?文件夾的用戶和群組都改為?lion?。

文件權(quán)限管理

chmod

修改訪問權(quán)限。

chmod 740 file.txt

【常用參數(shù)】

  • -R?可以遞歸地修改文件訪問權(quán)限,例如?chmod -R 777 /home/lion

修改權(quán)限的確簡單,但是理解其深層次的意義才是更加重要的。下面我們來系統(tǒng)的學習Linux?的文件權(quán)限。

[root@lion ~]# ls -ldrwxr-xr-x 5 root root 4096 Apr 13  
2020 climblrwxrwxrwx 1 root root    7 Jan 14 06:41 hello2.c -> hello.c-rw-r--r-- 1 
root root  149 Jan 13 06:14 hello.c

其中?drwxr-xr-x?表示文件或目錄的權(quán)限。讓我們一起來解讀它具體代表什么?

  • d?:表示目錄,就是說這是一個目錄,普通文件是?-?,鏈接是?l?。
  • r?:read?表示文件可讀。
  • w?:write?表示文件可寫,一般有寫的權(quán)限,就有刪除的權(quán)限。
  • x?:execute?表示文件可執(zhí)行。
  • -?:表示沒有相應權(quán)限。

權(quán)限的整體是按用戶來劃分的,如下圖所示:

現(xiàn)在再來理解這句權(quán)限?drwxr-xr-x?的意思:

  • 它是一個文件夾;
  • 它的所有者具有:讀、寫、執(zhí)行權(quán)限;
  • 它的群組用戶具有:讀、執(zhí)行的權(quán)限,沒有寫的權(quán)限;
  • 它的其它用戶具有:讀、執(zhí)行的權(quán)限,沒有寫的權(quán)限。

現(xiàn)在理解了權(quán)限,我們使用?chmod?來嘗試修改權(quán)限。chmod?它不需要是?root?用戶才能運行的,只要你是此文件所有者,就可以用?chmod?來修改文件的訪問權(quán)限。

數(shù)字分配權(quán)限

因此要改變權(quán)限,只要做一些簡單的加法就行:

chmod 640 hello.c # 分析6 = 4 + 2 + 0 表示所有者具有 
rw 權(quán)限4 = 4 + 0 + 0 表示群組用戶具有 r 權(quán)限0 = 0 + 0 + 0 表示其它用戶沒有權(quán)限對應文字權(quán)限為:
-rw-r-----

用字母來分配權(quán)限

  • u?:user?的縮寫,用戶的意思,表示所有者。
  • g?:group?的縮寫,群組的意思,表示群組用戶。
  • o?:other?的縮寫,其它的意思,表示其它用戶。
  • a?:all?的縮寫,所有的意思,表示所有用戶。
  • +?:加號,表示添加權(quán)限。
  • -?:減號,表示去除權(quán)限。
  • =?:等于號,表示分配權(quán)限。
chmod u+rx file --> 文件file的所有者增加讀和運行的權(quán)限chmod g+r file --> 
文件file的群組用戶增加讀的權(quán)限chmod o-r file --> 
文件file的其它用戶移除讀的權(quán)限chmod g+r o-r file --> 
文件file的群組用戶增加讀的權(quán)限,其它用戶移除讀的權(quán)限chmod go-r file --> 
文件file的群組和其他用戶移除讀的權(quán)限chmod +x file --> 
文件file的所有用戶增加運行的權(quán)限chmod u=rwx,g=r,o=- file --> 文件file的所有者分配讀寫和執(zhí)行的權(quán)限,
群組其它用戶分配讀的權(quán)限,其他用戶沒有任何權(quán)限

查找文件

locate

搜索包含關(guān)鍵字的所有文件和目錄。后接需要查找的文件名,也可以用正則表達式。

安裝 locate

yum -y install mlocate --> 安裝包updatedb --> 更新數(shù)據(jù)庫復制代碼locate file.txtlocate fil*.txt

[注意]?locate?命令會去文件數(shù)據(jù)庫中查找命令,而不是全磁盤查找,因此剛創(chuàng)建的文件并不會更新到數(shù)據(jù)庫中,所以無法被查找到,可以執(zhí)行?updatedb?命令去更新數(shù)據(jù)庫。

find

用于查找文件,它會去遍歷你的實際硬盤進行查找,而且它允許我們對每個找到的文件進行后續(xù)操作,功能非常強大。

find <何處> <何物> <做什么>
  • 何處:指定在哪個目錄查找,此目錄的所有子目錄也會被查找。
  • 何物:查找什么,可以根據(jù)文件的名字來查找,也可以根據(jù)其大小來查找,還可以根據(jù)其最近訪問時間來查找。
  • 做什么:找到文件后,可以進行后續(xù)處理,如果不指定這個參數(shù),?find?命令只會顯示找到的文件。

根據(jù)文件名查找

find -name "file.txt" --> 當前目錄以及子目錄下通過
名稱查找文件find . -name "syslog" --> 當前目錄以及子目錄
下通過名稱查找文件find / -name "syslog" --> 整個硬
盤下查找syslogfind /var/log -name "syslog" --> 在指定的
目錄/var/log下查找syslog文件find /var/log -name "syslog
*" --> 查找syslog1、syslog2 ... 等文件,通配符表示所有find /va
r/log -name "*syslog*" --> 查找包含syslog的文件 

[注意]?find?命令只會查找完全符合 “何物” 字符串的文件,而?locate?會查找所有包含關(guān)鍵字的文件。

根據(jù)文件大小查找

find /var -size +10M --> /var 目錄下查找文件大小超過 10M 的文件find /var -size -50k --> /var 目錄下查找文件大小小于 50k 的文件find /var -size +1G --> /var 目錄下查找文件大小查過 1G 的文件find /var -size 1M --> /var 目錄下查找文件大小等于 1M 的文件

根據(jù)文件最近訪問時間查找

find -name "*.txt" -atime -7  --> 近 7天內(nèi)訪問過的.txt結(jié)尾的文件

僅查找目錄或文件

find . -name "file" -type f  --> 只查找當前目錄下的file文件find . -name "file" -type d  --> 只查找當前目錄下的file目錄

操作查找結(jié)果

find -name "*.txt" -printf "%p - %u\n" --> 找出所有后綴為txt的文件,并按照 %p - %u\n 格式打印,其中%p=文件名,%u=文件所有者find -name "*.jpg" -delete --> 刪除當前目錄以及子目錄下所有.jpg為后綴的文件,不會有刪除提示,因此要慎用find -name "*.c" -exec chmod 600 {} \; --> 對每個.c結(jié)尾的文件,都進行 -exec 參數(shù)指定的操作,{} 會被查找到的文件替代,\; 是必須的結(jié)尾find -name "*.c" -ok chmod 600 {} \; --> 和上面的功能一直,會多一個確認提示

軟件倉庫

Linux?下軟件是以包的形式存在,一個軟件包其實就是軟件的所有文件的壓縮包,是二進制的形式,包含了安裝軟件的所有指令。Red Hat?家族的軟件包后綴名一般為?.rpm?,Debian?家族的軟件包后綴是?.deb?。

Linux?的包都存在一個倉庫,叫做軟件倉庫,它可以使用?yum?來管理軟件包,?yum?是?CentOS?中默認的包管理工具,適用于?Red Hat?一族。可以理解成?Node.js?的?npm?。

yum 常用命令

  • yum update | yum upgrade?更新軟件包
  • yum search xxx?搜索相應的軟件包
  • yum install xxx?安裝軟件包
  • yum remove xxx?刪除軟件包

切換 CentOS 軟件源

有時候?CentOS?默認的?yum?源不一定是國內(nèi)鏡像,導致?yum?在線安裝及更新速度不是很理想。這時候需要將?yum?源設(shè)置為國內(nèi)鏡像站點。國內(nèi)主要開源的鏡像站點是網(wǎng)易和阿里云。

1、首先備份系統(tǒng)自帶?yum?源配置文件?mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、下載阿里云的?yum?源配置文件到?/etc/yum.repos.d/CentOS7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、生成緩存

yum makecache

閱讀手冊

Linux?命令種類繁雜,我們憑借記憶不可能全部記住,因此學會查用手冊是非常重要的。

man

安裝更新 man

sudo yum install -y man-pages --> 安裝sudo mandb --> 更新

man 手冊種類

  1. 可執(zhí)行程序或?Shell?命令;
  2. 系統(tǒng)調(diào)用(?Linux?內(nèi)核提供的函數(shù));
  3. 庫調(diào)用(程序庫中的函數(shù));
  4. 文件(例如?/etc/passwd?);
  5. 特殊文件(通常在?/dev?下);
  6. 游戲;
  7. 雜項(?man(7)?,groff(7)?);
  8. 系統(tǒng)管理命令(通常只能被?root?用戶使用);
  9. 內(nèi)核子程序。

man + 數(shù)字 + 命令

輸入 man + 數(shù)字 + 命令/函數(shù),可以查到相關(guān)的命令和函數(shù),若不加數(shù)字,?man?默認從數(shù)字較小的手冊中尋找相關(guān)命令和函數(shù)

man 3 rand  --> 表示在手冊的第三部分查找 rand 函數(shù)man ls    --> 查找 ls 用法手冊

man 手冊核心區(qū)域解析:(以?man pwd?為例)

NAME # 命令名稱和簡單描述     pwd -- return working directory nameSYNOPSIS # 使用此命令的所有方法     pwd [-L | -P]DESCRIPTION # 包括所有參數(shù)以及用法     The pwd utility writes the absolute pathname of the current working directory to the standard output.     Some shells may provide a builtin pwd command which is similar or identical to this utility.  Consult the builtin(1) manual page.     The options are as follows:     -L      Display the logical current working directory.     -P      Display the physical current working directory (all symbolic links resolved).     If no options are specified, the -L option is assumed.SEE ALSO # 擴展閱讀相關(guān)命令     builtin(1), cd(1), csh(1), sh(1), getcwd(3)

help

man?命令像新華詞典一樣可以查詢到命令或函數(shù)的詳細信息,但其實我們還有更加快捷的方式去查詢,?command --help?或?command -h?,它沒有?man?命令顯示的那么詳細,但是它更加易于閱讀。

Linux 進階

文本操作

grep

全局搜索一個正則表達式,并且打印到屏幕。簡單來說就是,在文件中查找關(guān)鍵字,并顯示關(guān)鍵字所在行。

基礎(chǔ)語法

grep text file # text代表要搜索的文本,file代表供搜索的文件# 實例[root@lion ~]# grep path /etc/profilepathmunge () {    pathmunge /usr/sbin    pathmunge /usr/local/sbin    pathmunge /usr/local/sbin after    pathmunge /usr/sbin afterunset -f pathmunge

常用參數(shù)

  • -i?忽略大小寫,?grep -i path /etc/profile
  • -n?顯示行號,grep -n path /etc/profile
  • -v?只顯示搜索文本不在的那些行,grep -v path /etc/profile
  • -r?遞歸查找,?grep -r hello /etc?,Linux 中還有一個 rgrep 命令,作用相當于?grep -r

高級用法

grep?可以配合正則表達式使用。

grep -E path /etc/profile --> 完全匹配pathgrep -E ^path /etc/profile --> 匹配path開頭的字符串grep -E [Pp]ath /etc/profile --> 匹配path或Path

sort

對文件的行進行排序。

基礎(chǔ)語法

sort name.txt # 對name.txt文件進行排序

實例用法

為了演示方便,我們首先創(chuàng)建一個文件?name.txt?,放入以下內(nèi)容:

ChristopherShawnTedRockNoahZacharyBella

執(zhí)行?sort name.txt?命令,會對文本內(nèi)容進行排序。

常用參數(shù)

  • -o?將排序后的文件寫入新文件,?sort -o name_sorted.txt name.txt?;
  • -r?倒序排序,?sort -r name.txt?;
  • -R?隨機排序,?sort -R name.txt?;
  • -n?對數(shù)字進行排序,默認是把數(shù)字識別成字符串的,因此 138 會排在 25 前面,如果添加了?-n?數(shù)字排序的話,則 25 會在 138 前面。

wc

word count?的縮寫,用于文件的統(tǒng)計。它可以統(tǒng)計單詞數(shù)目、行數(shù)、字符數(shù),字節(jié)數(shù)等。

基礎(chǔ)語法

wc name.txt # 統(tǒng)計name.txt

實例用法

[root@lion ~]# wc name.txt 13 13 91 name.txt
  • 第一個13,表示行數(shù);
  • 第二個13,表示單詞數(shù);
  • 第三個91,表示字節(jié)數(shù)。

常用參數(shù)

  • -l?只統(tǒng)計行數(shù),?wc -l name.txt?;
  • -w?只統(tǒng)計單詞數(shù),?wc -w name.txt?;
  • -c?只統(tǒng)計字節(jié)數(shù),?wc -c name.txt?;
  • -m?只統(tǒng)計字符數(shù),?wc -m name.txt?。

uniq

刪除文件中的重復內(nèi)容。

基礎(chǔ)語法

uniq name.txt # 去除name.txt重復的行數(shù),并打印到屏幕上uniq name.txt uniq_name.txt # 把去除重復后的文件保存為 uniq_name.txt

【注意】它只能去除連續(xù)重復的行數(shù)。

常用參數(shù)

  • -c?統(tǒng)計重復行數(shù),?uniq -c name.txt?;
  • -d?只顯示重復的行數(shù),?uniq -d name.txt?。

cut

剪切文件的一部分內(nèi)容。

基礎(chǔ)語法

cut -c 2-4 name.txt # 剪切每一行第二到第四個字符

常用參數(shù)

  • -d?用于指定用什么分隔符(比如逗號、分號、雙引號等等)?cut -d , name.txt?;
  • -f?表示剪切下用分隔符分割的哪一塊或哪幾塊區(qū)域,?cut -d , -f 1 name.txt?。

重定向 管道 流

在?Linux?中一個命令的去向可以有3個地方:終端、文件、作為另外一個命令的入?yún)ⅰ?/p>

命令一般都是通過鍵盤輸入,然后輸出到終端、文件等地方,它的標準用語是?stdin?、?stdout?以及?stderr?。

  • 標準輸入?stdin?,終端接收鍵盤輸入的命令,會產(chǎn)生兩種輸出;
  • 標準輸出?stdout?,終端輸出的信息(不包含錯誤信息);
  • 標準錯誤輸出?stderr?,終端輸出的錯誤信息。

重定向

把本來要顯示在終端的命令結(jié)果,輸送到別的地方(到文件中或者作為其他命令的輸入)。

輸出重定向?>

>?表示重定向到新的文件,?cut -d , -f 1 notes.csv > name.csv?,它表示通過逗號剪切notes.csv?文件(剪切完有3個部分)獲取第一個部分,重定向到?name.csv?文件。

我們來看一個具體示例,學習它的使用,假設(shè)我們有一個文件?notes.csv?,文件內(nèi)容如下:

Mark1,951/100,很不錯1Mark2,952/100,很不錯2Mark3,953/100,很不錯3Mark4,954/100,很不錯4Mark5,955/100,很不錯5Mark6,956/100,很不錯6

執(zhí)行命令:cut -d , -f 1 notes.csv > name.csv?最后輸出如下內(nèi)容:

Mark1Mark2Mark3Mark4Mark5Mark6

【注意】使用?>?要注意,如果輸出的文件不存在它會新建一個,如果輸出的文件已經(jīng)存在,則會覆蓋。因此執(zhí)行這個操作要非常小心,以免覆蓋其它重要文件。

輸出重定向?>>

表示重定向到文件末尾,因此它不會像?>?命令這么危險,它是追加到文件的末尾(當然如果文件不存在,也會被創(chuàng)建)。

再次執(zhí)行?cut -d , -f 1 notes.csv >> name.csv?,則會把名字追加到?name.csv?里面。

Mark1Mark2Mark3Mark4Mark5Mark6Mark1Mark2Mark3Mark4Mark5Mark6

我們平時讀的?log?日志文件其實都是用這個命令輸出的。

輸出重定向?2>

標準錯誤輸出

cat not_exist_file.csv > res.txt 2> errors.log
  • 當我們?cat?一個文件時,會把文件內(nèi)容打印到屏幕上,這個是標準輸出;
  • 當使用了?> res.txt?時,則不會打印到屏幕,會把標準輸出寫入文件?res.txt?文件中;
  • 2> errors.log?當發(fā)生錯誤時會寫入?errors.log?文件中。

輸出重定向?2>>

標準錯誤輸出(追加到文件末尾)同?>>?相似。

輸出重定向?2>&1

標準輸出和標準錯誤輸出都重定向都一個地方

cat not_exist_file.csv > res.txt 2>&1  # 覆蓋輸出cat not_exist_file.csv >> res.txt 2>&1 # 追加輸出

目前為止,我們接觸的命令的輸入都來自命令的參數(shù),其實命令的輸入還可以來自文件或者鍵盤的輸入。

輸入重定向?<

<?符號用于指定命令的輸入。

cat < name.csv # 指定命令的輸入為 name.csv

雖然它的運行結(jié)果與?cat name.csv?一樣,但是它們的原理卻完全不同。

  • cat name.csv?表示?cat?命令接收的輸入是?notes.csv?文件名,那么要先打開這個文件,然后打印出文件內(nèi)容。
  • cat < name.csv?表示?cat?命令接收的輸入直接是?notes.csv?這個文件的內(nèi)容,?cat命令只負責將其內(nèi)容打印,打開文件并將文件內(nèi)容傳遞給?cat?命令的工作則交給終端完成。

輸入重定向?<<

將鍵盤的輸入重定向為某個命令的輸入。

sort -n << END # 輸入這個命令之后,按下回車,終端就進入鍵盤輸入模式,其中END為結(jié)束命令(這個可以自定義)wc -m << END # 統(tǒng)計輸入的單詞

管道?|

把兩個命令連起來使用,一個命令的輸出作為另外一個命令的輸入,英文是?pipeline?,可以想象一個個水管連接起來,管道算是重定向流的一種。

舉幾個實際用法案例:

cut -d , -f 1 name.csv | sort > sorted_name.txt # 第一步獲取到的 name 列表,通過管道符再進行排序,最后輸出到sorted_name.txtdu | sort -nr | head # du 表示列舉目錄大小信息# sort 進行排序,-n 表示按數(shù)字排序,-r 表示倒序# head 前10行文件grep log -Ir /var/log | cut -d : -f 1 | sort | uniq# grep log -Ir /var/log 表示在log文件夾下搜索 /var/log 文本,-r 表示遞歸,-I 用于排除二進制文件# cut -d : -f 1 表示通過冒號進行剪切,獲取剪切的第一部分# sort 進行排序# uniq 進行去重

流并非一個命令,在計算機科學中,流?stream?的含義是比較難理解的,記住一點即可:流就是讀一點數(shù)據(jù), 處理一點點數(shù)據(jù)。其中數(shù)據(jù)一般就是二進制格式。?上面提及的重定向或管道,就是把數(shù)據(jù)當做流去運轉(zhuǎn)的。

到此我們就接觸了,流、重定向、管道等?Linux?高級概念及指令。其實你會發(fā)現(xiàn)關(guān)于流和管道在其它語言中也有廣泛的應用。Angular?中的模板語法中可以使用管道。Node.js?中也有stream?流的概念。

查看進程

在?Windows?中通過?Ctrl + Alt + Delete?快捷鍵查看軟件進程。

w

幫助我們快速了解系統(tǒng)中目前有哪些用戶登錄著,以及他們在干什么。

[root@lion ~]# w 06:31:53 up 25 days,  9:53,  1 user,  load average: 0.00, 0.01, 0.05USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHATroot     pts/0    118.31.243.53    05:56    1.00s  0.02s  0.00s w 06:31:53:表示當前時間up 25 days, 9:53:表示系統(tǒng)已經(jīng)正常運行了“25天9小時53分鐘”1 user:表示一個用戶load average: 0.00, 0.01, 0.05:表示系統(tǒng)的負載,3個值分別表示“1分鐘的平均負載”,“5分鐘的平均負載”,“15分鐘的平均負載” USER:表示登錄的用于 TTY:登錄的終端名稱為pts/0 FROM:連接到服務器的ip地址 LOGIN@:登錄時間 IDLE:用戶有多久沒有活躍了 JCPU:該終端所有相關(guān)的進程使用的 CPU 時間,每當進程結(jié)束就停止計時,開始新的進程則會重新計時 PCPU:表示 CPU 執(zhí)行當前程序所消耗的時間,當前進程就是在 WHAT 列里顯示的程序 WHAT:表示當下用戶正運行的程序是什么,這里我運行的是 w

ps

用于顯示當前系統(tǒng)中的進程,?ps?命令顯示的進程列表不會隨時間而更新,是靜態(tài)的,是運行?ps?命令那個時刻的狀態(tài)或者說是一個進程快照。

基礎(chǔ)語法

[root@lion ~]# ps  PID TTY          TIME CMD 1793 pts/0    00:00:00 bash 4756 pts/0    00:00:00 ps  PID:進程號,每個進程都有唯一的進程號 TTY:進程運行所在的終端 TIME:進程運行時間 CMD:產(chǎn)生這個進程的程序名,如果在進程列表中看到有好幾行都是同樣的程序名,那么就是同樣的程序產(chǎn)生了不止一個進

常用參數(shù)

  • -ef?列出所有進程;
  • -efH?以喬木狀列舉出所有進程;
  • -u?列出此用戶運行的進程;
  • -aux?通過?CPU?和內(nèi)存使用來過濾進程?ps -aux | less?;
  • -aux --sort -pcpu?按?CPU?使用降序排列,?-aux --sort -pmem?表示按內(nèi)存使用降序排列;
  • -axjf?以樹形結(jié)構(gòu)顯示進程,?ps -axjf?它和?pstree?效果類似。

top

獲取進程的動態(tài)列表。

top - 07:20:07 up 25 days, 10:41,  1 user,  load average: 0.30, 0.10, 0.07Tasks:  67 total,   1 running,  66 sleeping,   0 stopped,   0 zombie%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem :  1882072 total,   552148 free,   101048 used,  1228876 buff/cacheKiB Swap:        0 total,        0 free,        0 used.  1594080 avail Mem   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                         956 root      10 -10  133964  15848  10240 S  0.7  0.8 263:13.01 AliYunDun                                                                                                         1 root      20   0   51644   3664   2400 S  0.0  0.2   3:23.63 systemd                                                                                                           2 root      20   0       0      0      0 S  0.0  0.0   0:00.05 kthreadd                                                                                                          4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H    
  • top - 07:20:07 up 25 days, 10:41, 1 user, load average: 0.30, 0.10, 0.07?相當?w命令的第一行的信息。
  • 展示的這些進程是按照使用處理器?%CPU?的使用率來排序的。

kill

結(jié)束一個進程,?kill + PID?。

kill 956 # 結(jié)束進程號為956的進程kill 956 957 # 結(jié)束多個進程kill -9 7291 # 強制結(jié)束進程

管理進程

進程狀態(tài)

主要是切換進程的狀態(tài)。我們先了解下?Linux?下進程的五種狀態(tài):

  1. 狀態(tài)碼?R?:表示正在運行的狀態(tài);
  2. 狀態(tài)碼?S?:表示中斷(休眠中,受阻,當某個條件形成后或接受到信號時,則脫離該狀態(tài));
  3. 狀態(tài)碼?D?:表示不可中斷(進程不響應系統(tǒng)異步信號,即使用kill命令也不能使其中斷);
  4. 狀態(tài)碼?Z?:表示僵死(進程已終止,但進程描述符依然存在,直到父進程調(diào)用?wait4()系統(tǒng)函數(shù)后將進程釋放);
  5. 狀態(tài)碼?T?:表示停止(進程收到?SIGSTOP?、?SIGSTP?、?SIGTIN?、?SIGTOU?等停止信號后停止運行)。

前臺進程 & 后臺進程

默認情況下,用戶創(chuàng)建的進程都是前臺進程,前臺進程從鍵盤讀取數(shù)據(jù),并把處理結(jié)果輸出到顯示器。例如運行?top?命令,這就是一個一直運行的前臺進程。

后臺進程的優(yōu)點是不必等待程序運行結(jié)束,就可以輸入其它命令。在需要執(zhí)行的命令后面添加&?符號,就表示啟動一個后臺進程。

&

啟動后臺進程,它的缺點是后臺進程與終端相關(guān)聯(lián),一旦關(guān)閉終端,進程就自動結(jié)束了。

cp name.csv name-copy.csv &

nohup

使進程不受掛斷(關(guān)閉終端等動作)的影響。

nohup cp name.csv name-copy.csv

nohup?命令也可以和?&?結(jié)合使用。

nohup cp name.csv name-copy.csv &

bg

使一個“后臺暫停運行”的進程,狀態(tài)改為“后臺運行”。

bg %1 # 不加任何參數(shù)的情況下,bg命令會默認作用于最近的一個后臺進程,如果添加參數(shù)則會作用于指定標號的進程

實際案例1:

1. 執(zhí)行 grep -r "log" / > grep_log 2>&1 命令啟動一個前臺進程,并且忘記添加 & 符號2. ctrl + z 使進程狀態(tài)轉(zhuǎn)為后臺暫停3. 執(zhí)行 bg 將命令轉(zhuǎn)為后臺運行

實際案例2:

前端開發(fā)時我們經(jīng)常會執(zhí)行 yarn start 啟動項目此時我們執(zhí)行 ctrl + z 先使其暫停然后執(zhí)行 bg 使其轉(zhuǎn)為后臺運行這樣當前終端就空閑出來可以干其它事情了,如果想要喚醒它就使用 fg 命令即可(后面會講)

jobs

顯示當前終端后臺進程狀態(tài)。

[root@lion ~]# jobs[1]+  Stopped                 top[2]-  Running                 grep --color=auto -r "log" / > grep_log 2>&1 &

fg

fg?使進程轉(zhuǎn)為前臺運行,用法和?bg?命令類似。

我們用一張圖來表示前后臺進程切換:

我們可以使程序在后臺運行,成為后臺進程,這樣在當前終端中我們就可以做其他事情了,而不必等待此進程運行結(jié)束。

守護進程

一個運行起來的程序被稱為進程。在?Linux?中有些進程是特殊的,它不與任何進程關(guān)聯(lián),不論用戶的身份如何,都在后臺運行,這些進程的父進程是?PID?為1的進程,?PID?為1的進程只在系統(tǒng)關(guān)閉時才會被銷毀。它們會在后臺一直運行等待分配工作。我們將這類進程稱之為守護進程?daemon?。

守護進程的名字通常會在最后有一個?d?,表示?daemon?守護的意思,例如?systemd、httpd?。

systemd

systemd?是一個?Linux?系統(tǒng)基礎(chǔ)組件的集合,提供了一個系統(tǒng)和服務管理器,運行為?PID 1?并負責啟動其它程序。

[root@lion ~]# ps -auxUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot         1  0.0  0.2  51648  3852 ?        Ss   Feb01   1:50 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

通過命令也可以看到?PID?為1的進程就是?systemd?的系統(tǒng)進程。

systemd?常用命令(它是一組命令的集合):

systemctl start nginx # 啟動服務systemctl stop nginx # 停止服務systemctl restart nginx # 重啟服務systemctl status nginx # 查看服務狀態(tài)systemctl reload nginx # 重載配置文件(不停止服務的情況)systemctl enable nginx # 開機自動啟動服務systemctl disable nginx # 開機不自動啟動服務systemctl is-enabled nginx # 查看服務是否開機自動啟動systemctl list-unit-files --type=service # 查看各個級別下服務的啟動和禁用情

文件壓縮解壓

  • 打包:是將多個文件變成一個總的文件,它的學名叫存檔、歸檔。
  • 壓縮:是將一個大文件(通常指歸檔)壓縮變成一個小文件。

我們常常使用?tar?將多個文件歸檔為一個總的文件,稱為?archive?。然后用?gzip?或?bzip2?命令將?archive?壓縮為更小的文件。

tar

創(chuàng)建一個?tar?歸檔。

基礎(chǔ)用法

tar -cvf sort.tar sort/ # 將sort文件夾歸檔為sort.tartar -cvf archive.tar file1 file2 file3 # 將 file1 file2 file3 歸檔為archive.ta

常用參數(shù)

  • -cvf?表示?create(創(chuàng)建)+?verbose(細節(jié))+?file(文件),創(chuàng)建歸檔文件并顯示操作細節(jié);
  • -tf?顯示歸檔里的內(nèi)容,并不解開歸檔;
  • -rvf?追加文件到歸檔,?tar -rvf archive.tar file.txt?;
  • -xvf?解開歸檔,?tar -xvf archive.tar?。

gzip / gunzip

“壓縮/解壓”歸檔,默認用?gzip?命令,壓縮后的文件后綴名為?.tar.gz?。

gzip archive.tar # 壓縮gunzip archive.tar.gz # 解壓

tar 歸檔+壓縮

可以用?tar?命令同時完成歸檔和壓縮的操作,就是給?tar?命令多加一個選項參數(shù),使之完成歸檔操作后,還是調(diào)用?gzip?或?bzip2?命令來完成壓縮操作。

tar -zcvf archive.tar.gz archive/ # 將archive文件夾歸檔并壓縮tar -zxvf archive.tar.gz # 將archive.tar.gz歸檔壓縮文件解壓

zcat、zless、zmore

之前講過使用?cat less more?可以查看文件內(nèi)容,但是壓縮文件的內(nèi)容是不能使用這些命令進行查看的,而要使用?zcat、zless、zmore?進行查看。

zcat archive.tar.gz

zip/unzip

“壓縮/解壓”?zip?文件(?zip?壓縮文件一般來自?windows?操作系統(tǒng))。

命令安裝

# Red Hat 一族中的安裝方式y(tǒng)um install zip yum install unzip 

基礎(chǔ)用法

unzip archive.zip # 解壓 .zip 文件unzip -l archive.zip # 不解開 .zip 文件,只看其中內(nèi)容zip -r sort.zip sort/ # 將sort文件夾壓縮為 sort.zip,其中-r表示遞歸

編譯安裝軟件

之前我們學會了使用?yum?命令進行軟件安裝,如果碰到?yum?倉庫中沒有的軟件,我們就需要會更高級的軟件安裝“源碼編譯安裝”。

編譯安裝

簡單來說,編譯就是將程序的源代碼轉(zhuǎn)換成可執(zhí)行文件的過程。大多數(shù)?Linux?的程序都是開放源碼的,可以編譯成適合我們的電腦和操縱系統(tǒng)屬性的可執(zhí)行文件。

基本步驟如下:

  1. 下載源代碼
  2. 解壓壓縮包
  3. 配置
  4. 編譯
  5. 安裝

實際案例

1、下載

我們來編譯安裝?htop?軟件,首先在它的官網(wǎng)下載源碼:http://bintray.com/htop/source…[1]

下載好的源碼在本機電腦上使用如下命令同步到服務器上:

scp 文件名 用戶名@服務器ip:目標路徑scp ~/Desktop/htop-3.0.0.tar.gz root@121.42.11.34:.

也可以使用?wegt?進行下載:

wegt+下載地址wegt https://bintray.com/htop/source/download_file?file_path=htop-3.0.0.tar.gz

2、解壓文件

tar -zxvf htop-3.0.0.tar.gz # 解壓cd htop-3.0.0 # 進入目錄

3、配置

執(zhí)行?./configure?,它會分析你的電腦去確認編譯所需的工具是否都已經(jīng)安裝了。

4、編譯

執(zhí)行?make?命令

5、安裝

執(zhí)行?make install?命令,安裝完成后執(zhí)行?ls /usr/local/bin/?查看是否有?htop?命令。如果有就可以執(zhí)行?htop?命令查看系統(tǒng)進程了。

網(wǎng)絡(luò)

ifconfig

查看?ip?網(wǎng)絡(luò)相關(guān)信息,如果命令不存在的話, 執(zhí)行命令?yum install net-tools?安裝。

[root@lion ~]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 172.31.24.78  netmask 255.255.240.0  broadcast 172.31.31.255        ether 00:16:3e:04:9c:cd  txqueuelen 1000  (Ethernet)        RX packets 1592318  bytes 183722250 (175.2 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 1539361  bytes 154044090 (146.9 MiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

參數(shù)解析:

  • eth0?對應有線連接(對應你的有線網(wǎng)卡),就是用網(wǎng)線來連接的上網(wǎng)。eth?是?Ethernet?的縮寫,表示“以太網(wǎng)”。有些電腦可能同時有好幾條網(wǎng)線連著,例如服務器,那么除了eht0?,你還會看到?eth1?、?eth2?等。
  • lo?表示本地回環(huán)(?Local Loopback?的縮寫,對應一個虛擬網(wǎng)卡)可以看到它的?ip?地址是?127.0.0.1?。每臺電腦都應該有這個接口,因為它對應著“連向自己的鏈接”。這也是被稱之為“本地回環(huán)”的原因。所有經(jīng)由這個接口發(fā)送的東西都會回到你自己的電腦??雌饋砗孟癫]有什么用,但有時為了某些緣故,我們需要連接自己。例如用來測試一個網(wǎng)絡(luò)程序,但又不想讓局域網(wǎng)或外網(wǎng)的用戶查看,只能在此臺主機上運行和查看所有的網(wǎng)絡(luò)接口。例如在我們啟動一個前端工程時,在瀏覽器輸入?127.0.0.1:3000?啟動項目就能查看到自己的?web?網(wǎng)站,并且它只有你能看到。
  • wlan0?表示無線局域網(wǎng)(上面案例并未展示)。

host

ip?地址和主機名的互相轉(zhuǎn)換。

軟件安裝

yum install bind-utils

基礎(chǔ)用法

[root@lion ~]# host github.combaidu.com has address 13.229.188.59 [root@lion ~]# host 13.229.188.5959.188.229.13.in-addr.arpa domain name pointer ec2-13-229-188-59.ap-southeast-1.compute.amazonaws.com.

ssh 連接遠程服務器

通過非對稱加密以及對稱加密的方式(同?HTTPS?安全連接原理相似)連接到遠端服務器。

ssh 用戶@ip:port1、ssh root@172.20.10.1:22 # 端口號可以省略不寫,默認是22端口2、輸入連接密碼后就可以操作遠端服務器

配置 ssh

config?文件可以配置?ssh?,方便批量管理多個?ssh?連接。

配置文件分為以下幾種:

  • 全局?ssh?服務端的配置:/etc/ssh/sshd_config?;
  • 全局?ssh?客戶端的配置:/etc/ssh/ssh_config(很少修改);
  • 當前用戶?ssh?客戶端的配置:~/.ssh/config?。

【服務端?config?文件的常用配置參數(shù)】

[注意] 修改完服務端配置文件需要重啟服務?systemctl restart sshd

【客戶端?config?文件的常用配置參數(shù)】

配置當前用戶的?config?:

# 創(chuàng)建configvim ~/.ssh/config# 填寫一下內(nèi)容Host lion # 別名 HostName 172.x.x.x # ip 地址  Port 22 # 端口  User root # 用戶

這樣配置完成后,下次登錄時,可以這樣登錄?ssh lion?會自動識別為?root?用戶。

[注意] 這段配置不是在服務器上,而是你自己的機器上,它僅僅是設(shè)置了一個別名。

免密登錄

ssh?登錄分兩種,一種是基于口令(賬號密碼),另外一種是基于密鑰的方式。

基于口令,就是每次登錄輸入賬號和密碼,顯然這樣做是比較麻煩的,今天主要學習如何基于密鑰實現(xiàn)免密登錄。

基于密鑰驗證原理

客戶機生成密鑰對(公鑰和私鑰),把公鑰上傳到服務器,每次登錄會與服務器的公鑰進行比較,這種驗證登錄的方法更加安全,也被稱為“公鑰驗證登錄”。

具體實現(xiàn)步驟

1、在客戶機中生成密鑰對(公鑰和私鑰)?ssh-keygen(默認使用 RSA 非對稱加密算法)

運行完?ssh-keygen?會在?~/.ssh/?目錄下,生成兩個文件:

  • id_rsa.pub?:公鑰
  • id_rsa?:私鑰

2、把客戶機的公鑰傳送到服務

執(zhí)行?ssh-copy-id root@172.x.x.xssh-copy-id?它會把客戶機的公鑰追加到服務器?~/.ssh/authorized_keys?的文件中)。

執(zhí)行完成后,運行?ssh root@172.x.x.x?就可以實現(xiàn)免密登錄服務器了。

配合上面設(shè)置好的別名,直接執(zhí)行?ssh lion?就可以登錄,是不是非常方便。

wget

可以使我們直接從終端控制臺下載文件,只需要給出文件的HTTP或FTP地址。

wget [參數(shù)][URL地址]wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip

wget?非常穩(wěn)定,如果是由于網(wǎng)絡(luò)原因下載失敗,?wget?會不斷嘗試,直到整個文件下載完畢。

常用參數(shù)

  • -c?繼續(xù)中斷的下載。

備份

scp

它是?Secure Copy?的縮寫,表示安全拷貝。scp?可以使我們通過網(wǎng)絡(luò),把文件從一臺電腦拷貝到另一臺電腦。

scp?是基于?ssh?的原理來運作的,?ssh?會在兩臺通過網(wǎng)絡(luò)連接的電腦之間創(chuàng)建一條安全通信的管道,?scp?就利用這條管道安全地拷貝文件。

scp source_file destination_file # source_file 表示源文件,destination_file 表示目標文

其中?source_file?和?destination_file?都可以這樣表示:user@ip:file_name?,?user?是登錄名,?ip?是域名或?ip?地址。file_name?是文件路徑。

scp file.txt root@192.168.1.5:/root # 表示把我的電腦中當前文件夾下的 file.txt 文件拷貝到遠程電腦scp root@192.168.1.5:/root/file.txt file.txt # 表示把遠程電腦上的 file.txt 文件拷貝到本機

rsync

rsync?命令主要用于遠程同步文件。它可以同步兩個目錄,不管它們是否處于同一臺電腦。它應該是最常用于“增量備份”的命令了。它就是智能版的?scp?命令。

軟件安裝

yum install rsync

基礎(chǔ)用法

rsync -arv Images/ backups/ # 將Images 目錄下的所有文件備份到 backups 目錄下rsync -arv Images/ root@192.x.x.x:backups/ # 同步到服務器的backups目錄下

常用參數(shù)

  • -a?保留文件的所有信息,包括權(quán)限,修改日期等;
  • -r?遞歸調(diào)用,表示子目錄的所有文件也都包括;
  • -v?冗余模式,輸出詳細操作信息。

默認地,?rsync?在同步時并不會刪除目標目錄的文件,例如你在源目錄中刪除一個文件,但是用?rsync?同步時,它并不會刪除同步目錄中的相同文件。如果向刪除也可以這么做:rsync -arv --delete Images/ backups/?。

系統(tǒng)

halt

關(guān)閉系統(tǒng),需要?root?身份。

halt

reboot

重啟系統(tǒng),需要?root?身份。

reboot

poweroff

直接運行即可關(guān)機,不需要?root?身份。

Vim 編輯器

Vim 是什么?

Vim?是從?vi?發(fā)展出來的一個文本編輯器。其代碼補完、編譯及錯誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。和?Emacs?并列成為類?Unix?系統(tǒng)用戶最喜歡的編輯器。

Vim 常用模式

  • 交互模式
  • 插入模式
  • 命令模式
  • 可視模式

交互模式

也成為正常模式,這是?Vim?的默認模式,每次運行?Vim?程序的時候,就會進入這個模式。

例如執(zhí)行?vim name.txt?則會進入交互模式。

交互模式特征:

  • 在這個模式下,你不能輸入文本;
  • 它可以讓我們在文本間移動,刪除一行文本,復制黏貼文本,跳轉(zhuǎn)到指定行,撤銷操作,等等。

插入模式

這個模式是我們熟悉的文本編輯器的模式,就是可以輸入任何你想輸入的內(nèi)容。進入這個模式有幾種方法,最常用的方法是按字母鍵?i?(?i、I、a、A、o、O?都可以進入插入模式,只是所處的位置不同),退出這種模式,只需要按下?Esc?鍵。

  • i, I?進入輸入模式?Insert mode?:i?為“從目前光標所在處輸入”,?I?為“在目前所在行的第一個非空格符處開始輸入”;
  • a, A?進入輸入模式?Insert mode?:a?為“從目前光標所在的下一個字符處開始輸入”,A?為“從光標所在行的最后一個字符處開始輸入”;
  • o, O?進入輸入模式?Insert mode?:o?為“在目前光標所在的下一行處輸入新的一行”;O?為在目前光標所在處的上一行輸入新的一行。

命令模式

命令模式也稱為底線命令模式,這個模式下可以運行一些命令例如“退出”,“保存”,等動作。

也可以用這個模式來激活一些?Vim?配置,例如語法高亮,顯示行號,等。甚至還可以發(fā)送一些命令給終端命令行,例如?ls、cp?。

為了進入命令模式,首先要進入交互模式,再按下冒號鍵。

用一張圖表示三種模式如何切換:

基本操作

打開 Vim

在終端命令行中輸入?vim?回車后?Vim?就會被運行起來,也可以用?Vim?來打開一個文件,只需要在?vim?后面再加文件名。如?vim file.name?,如果文件不存在,那么會被創(chuàng)建。

插入

進入文件之后,此時處于交互模式,可以通過輸入?i?進入插入模式。

移動

在?Vim?的交互模式下,我們可以在文本中移動光標。

  • h?向左移動一個字符
  • j?向下移動一個字符
  • k?向上移動一個字符
  • i?向右移動一個字符

當然也可以使用四個方向鍵進行移動,效果是一樣的。

跳至行首和行末

  • 行首:在交互模式下,為了將光標定位到一行的開始位置,只需要按下數(shù)字鍵?0?即可,鍵盤上的?Home?鍵也有相同效果。
  • 行末:在交互模式下,為了將光標定位到一行的末尾,只需要按下美元符號鍵?$?即可,鍵盤上的?End?鍵也有相同效果。

按單詞移動

在交互模式下,按字母鍵?w?可以一個單詞一個單詞的移動。

退出文件

在交互模式下,按下冒號鍵?:?進入命令模式,再按下?q?鍵,就可以退出了。

如果在退出之前又修改了文件,就直接想用?:q?退出?Vim?,那么?Vim?會顯示一個紅字標明錯誤信息。此時我們有兩個選擇:

  1. 保存并退出?:wq?或?:x?;
  2. 不保存且退出?:q!?。

標準操作

刪除字符

在交互模式下,將光標定位到一個你想要刪除的字符上,按下字母鍵?x?你會發(fā)現(xiàn)這個字符被刪除了。

也可以一次性刪除多個字符,只需要在按?x?鍵之前輸入數(shù)字即可。

刪除(剪切)單詞,行

  • 刪除一行:連按兩次?d?來刪除光標所在的那一行。
  • 刪除多行:例如先輸入數(shù)字?2?,再按下?dd?,就會刪除從光標所在行開始的兩行。
  • 刪除一個單詞:將光標置于一個單詞的首字母處,然后按下?dw?。
  • 刪除多個單詞:例如先按數(shù)字鍵?2?再按?dw?就可以刪除兩個單詞了。
  • 從光標所在位置刪除至行首:d0?。
  • 從光標所在位置刪除至行末:d$?。

復制單詞,行

  • 復制行:按兩次?y?會把光標所在行復制到內(nèi)存中,和?dd?類似,?dd?用于“剪切”光標所在行。
  • 復制單詞:yw?會復制一個單詞。
  • 復制到行末:y$?是復制從光標所在處到行末的所有字符。
  • 復制到行首:y0?是復制光標所在處到行首的所有字符。

粘貼

如果之前用?dd?或者?yy?剪切復制過來的,可以使用?p?來粘貼。同樣也可以使用?數(shù)字+p來表示復制多次。

替換一個字符

在交互模式下,將光標置于想要替換的字符上。按下?r?鍵,接著輸入你要替換的字符即可。

撤銷操作

如果要撤銷最近的修改,只需要按下?u?鍵,如果想要撤銷最近四次修改,可以按下4,再按下?u?。

重做

取消撤銷,也就是重做之前的修改使用?ctrl + r?。

跳轉(zhuǎn)到指定行

Vim?編輯的文件中,每一行都有一個行號,行號從1開始,逐一遞增。

行號默認是不顯示,如果需要它顯示的話,可以進入命令模式,然后輸入?set nu?,如果要隱藏行號的話,使用?set nonu?。

  • 跳轉(zhuǎn)到指定行:數(shù)字+gg?,例如?7gg?,表示跳轉(zhuǎn)到第7行。
  • 要跳轉(zhuǎn)到最后一行,按下?G?。
  • 要跳轉(zhuǎn)到第一行,按下?gg?。

高級操作

查找

處于交互模式下,按下?/?鍵,那么就進入查找模式,輸入你要查找的字符串,然后按下回車。光標就會跳轉(zhuǎn)到文件中下一個查找到的匹配處。如果字符串不存在,那么會顯示?"pattern not found"?。

  • n?跳轉(zhuǎn)到下一個匹配項;
  • N?跳轉(zhuǎn)到上一個匹配項。

[注意] 用斜杠來進行的查找是從當前光標處開始向文件尾搜索,如果你要從當前光標處開始,向文件頭搜索則使用???,當然也可以先按下?gg?跳轉(zhuǎn)到第一行在進行全文搜索。

查找并替換

替換光標所在行第一個匹配的字符串:

# 語法:s/舊字符串/新字符串# 實例:s/one/two

替換光標所在行所有舊字符串為新字符串:

# 語法:s/舊字符串/新字符串/g

替換第幾行到第幾行中所有字符串:

# 語法:n,m s/舊字符串/新字符串/g# 實例:2,4 s/one/two/g

最常用的就是全文替換了:

# 語法:%s/舊字符串/新字符串/g

合并文件

可以用冒號?+r?(?:r?) 實現(xiàn)在光標處插入一個文件的內(nèi)容。

:r filename # 可以用Tab鍵來自動補全另外一個文件的路徑

分屏

Vim?有一個特別便捷的功能那就是分屏,可以同時打開好幾個文件,分屏之后,屏幕每一塊被稱為一個?viewport?,表示“視口”。

  • 橫向分屏?:sp 文件名
  • 垂直分屏?:vsp 文件名

分屏模式下的快捷鍵

  • Ctrl + w?再加?Ctrl + w?,表示從一個?viewport?移動光標到另外一個?viewport?;
  • Ctrl + w?再加 “方向鍵”,就可以移動到這個方向所處的下一個視口了;
  • Ctrl + w?再加?+?號,表示擴大當前視口;
  • Ctrl + w?再加?-?號,表示縮小當前視口;
  • Ctrl + w?再加?=?號,表示平均當前視口;
  • Ctrl + w?再加?r?鍵,會反向調(diào)換視口位置;
  • Ctrl + w?再加?q?鍵,會關(guān)閉當前視口;
  • Ctrl + w?再加?o?鍵,會關(guān)閉除當前視口以外的所有視口;

運行外部命令?:!

在?Vim?中可以運行一些終端命令,只要先輸入?:!?,然后接命令名稱。

例如:

:!ls # 在Vim中打開的文件所在的目錄運行l(wèi)s命令

可視模式

前面只講了?Vim?的三種模式,其實還有一種模式叫做可視模式。

進入它的三種方式(都是從交互模式開始):

  • v?字符可視模式,進入后配合方向鍵選中字符后,然后再按?d?鍵可以刪除選中。
  • V?行可視模式,進入后光標所在行默認被選中,然后再按?d?鍵可以刪除所在行。
  • Ctrl + v?塊可視模式,它是可視模式最有用的功能了,配合?d?和?I?鍵可以實現(xiàn)刪除選中的內(nèi)容和插入內(nèi)容。

同時選中多行,并在選中行頭部插入內(nèi)容的具體操作步驟:

1. ctrl + v 進入塊可視模式
2. 使用方向鍵進行選中(上下左右)假設(shè)選中5行
3. 輸入 I 鍵進行多行同時插入操作
4. 插入完成后連續(xù)按兩下 esc 鍵,實現(xiàn)多行同時插入相同字符

進入可視模式之后的操作鍵:

  • d?鍵,表示刪除選中;
  • I?鍵,表示在選中之前插入;
  • u?鍵,表示選中變?yōu)樾?#xff1b;
  • U?鍵,表示選中變?yōu)榇髮?#xff1b;

Vim 配置

選項參數(shù)

在?Vim?被啟動后,可以運行一些指令來激活一些選項參數(shù),但是這些選項參數(shù)的配置在退出Vim?時會被忘記,例如前面講解的激活行號。如果希望所在的配置是永久性的,那么需要在家目錄(?cd ~?)創(chuàng)建一個?Vim?的配置文件?.vimrc?。

.vimrc

set number " 顯示行號
syntax on " 激活語法高亮
set showcmd " 實時看到輸入的命令
set ignorecase " 搜索時不區(qū)分大小寫
set mouse=a " 激活鼠標,用鼠標選中時相當于進入可視模式

Vim?配置非常豐富,我們可以通過個性化配置把?Vim?打造成屬于自己的?IDE?等等。在?github?上也可以搜索到一些強大的?Vim?配置文件。

http://www.risenshineclean.com/news/51223.html

相關(guān)文章:

  • 插件素材網(wǎng)站營銷型網(wǎng)站建設(shè)要點
  • 湖北網(wǎng)站制作公司的聯(lián)系方式怎樣建立網(wǎng)站免費的
  • 為審核資質(zhì)幫別人做的網(wǎng)站網(wǎng)絡(luò)營銷主要做些什么工作
  • 用react做的網(wǎng)站哈爾濱網(wǎng)絡(luò)優(yōu)化推廣公司
  • 怎么優(yōu)化wordpress數(shù)據(jù)庫表seo技巧與技術(shù)
  • 福州外文網(wǎng)站建設(shè)網(wǎng)站優(yōu)化網(wǎng)絡(luò)推廣seo
  • 宿州信息網(wǎng)官網(wǎng)seo診斷方法步驟
  • 用手機怎么制作動漫視頻公司seo推廣營銷網(wǎng)站
  • 訪問網(wǎng)站速度很慢如何推銷自己的產(chǎn)品
  • 關(guān)于網(wǎng)站建設(shè)的介紹鄭州官網(wǎng)網(wǎng)站推廣優(yōu)化
  • 網(wǎng)站注冊域名后怎么做中山谷歌推廣
  • 武漢網(wǎng)站建設(shè)公司華企加速器醫(yī)療器械龍頭股
  • 域名解析到本地服務器伊春seo
  • 怎么做沒有后臺程序的網(wǎng)站網(wǎng)絡(luò)營銷計劃書怎么寫
  • 網(wǎng)站建設(shè)報價單鄭州網(wǎng)絡(luò)推廣團隊
  • behance設(shè)計網(wǎng)站注冊各大網(wǎng)站域名大全
  • 網(wǎng)站建設(shè)有什么崗位網(wǎng)站發(fā)稿平臺
  • 關(guān)于網(wǎng)站建設(shè)的請示范文微信最好用的營銷軟件
  • 深圳最亂最窮的地方重慶百度seo排名
  • wordpress靜態(tài)生成頁面青島百度整站優(yōu)化服務
  • 上海網(wǎng)站設(shè)計聯(lián)系方式在線視頻觀看免費視頻22
  • 設(shè)計師個人網(wǎng)站模板湖州網(wǎng)站seo
  • 新疆網(wǎng)站建設(shè)咨詢谷歌paypal官網(wǎng)
  • 男女做那個網(wǎng)站動態(tài)圖片優(yōu)化設(shè)計七年級上冊語文答案
  • 行業(yè)信息網(wǎng)站建設(shè)方案房地產(chǎn)網(wǎng)站建設(shè)
  • 深圳網(wǎng)站建設(shè)php廈門seo全網(wǎng)營銷
  • 寧波seo整站優(yōu)化最新國際新聞50條簡短
  • 請人做網(wǎng)站誰來維護網(wǎng)站關(guān)鍵詞優(yōu)化怎么弄
  • 哪里查網(wǎng)站備案信息企業(yè)員工培訓課程有哪些
  • 做網(wǎng)站平臺的營業(yè)執(zhí)照互聯(lián)網(wǎng)廣告推廣好做嗎