精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個更加全面的認識Linux

倩倩 ? 來源:嵌入式悅翔園 ? 作者:嵌入式悅翔園 ? 2022-08-31 15:53 ? 次閱讀

前言

Linux 的學習對于一個程序員的重要性是不言而喻的。前端開發相比后端開發,接觸Linux機會相對較少,因此往往容易忽視它。但是學好它卻是程序員必備修養之一。

如果本文對你有所幫助,請點個 吧。

作者使用的是阿里云服務器ECS(最便宜的那種)CentOS 7.764位。當然你也可以在自己的電腦安裝虛擬機,虛擬機中再去安裝CentOS系統(這就完全免費了)。至于它的安裝教程可以去谷歌搜索下,相關教程非常多。

Linux 基礎

操作系統

操作系統Operating System簡稱OS,是軟件的一部分,它是硬件基礎上的第一層軟件,是硬件和其它軟件溝通的橋梁。

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

613b0412-28e0-11ed-ba43-dac502259ad0.jpg

什么是 Linux

Linux 系統內核與 Linux 發行套件的區別

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

總結:真正的Linux指的是系統內核,而我們常說的Linux指的是“發行版完整的包含一些基礎軟件的操作系統”。

Linux 對比 Windows

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

Linux 系統種類

  • 紅帽企業版LinuxRHEL是全世界內使用最廣泛的Linux系統。它具有極強的性能與穩定性,是眾多生成環境中使用的(收費的)系統。
  • Fedora:由紅帽公司發布的桌面版系統套件,用戶可以免費體驗到最新的技術或工具,這些技術或工具在成熟后會被加入到RHEL系統中,因此Fedora也成為RHEL系統的試驗版本。
  • CentOS:通過把RHEL系統重新編譯并發布給用戶免費使用的Linux系統,具有廣泛的使用人群。
  • Deepin:中國發行,對優秀的開源成品進行集成和配置。
  • Debian:穩定性、安全性強,提供了免費的基礎支持,在國外擁有很高的認可度和使用率。
  • Ubuntu:是一款派生自Debian的操作系統,對新款硬件具有極強的兼容能力。UbuntuFedora都是極其出色的Linux桌面系統,而且Ubuntu也可用于服務器領域。

終端連接阿里云服務器

61540728-28e0-11ed-ba43-dac502259ad0.jpg

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

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

Shell

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

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

Shell 的種類

Shell有很多種,只要能給用戶提供命令行環境的程序,都可以看作是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

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

命令

命令行提示符

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

執行一個簡單的命令pwd

[root@iZm5e8dsxce9ufaic7hi3uZ~]#pwd
/root
復制代碼

命令解析:

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

關于如何創建、切換、刪除用戶,在后面的用戶與權限會具體講解,這里先使用root用戶進行演示。

[備注]root是超級用戶,具備操作系統的一切權限。

命令格式

commandparameters(命令參數)
復制代碼

長短參數

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

參數值

短參數:command-p 10(例如:ssh root@121.42.11.34 -p 22)
長參數:command--paramters=10(例如:ssh root@121.42.11.34 --port=22)
復制代碼

快捷方式

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

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

文件和目錄

文件的組織

6166610c-28e0-11ed-ba43-dac502259ad0.jpg

查看路徑

pwd

顯示當前目錄的路徑

61777ffa-28e0-11ed-ba43-dac502259ad0.jpg

which

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

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

6181be98-28e0-11ed-ba43-dac502259ad0.jpg

瀏覽和切換目錄

ls

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

【常用參數】

  • -a顯示所有文件和目錄包括隱藏的
  • -l顯示詳細列表
  • -h適合人類閱讀的
  • -t按文件最近一次修改時間排序
  • -i顯示文件的inodeinode是文件內容的標識)
618eb0a8-28e0-11ed-ba43-dac502259ad0.jpg

cd

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

cd/-->跳轉到根目錄
cd~-->跳轉到家目錄
cd..-->跳轉到上級目錄
cd./home-->跳轉到當前目錄的home目錄下
cd/home/lion-->跳轉到根目錄下的home目錄下的lion目錄
cd-->不添加任何參數,也是回到家目錄
復制代碼

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

du

列舉目錄大小信息

【常用參數】

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

瀏覽和創建文件

cat

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

catcloud-init.log
復制代碼

【常用參數】

  • -n顯示行號。

less

分頁顯示文件內容,更適合查看大的文件。

lesscloud-init.log
復制代碼

【快捷操作】

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

head

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

headcloud-init.log
復制代碼

【參數】

  • -n指定行數head cloud-init.log -n 2

tail

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

tailcloud-init.log復制代碼

【參數】

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

touch

創建一個文件

touchnew_file復制代碼

mkdir

創建一個目錄

mkdirnew_folder復制代碼

【常用參數】

  • -p遞歸的創建目錄結構mkdir -p one/two/three

文件的復制和移動

cp

拷貝文件和目錄

cpfilefile_copy-->file是目標文件,file_copy是拷貝出來的文件cpfileone-->把file文件拷貝到one目錄下,并且文件名依然為filecpfileone/file_copy-->把file文件拷貝到one目錄下,文件名為file_copycp*.txtfolder-->把當前目錄下所有txt文件拷貝到folder目錄下復制代碼

【常用參數】

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

mv

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

mvfileone-->將file文件移動到one目錄下mvnew_folderone-->將new_folder文件夾移動到one目錄下mv*.txtfolder-->把當前目錄下所有txt文件移動到folder目錄下mvfilenew_file-->file文件重命名為new_file復制代碼

文件的刪除和鏈接

rm

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

rmnew_file-->刪除new_file文件rmf1f2f3-->同時刪除f1f2f33個文件復制代碼

【常用參數】

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

ln

英文Link的縮寫,表示創建鏈接。

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

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

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

硬鏈接

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

lnfile1file2-->創建file2為file1的硬鏈接復制代碼
619b0cb8-28e0-11ed-ba43-dac502259ad0.jpg

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

軟鏈接

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

ln-sfile1file2復制代碼
61b197a8-28e0-11ed-ba43-dac502259ad0.jpg

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

total0-rw-r--r--1rootroot0Jan1406:29file1lrwxrwxrwx1rootroot5Jan1406:42file2->file1#表示file2指向file1復制代碼

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

用戶與權限

用戶

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

61c015b2-28e0-11ed-ba43-dac502259ad0.jpg

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

sudo

root身份運行命令

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

useradd + passwd

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

這兩個命令需要root用戶權限

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

userdel

刪除用戶,需要root用戶權限

userdellion-->只會刪除用戶名,不會從/home中刪除對應文件夾userdellion-r-->會同時刪除/home下的對應文件夾復制代碼

su

切換用戶,需要root用戶權限

sudosu-->切換為root用戶(exit命令或CTRL+D快捷鍵都可以使普通用戶切換為root用戶)sulion-->切換為普通用戶su--->切換為root用戶復制代碼

群組的管理

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

groupadd

創建群組,用法和useradd類似。

groupaddfriends復制代碼

groupdel

刪除一個已存在的群組

groupdelfoo-->刪除foo群組復制代碼

groups

查看用戶所在群組

groupslion-->查看lion用戶所在的群組復制代碼

usermod

用于修改用戶的賬戶。

【常用參數】

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

chgrp

用于修改文件的群組。

chgrpbarfile.txt-->file.txt文件的群組修改為bar復制代碼

chown

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

chownlionfile.txt-->把其它用戶創建的file.txt轉讓給lion用戶chownlion:barfile.txt-->把file.txt的用戶改為lion,群組改為bar復制代碼

【常用參數】

  • -R遞歸設置子目錄和子文件,chown -R lion:lion /home/frankfrank文件夾的用戶和群組都改為lion

文件權限管理

chmod

修改訪問權限。

chmod740file.txt復制代碼

【常用參數】

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

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

[root@lion~]#ls-ldrwxr-xr-x5rootroot4096Apr132020climblrwxrwxrwx1rootroot7Jan1406:41hello2.c->hello.c-rw-r--r--1rootroot149Jan1306:14hello.c復制代碼

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

  • d:表示目錄,就是說這是一個目錄,普通文件是-,鏈接是l。
  • rread表示文件可讀。
  • wwrite表示文件可寫,一般有寫的權限,就有刪除的權限。
  • xexecute表示文件可執行。
  • -:表示沒有相應權限。

權限的整體是按用戶來劃分的,如下圖所示:

61d22e1e-28e0-11ed-ba43-dac502259ad0.jpg

現在再來理解這句權限drwxr-xr-x的意思:

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

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

數字分配權限
權限 數字
r 4
w 2
x 1

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

chmod640hello.c#分析6 = 4 + 2 +0表示所有者具有 rw 權限4 = 4 +0+0表示群組用戶具有 r 權限0=0+0+0表示其它用戶沒有權限對應文字權限為:-rw-r-----復制代碼
用字母來分配權限
  • uuser的縮寫,用戶的意思,表示所有者。
  • ggroup的縮寫,群組的意思,表示群組用戶。
  • oother的縮寫,其它的意思,表示其它用戶。
  • aall的縮寫,所有的意思,表示所有用戶。
  • +:加號,表示添加權限。
  • -:減號,表示去除權限。
  • =:等于號,表示分配權限。
chmodu+rxfile-->文件file的所有者增加讀和運行的權限chmodg+rfile-->文件file的群組用戶增加讀的權限chmodo-rfile-->文件file的其它用戶移除讀的權限chmodg+ro-rfile-->文件file的群組用戶增加讀的權限,其它用戶移除讀的權限chmodgo-rfile-->文件file的群組和其他用戶移除讀的權限chmod+xfile-->文件file的所有用戶增加運行的權限chmodu=rwx,g=r,o=-file-->文件file的所有者分配讀寫和執行的權限,群組其它用戶分配讀的權限,其他用戶沒有任何權限復制代碼

查找文件

locate

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

安裝 locate

yum-yinstallmlocate-->安裝包updatedb-->更新數據庫復制代碼locatefile.txtlocatefil*.txt復制代碼

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

find

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

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

根據文件名查找

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/var/log-name"*syslog*"-->查找包含syslog的文件復制代碼

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

根據文件大小查找

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

根據文件最近訪問時間查找

find-name"*.txt"-atime-7-->近7天內訪問過的.txt結尾的文件復制代碼

僅查找目錄或文件

find.-name"file"-typef-->只查找當前目錄下的file文件find.-name"file"-typed-->只查找當前目錄下的file目錄復制代碼

操作查找結果

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

軟件倉庫

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

Linux的包都存在一個倉庫,叫做軟件倉庫,它可以使用yum來管理軟件包,yumCentOS中默認的包管理工具,適用于Red Hat一族??梢岳斫獬?code style="margin-right:2px;margin-left:2px;padding:2px 4px;max-width:100%;font-size:14px;font-family:'Operator Mono', Consolas, Monaco, Menlo, monospace;color:rgb(233,105,0);background:rgb(248,248,248);">Node.jsnpm。

yum 常用命令

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

切換 CentOS 軟件源

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

1、首先備份系統自帶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.repohttp://mirrors.aliyun.com/repo/Centos-7.repo復制代碼

3、生成緩存

yummakecache復制代碼

閱讀手冊

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

man

安裝更新 man

sudoyuminstall-yman-pages-->安裝sudomandb-->更新復制代碼

man 手冊種類

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

man + 數字 + 命令

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

man3rand-->表示在手冊的第三部分查找rand函數manls-->查找ls用法手冊復制代碼

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

NAME#命令名稱和簡單描述pwd--returnworkingdirectorynameSYNOPSIS#使用此命令的所有方法pwd[-L|-P]DESCRIPTION#包括所有參數以及用法Thepwdutilitywritestheabsolutepathnameofthecurrentworkingdirectorytothestandardoutput.Someshellsmayprovideabuiltinpwdcommandwhichissimilaroridenticaltothisutility.Consultthebuiltin(1)manualpage.Theoptionsareasfollows:-LDisplaythelogicalcurrentworkingdirectory.-PDisplaythephysicalcurrentworkingdirectory(allsymboliclinksresolved).Ifnooptionsarespecified,the-Loptionisassumed.SEEALSO#擴展閱讀相關命令builtin(1),cd(1),csh(1),sh(1),getcwd(3)復制代碼

help

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

Linux 進階

文本操作

grep

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

基礎語法

greptextfile#text代表要搜索的文本,file代表供搜索的文件#實例[root@lion~]#greppath/etc/profilepathmunge(){pathmunge/usr/sbinpathmunge/usr/local/sbinpathmunge/usr/local/sbinafterpathmunge/usr/sbinafterunset-fpathmunge復制代碼

常用參數

  • -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-Epath/etc/profile-->完全匹配pathgrep-E^path/etc/profile-->匹配path開頭的字符串grep-E[Pp]ath/etc/profile-->匹配path或Path復制代碼

sort

對文件的行進行排序。

基礎語法

sortname.txt#對name.txt文件進行排序復制代碼

實例用法

為了演示方便,我們首先創建一個文件name.txt,放入以下內容:

ChristopherShawnTedRockNoahZacharyBella復制代碼

執行sort name.txt命令,會對文本內容進行排序。

常用參數

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

wc

word count的縮寫,用于文件的統計。它可以統計單詞數目、行數、字符數,字節數等。

基礎語法

wcname.txt#統計name.txt復制代碼

實例用法

[root@lion~]#wcname.txt131391name.txt復制代碼
  • 第一個13,表示行數;
  • 第二個13,表示單詞數;
  • 第三個91,表示字節數。

常用參數

  • -l只統計行數,wc -l name.txt
  • -w只統計單詞數,wc -w name.txt
  • -c只統計字節數,wc -c name.txt
  • -m只統計字符數,wc -m name.txt。

uniq

刪除文件中的重復內容。

基礎語法

uniqname.txt#去除name.txt重復的行數,并打印到屏幕上uniqname.txtuniq_name.txt#把去除重復后的文件保存為uniq_name.txt復制代碼

【注意】它只能去除連續重復的行數。

常用參數

  • -c統計重復行數,uniq -c name.txt;
  • -d只顯示重復的行數,uniq -d name.txt

cut

剪切文件的一部分內容。

基礎語法

cut-c2-4name.txt#剪切每一行第二到第四個字符復制代碼

常用參數

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

重定向 管道 流

Linux中一個命令的去向可以有3個地方:終端、文件、作為另外一個命令的入參。61e16852-28e0-11ed-ba43-dac502259ad0.jpg命令一般都是通過鍵盤輸入,然后輸出到終端、文件等地方,它的標準用語是?stdinstdout以及stderr

  • 標準輸入stdin,終端接收鍵盤輸入的命令,會產生兩種輸出;
  • 標準輸出stdout,終端輸出的信息(不包含錯誤信息);
  • 標準錯誤輸出stderr,終端輸出的錯誤信息。
61fdfcd8-28e0-11ed-ba43-dac502259ad0.jpg

重定向

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

輸出重定向>

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

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

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

執行命令:cut -d , -f 1 notes.csv > name.csv最后輸出如下內容:

Mark1Mark2Mark3Mark4Mark5Mark6復制代碼

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

輸出重定向>>

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

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

Mark1Mark2Mark3Mark4Mark5Mark6Mark1Mark2Mark3Mark4Mark5Mark6復制代碼

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

輸出重定向2>

標準錯誤輸出

catnot_exist_file.csv>res.txt2>errors.log復制代碼
  • 當我們cat一個文件時,會把文件內容打印到屏幕上,這個是標準輸出;
  • 當使用了> res.txt時,則不會打印到屏幕,會把標準輸出寫入文件res.txt文件中;
  • 2> errors.log當發生錯誤時會寫入errors.log文件中。

輸出重定向2>>

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

輸出重定向2>&1

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

catnot_exist_file.csv>res.txt2>&1#覆蓋輸出catnot_exist_file.csv>>res.txt2>&1#追加輸出復制代碼

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

6211b84a-28e0-11ed-ba43-dac502259ad0.jpg未命名文件 (2).png

輸入重定向<

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

cat

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

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

輸入重定向<<

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

sort-n<

管道|

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

621e6842-28e0-11ed-ba43-dac502259ad0.jpg未命名文件 (1).png

舉幾個實際用法案例:

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

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

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

查看進程

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

w

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

[root@lion~]#w06:31:53up25days,9:53,1user,loadaverage:0.00,0.01,0.05USERTTYFROMLOGIN@IDLEJCPUPCPUWHATrootpts/0118.31.243.5305:561.00s0.02s0.00sw06:31:53:表示當前時間up 25days,9:53:表示系統已經正常運行了“259小時53分鐘”1user:表示一個用戶load average:0.00,0.01,0.05:表示系統的負載,3個值分別表示“1分鐘的平均負載”,“5分鐘的平均負載”,“15分鐘的平均負載” USER:表示登錄的用于 TTY:登錄的終端名稱為pts/0FROM:連接到服務器的ip地址 LOGIN@:登錄時間 IDLE:用戶有多久沒有活躍了 JCPU:該終端所有相關的進程使用的 CPU 時間,每當進程結束就停止計時,開始新的進程則會重新計時 PCPU:表示 CPU 執行當前程序所消耗的時間,當前進程就是在 WHAT 列里顯示的程序 WHAT:表示當下用戶正運行的程序是什么,這里我運行的是 w復制代碼

ps

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

基礎語法

[root@lion~]#psPIDTTYTIMECMD1793pts/000:00:00bash4756pts/000:00:00ps  PID:進程號,每個進程都有唯一的進程號 TTY:進程運行所在的終端 TIME:進程運行時間 CMD:產生這個進程的程序名,如果在進程列表中看到有好幾行都是同樣的程序名,那么就是同樣的程序產生了不止一個進程復制代碼

常用參數

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

top

獲取進程的動態列表。

top-07:20:07up25days,10:41,1user,loadaverage:0.30,0.10,0.07Tasks:67total,1running,66sleeping,0stopped,0zombie%Cpu(s):0.7us,0.3sy,0.0ni,99.0id,0.0wa,0.0hi,0.0si,0.0stKiBMem:1882072total,552148free,101048used,1228876buff/cacheKiBSwap:0total,0free,0used.1594080availMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND956root10-101339641584810240S0.70.8263:13.01AliYunDun1root2005164436642400S0.00.23:23.63systemd2root200000S0.00.00:00.05kthreadd4root0-20000S0.00.00:00.00kworker/0:0H復制代碼
  • top - 0707 up 25 days, 10:41, 1 user, load average: 0.30, 0.10, 0.07相當w命令的第一行的信息。
  • 展示的這些進程是按照使用處理器%CPU的使用率來排序的。

kill

結束一個進程,kill + PID。

kill956#結束進程號為956的進程kill956957#結束多個進程kill-97291#強制結束進程復制代碼

管理進程

進程狀態

主要是切換進程的狀態。我們先了解下Linux下進程的五種狀態:

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

前臺進程 & 后臺進程

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

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

&

啟動后臺進程,它的缺點是后臺進程與終端相關聯,一旦關閉終端,進程就自動結束了。

cpname.csvname-copy.csv&復制代碼

nohup

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

nohupcpname.csvname-copy.csv復制代碼

nohup命令也可以和&結合使用。

nohupcpname.csvname-copy.csv&復制代碼

bg

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

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

實際案例1:

1.執行grep-r"log"/>grep_log2>&1命令啟動一個前臺進程,并且忘記添加&符號2.ctrl+z使進程狀態轉為后臺暫停3.執行bg將命令轉為后臺運行復制代碼

實際案例2:

前端開發時我們經常會執行yarnstart啟動項目此時我們執行ctrl+z先使其暫停然后執行bg使其轉為后臺運行這樣當前終端就空閑出來可以干其它事情了,如果想要喚醒它就使用fg命令即可(后面會講)復制代碼

jobs

顯示當前終端后臺進程狀態。

[root@lion~]#jobs[1]+Stoppedtop[2]-Runninggrep--color=auto-r"log"/>grep_log2>&1&復制代碼

fg

fg使進程轉為前臺運行,用法和bg命令類似。

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

622ddfac-28e0-11ed-ba43-dac502259ad0.jpg

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

守護進程

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

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

systemd

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

[root@lion~]#ps-auxUSERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDroot10.00.2516483852?SsFeb011:50/usr/lib/systemd/systemd--switched-root--system--deserialize22復制代碼

通過命令也可以看到PID為1的進程就是systemd的系統進程。

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

systemctlstartnginx#啟動服務systemctlstopnginx#停止服務systemctlrestartnginx#重啟服務systemctlstatusnginx#查看服務狀態systemctlreloadnginx#重載配置文件(不停止服務的情況)systemctlenablenginx#開機自動啟動服務systemctldisablenginx#開機不自動啟動服務systemctlis-enablednginx#查看服務是否開機自動啟動systemctllist-unit-files--type=service#查看各個級別下服務的啟動和禁用情況復制代碼

文件壓縮解壓

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

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

623c4934-28e0-11ed-ba43-dac502259ad0.jpg未命名文件.png

tar

創建一個tar歸檔。

基礎用法

tar-cvfsort.tarsort/#將sort文件夾歸檔為sort.tartar-cvfarchive.tarfile1file2file3#將file1file2file3歸檔為archive.tar復制代碼

常用參數

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

gzip / gunzip

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

gziparchive.tar#壓縮gunziparchive.tar.gz#解壓復制代碼

tar 歸檔+壓縮

可以用tar命令同時完成歸檔和壓縮的操作,就是給tar命令多加一個選項參數,使之完成歸檔操作后,還是調用gzipbzip2命令來完成壓縮操作。

tar-zcvfarchive.tar.gzarchive/#將archive文件夾歸檔并壓縮tar-zxvfarchive.tar.gz#將archive.tar.gz歸檔壓縮文件解壓復制代碼

zcat、zless、zmore

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

zcatarchive.tar.gz復制代碼

zip/unzip

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

命令安裝

#RedHat一族中的安裝方式yuminstallzipyuminstallunzip復制代碼

基礎用法

unziparchive.zip#解壓.zip文件unzip-larchive.zip#不解開.zip文件,只看其中內容zip-rsort.zipsort/#將sort文件夾壓縮為sort.zip,其中-r表示遞歸復制代碼

編譯安裝軟件

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

編譯安裝

簡單來說,編譯就是將程序的源代碼轉換成可執行文件的過程。大多數Linux的程序都是開放源碼的,可以編譯成適合我們的電腦和操縱系統屬性的可執行文件。

基本步驟如下:

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

實際案例

1、下載

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

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

scp文件名用戶名@服務器ip:目標路徑scp~/Desktop/htop-3.0.0.tar.gzroot@121.42.11.34:.復制代碼

也可以使用wegt進行下載:

wegt+下載地址wegthttps://bintray.com/htop/source/download_file?file_path=htop-3.0.0.tar.gz復制代碼
2、解壓文件
tar-zxvfhtop-3.0.0.tar.gz#解壓cdhtop-3.0.0#進入目錄復制代碼
3、配置

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

4、編譯

執行make命令

5、安裝

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

網絡

ifconfig

查看ip網絡相關信息,如果命令不存在的話, 執行命令yum install net-tools安裝。

[root@lion~]#ifconfigeth0:flags=4163mtu1500inet172.31.24.78netmask255.255.240.0broadcast172.31.31.255ether00:16:3e:04:9c:cdtxqueuelen1000(Ethernet)RXpackets1592318bytes183722250(175.2MiB)RXerrors0dropped0overruns0frame0TXpackets1539361bytes154044090(146.9MiB)TXerrors0dropped0overruns0carrier0collisions0lo:flags=73mtu65536inet127.0.0.1netmask255.0.0.0looptxqueuelen1000(LocalLoopback)RXpackets0bytes0(0.0B)RXerrors0dropped0overruns0frame0TXpackets0bytes0(0.0B)TXerrors0dropped0overruns0carrier0collisions0復制代碼

參數解析:

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

host

ip地址和主機名的互相轉換。

軟件安裝

yuminstallbind-utils復制代碼

基礎用法

[root@lion~]#hostgithub.combaidu.comhasaddress13.229.188.59[root@lion~]#host13.229.188.5959.188.229.13.in-addr.arpadomainnamepointerec2-13-229-188-59.ap-southeast-1.compute.amazonaws.com.復制代碼

ssh 連接遠程服務器

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

ssh用戶@ip:port1、sshroot@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文件的常用配置參數】

服務端 config 參數 作用
Port sshd 服務端口號(默認是22)
PermitRootLogin 是否允許以 root 用戶身份登錄(默認是可以)
PasswordAuthentication 是否允許密碼驗證登錄(默認是可以)
PubkeyAuthentication 是否允許公鑰驗證登錄(默認是可以)
PermitEmptyPasswords 是否允許空密碼登錄(不安全,默認不可以)

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

【客戶端config文件的常用配置參數】

客戶端 config 參數 作用
Host 別名
HostName 遠程主機名(或 IP 地址)
Port 連接到遠程主機的端口
User 用戶名

配置當前用戶的config

#創建configvim~/.ssh/config#填寫一下內容Hostlion#別名HostName172.x.x.x#ip地址Port22#端口Userroot#用戶復制代碼

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

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

免密登錄

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

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

基于密鑰驗證原理

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

具體實現步驟

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

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

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

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

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

執行完成后,運行ssh root@172.x.x.x就可以實現免密登錄服務器了。

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

wget

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

wget[參數][URL地址]wgethttp://www.minjieren.com/wordpress-3.1-zh_CN.zip復制代碼

wget非常穩定,如果是由于網絡原因下載失敗,wget會不斷嘗試,直到整個文件下載完畢。

常用參數

  • -c繼續中斷的下載。

備份

scp

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

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

scpsource_filedestination_file#source_file表示源文件,destination_file表示目標文件復制代碼

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

scpfile.txtroot@192.168.1.5:/root#表示把我的電腦中當前文件夾下的file.txt文件拷貝到遠程電腦scproot@192.168.1.5:/root/file.txtfile.txt#表示把遠程電腦上的file.txt文件拷貝到本機復制代碼

rsync

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

軟件安裝

yuminstallrsync復制代碼

基礎用法

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

常用參數

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

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

系統

halt

關閉系統,需要root身份。

halt復制代碼

reboot

重啟系統,需要root身份。

reboot
復制代碼

poweroff

直接運行即可關機,不需要root身份。

Vim 編輯器

Vim 是什么?

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

Vim 常用模式

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

交互模式

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

例如執行vim name.txt則會進入交互模式。

交互模式特征:

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

插入模式

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

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

命令模式

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

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

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

用一張圖表示三種模式如何切換:62486ad4-28e0-11ed-ba43-dac502259ad0.jpg

基本操作

打開 Vim

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

插入

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

移動

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

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

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

跳至行首和行末

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

按單詞移動

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

退出文件

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

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

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

標準操作

刪除字符

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

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

刪除(剪切)單詞,行

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

復制單詞,行

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

粘貼

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

替換一個字符

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

撤銷操作

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

重做

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

跳轉到指定行

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

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

  • 跳轉到指定行:數字+gg,例如7gg,表示跳轉到第7行。
  • 要跳轉到最后一行,按下G。
  • 要跳轉到第一行,按下gg。

高級操作

查找

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

  • n跳轉到下一個匹配項;
  • N跳轉到上一個匹配項。

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

查找并替換

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

#語法:s/舊字符串/新字符串#實例:s/one/two復制代碼

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

#語法:s/舊字符串/新字符串/g復制代碼

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

#語法:n,ms/舊字符串/新字符串/g#實例:2,4s/one/two/g復制代碼

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

#語法:%s/舊字符串/新字符串/g復制代碼

合并文件

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

:rfilename#可以用Tab鍵來自動補全另外一個文件的路徑
復制代碼

分屏

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

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

分屏模式下的快捷鍵

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

運行外部命令:!

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

例如:

:!ls#在Vim中打開的文件所在的目錄運行ls命令
復制代碼

可視模式

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

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

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

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

1.ctrl+v進入塊可視模式
2.使用方向鍵進行選中(上下左右)假設選中53.輸入I鍵進行多行同時插入操作
4.插入完成后連續按兩下esc鍵,實現多行同時插入相同字符
復制代碼

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

  • d鍵,表示刪除選中;
  • I鍵,表示在選中之前插入;
  • u鍵,表示選中變為小寫;
  • U鍵,表示選中變為大寫;

Vim 配置

選項參數

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

.vimrc

setnumber"顯示行號
syntaxon"激活語法高亮
setshowcmd"實時看到輸入的命令
setignorecase"搜索時不區分大小寫
setmouse=a"激活鼠標,用鼠標選中時相當于進入可視模式
復制代碼

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

總結

相信通過本文的學習,你應該會對Linux有一個更加全面的認識。

都看到這里了,就點個 吧。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11229

    瀏覽量

    208927
  • 操作系統
    +關注

    關注

    37

    文章

    6738

    瀏覽量

    123190

原文標題:總結

文章出處:【微信號:嵌入式悅翔園,微信公眾號:嵌入式悅翔園】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    全志T113-S3板載Linux系統信息查詢

    包含多個內置命令,可幫助我們熟悉正在使用的軟件和硬件平臺。為了全面了解如何查看Linux系統的各種信息,下面的內容將詳細介紹各個方面的查詢命令和方法。產品簡介眺望電子E
    的頭像 發表于 11-22 01:07 ?76次閱讀
    全志T113-S3板載<b class='flag-5'>Linux</b>系統信息查詢

    【免費分享】嵌入式Linux開發板【入門+項目,應用+底層】資料包網打盡,附教程/視頻/源碼...

    ?想要深入學習嵌入式Linux開發嗎?現在機會來了!我們為初學者們準備了全面的資料包,包括原理圖、教程、課件、視頻、項目、源碼等,所有資料全部免費領取,課程視頻可試看(購買后看完整版),讓你
    的頭像 發表于 09-05 10:45 ?253次閱讀
    【免費分享】嵌入式<b class='flag-5'>Linux</b>開發板【入門+項目,應用+底層】資料包<b class='flag-5'>一</b>網打盡,附教程/視頻/源碼...

    《嵌入式機電體化系統設計與實現》讀后感

    更為深刻的理解。這本書不僅理論扎實,而且實踐性強,通過詳細的案例分析和操作步驟,為讀者展現了完整的設計和實現流程。 首先,本書開篇即對嵌入式系統進行了全面的概述,讓我對“嵌入”這
    發表于 08-21 08:45

    有沒有大佬認識這個元器件,是不是NMOS管?

    有沒有大佬認識這個元器件,上面的小電阻基本是0歐,與元器件的上面兩小觸點相連,與電池的正極相連,下面的兩個大觸點目前不確定是什么,有
    發表于 07-22 10:55

    英偉達將全面轉向開源GPU內核模塊

    英偉達公司近期宣布了項重大決策,即全面轉向開源GPU內核模塊,并計劃最終以此取代閉源驅動程序。這戰略轉變標志著英偉達在開源領域邁出了重要步,旨在為用戶提供更強大、更
    的頭像 發表于 07-19 15:26 ?537次閱讀

    必看!光伏并網逆變器的3典型認識誤區

    必看!光伏并網逆變器的3典型認識誤區-古瑞瓦特 逆變器作為光伏系統的中樞控制器,對整個系統的運行和產出起到關鍵作用。當系統出現待機、停機、告警、故障、發電量未達預期、數據監控中斷等問題時,運維人員
    的頭像 發表于 07-11 16:32 ?705次閱讀
    必看!光伏并網逆變器的3<b class='flag-5'>個</b>典型<b class='flag-5'>認識</b>誤區

    非常全面的傳感器工作原理圖

    今天和大家分享波傳感器的工作原理圖,非常全面
    發表于 04-29 11:06 ?714次閱讀
    非常<b class='flag-5'>全面的</b>傳感器工作原理圖

    Nullmax旗下智能駕駛方案MaxDrive憑借全面的行泊體優勢獲獎

    4月26日上午,由中國國際貿促會汽車行業委員會指導、汽車觀察主辦的「智輅獎?2024 中國汽車智能創新技術評選」在北京車展現場公布最終獲獎名單,Nullmax旗下平臺型智能駕駛方案MaxDrive憑借全面的行泊體優勢獲獎。
    的頭像 發表于 04-28 14:24 ?452次閱讀
    Nullmax旗下智能駕駛方案MaxDrive憑借<b class='flag-5'>全面的</b>行泊<b class='flag-5'>一</b>體優勢獲獎

    尋找能夠PID調節的仿真軟件

    最近想學習些有關PID調節的知識,有沒有些相關資料推薦?文章書籍什么隨便都可以;還有就是尋找幾款有關PID在線調節的網址或者軟件,能夠使我對PID的調節過程有詳細
    發表于 02-29 22:44

    知語云全景監測技術:現代安全防護的全面解決方案

    隨著信息技術的飛速發展,網絡安全問題日益突出,企業和個人對安全防護的需求也越來越迫切。在這個背景下,知語云全景監測技術應運而生,為現代安全防護提供了全面而高效的解決方案。 知語云全景監測技術
    發表于 02-23 16:40

    linux和windows的區別 linux系統般用來干嘛

    Linux的設計理念 Linux開源操作系統,其設計理念是自由、共享和開放。Linux系統遵循類Unix的設計原則,注重系統的穩定性
    的頭像 發表于 02-05 14:06 ?878次閱讀

    較為全面的倉庫溫濕度管理知識

    溫濕度管理是倉庫管理中的重要環節,它關乎著貨品質量的安全。同時,做好溫濕度管理更是訂單能夠及時履行的關鍵所在。很多倉庫管理人員大致了解些關于溫濕度管理方面的知識,但還不夠全面。搜集總結
    的頭像 發表于 01-27 00:00 ?1996次閱讀
    較為<b class='flag-5'>全面的</b>倉庫溫濕度管理知識

    Linux常用命令自學手冊》+試讀報告

    命令的講解都包括命令的來源、功能、參數說明以及執行結果的說明。這種全面的解釋可以幫助讀者更好地理解命令的用途和用法。同時,作者還通過實例和練習來幫助讀者加深對命令的理解和應用。 此外,這本書還包含了
    發表于 12-14 16:59

    freebsd為什么比linux穩定

    FreeBSD是自由、開源的類Unix操作系統,它以其卓越的穩定性而聞名。與Linux相比,FreeBSD在穩定性方面有以下幾個方面的優勢: 代碼質量和設計哲學:FreeBSD的內
    的頭像 發表于 12-08 10:27 ?1498次閱讀

    ADI與戰略合作伙伴共同開發全面的集成式電機控制設計程序

    電子發燒友網站提供《ADI與戰略合作伙伴共同開發全面的集成式電機控制設計程序.pdf》資料免費下載
    發表于 11-29 09:11 ?2次下載
    ADI與戰略合作伙伴共同開發<b class='flag-5'>全面的</b>集成式電機控制設計程序