Linux入門

来源:https://www.cnblogs.com/l-y-h/archive/2019/08/30/11436870.html
-Advertisement-
Play Games

一、Linux 1、什麼是Linux 是一款操作系統,免費、開源、高效、穩定、處理高併發性能強。 2、Linux目錄結構 Linux目錄結構,可以看成是一種樹形結構。其中最頂端使用 “/”表示,稱為根目錄。由於Linux是開放源代碼的,不同的公司會根據Linux的核心代碼進行修改,如果不對目錄的功能 ...


一、Linux

1、什麼是Linux

  是一款操作系統,免費、開源、高效、穩定、處理高併發性能強。

2、Linux目錄結構

  Linux目錄結構,可以看成是一種樹形結構。其中最頂端使用 “/”表示,稱為根目錄。由於Linux是開放源代碼的,不同的公司會根據Linux的核心代碼進行修改,如果不對目錄的功能進行描述、約束,那麼使用者使用不同公司開發的Linux系統時,會崩潰、懵逼的。所以需要對Linux的目錄作用有個大概的瞭解。
常用目錄:
(1)根目錄(/):最重要的目錄,相當於Windows系統中的C盤。所有的目錄都是由根目錄衍生出來的, 同時根目錄也與開機/還原/系統修複等動作有關。

(2)/bin:用於存放一些常用指令的目錄。
  比如cat,chmod(修改許可權), chown, date, mv, mkdir, cp, bash等等常用的指令。

(3)/sbin:用於存放系統管理員才能使用的指令的目錄。(系統管理員用其設定系統,其他使用者最多只能用來查詢)
  比如:常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。

(4)/home:用於存放普通用戶的主(家)目錄。
  註:~ :代表當前使用者的家目錄,而 ~guest:則代表用戶名為guest的家目錄。

(5)/root:用於存放系統管理員的主目錄。

(6)/lib:用於存放開機所需的函數庫,所有的應用程式都需要用到這些函數庫。
  比如:/lib/modules/這個目錄,會放置核心相關的模組(驅動程式)。

(7)/lost+found:這個目錄一般是空的,但是系統非法關機後,這個目錄會存放一些文件。

(8)/etc:用於存放所有的配置文件和子目錄。

(9)/usr:用於存放應用程式的目錄。
  註意:不是user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是Unix操作系統軟體資源所放置的目錄,而不是用戶的數據。相當於Windows系統中的Program files目錄。

(10)/boot:用於存放啟動Linux時使用的一些核心文件,比如一些連接文件以及鏡像文件。

(11)/proc:是一個虛擬的目錄,用來存放系統記憶體的映射,訪問這個目錄可以獲取系統信息。

(12)/srv:是service的縮寫,該目錄存放的是一些服務啟動後需要提取的數據。

(13)/sys:與/proc類似,一個虛擬的目錄,記錄與核心相關的信息。

(14)/tmp:用來存放臨時文件的一個目錄。

(15)/dev:類似於Windows的設備管理器,把所有的硬體用文件的形式存儲。

(16)/media:自動識別媒體設備,比如U盤,光碟機等,識別後,會掛載到此目錄。

(17)/mnt:暫時掛載某些額外的設備,類似於/media。

(18)/opt:當安裝額外的軟體時,可以放在該目錄下,預設為空,也可放在/usr/local目錄下。

(19)/usr/local:類似於/opt。

(20)/var:針對動態性文件,比如緩存、日誌等經常變化的文件,可以存放在此處。
註:
  /usr是安裝時會占用較大硬碟容量的目錄,/var是在系統運作後才會漸漸占用硬碟容量的目錄。

3、根目錄下必須存在的目錄

  根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分區則是在開機完成之後才會持續的進行掛載的行為。就是因為如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分區去。
目錄:
(1)/etc:開機所需配置文件。
(2)/bin:開機所需命令。
(3)/dev:開機所需要的裝置文件。
(4)/lib:開機所需的函式庫與核心所需的模塊。
(5)/sbin:開機所需的系統執行文件

4、絕對路徑、相對路徑

(1)絕對路徑:指文件或目錄在硬碟上的絕對位置。(以/開頭)。 例如: /usr/local
(2)相對路徑:指文件或目錄相對於當前工作目錄的位置。(不以/開頭)。例如:./local
註:
  . :代表當前的目錄,也可以使用 (./ ) 來表示;
  .. :代表上一層目錄,也可以 (../ )來代表。

 

二、vi、vim

1、什麼是vi?

  vi是一個Linux內嵌的一個文本編輯器。

2、什麼是vim?

  vim可以看成是vi的增強版,具有程式編輯的能力,可以主動以字體顏色區分語法的正確性,方便程式設計、代碼補充、編譯以及錯誤跳轉等常用編程的功能。

3、vi與vim的三種常見模式

(1)正常模式
  即正常打開一個文件,可以使用快捷鍵進行上下左右移動以及粘貼複製操作。

(2)插入模式(編輯模式)
  按下 i, I, o , O, a, A, r, R 中任意一個字母後(一般按 i),會進入一個編輯狀態,此時可以修改文件。

(3)命令模式
  此模式提供相關指令,完成讀取、存檔、替換、顯示文件行號、離開vim編輯器等操作。

【舉例:新建一個helloWorld.java】
在終端輸入
    vim helloWorld.java         
    #若當前helloWorld.java文件不存在,則會創建一個。
    此時進入 正常模式。
    
    輸入 i 可以進入 編輯模式。
    class helloWorld{
        public static void main(String[] args){
            System.out.println("helloWorld");
        }
    }
    
    按下ESC,可以退出編輯模式,進入命令模式。
    輸入 
        :wq   保存文件並退出
        :q    對於未修改的文件,可以直接退出,若已經修改文件,會提示進行 :q! 操作
        :q!   強制退出文件,不保存文件。

4、常用快捷鍵(命令)的使用

(1)拷貝、粘貼行
  在命令模式下輸入快捷鍵(命令)。若處於編輯模式,使用ESC退出即可。
拷貝:
  輸入 yy 可以拷貝一行(拷貝游標所在當前行),
  輸入 5yy 可以從當前行開始向下拷貝5行。
粘貼:
  輸入 p 可以粘貼拷貝的數據。

yy
5yy
p

(2)刪除行
  在命令模式下輸入快捷鍵(命令)。若處於編輯模式,使用ESC退出即可。
  輸入 dd 可以刪除一行(刪除游標所在當前行)。
  輸入 5dd 可以從當前行開始向下刪除5行。

dd
5dd

(3)查找某個關鍵字
  在命令模式下輸入快捷鍵(命令)。若處於編輯模式,使用ESC退出即可。
  輸入 /關鍵字, 然後回車,即可開始查找 關鍵字。 若有多個數據時,輸入 n 即可查找下一個。

 /關鍵字     比如 : /hello
 n

(4)設置文件行號、取消文件的行號
  在命令模式下輸入快捷鍵(命令)。若處於編輯模式,使用ESC退出即可。
  輸入 :set nu 顯示文件行號
  輸入 :set nonu 不顯示文件行號

:set nu
:set nonu

(5)快速定位到文檔首行 或者 尾行。
  正常模式下輸入:
  G 快速定位到文檔末尾行。
  gg 快速定位到文檔首行。

G
gg

(6)快速定位到某行
  非編輯模式下:
  比如定位到 第 20 行,
    step1:可以使用 :set nu 顯示行號,
    step2:然後輸入 20 這個數。
    step3:按住 shift + g 可以 切換到第 20 行。

(7)撤銷某次編輯操作。
  若某次編輯文件後,想回退回上個版本。
  首先ESC退出編輯,然後輸入 u 即可回退回上個版本。


三、重啟、關機、用戶註銷命令

1、shutdown

shutdown -h now         表示立即關機
shotdown -h 1           表示1分鐘後關機
shotdown -r now         表示立即重啟

2、halt

halt          表示立即關機
    等價於
shutdown -h now         表示立即關機

3、reboot

reboot        表示立即重啟
    等價於
shotdown -r now         表示立即重啟

4、sync

sync          表示將記憶體中的數據同步到磁碟,防止數據丟失。
註:
    不管是重啟系統還是關閉系統,應該首先運行 sync 命令,將記憶體中的數據寫入磁碟。

5、logout

logout        表示註銷當前用戶的登錄狀態,
只適用於遠程登錄(比如使用Xshell5遠程連接Linux,在Xshell5中輸入logout可以註銷當前用戶連接)

 

四、用戶管理

1、基本介紹

  Linux系統是一個多用戶多任務的操作系統(即Linux 系統支持多個用戶在同一時間內登陸,不同用戶可以執行不同的任務,並且互不影響。),任何一個需要使用該系統資源的用戶,均需要向系統管理員申請一個賬號,然後根據這個賬號進入系統。每個賬號對應一個 /home/ 目錄, 不同的賬號登錄系統後,會進入不同的 /home/ 。

2、添加用戶

useradd 用戶名           #此時會預設在  /home 下創建一個與 用戶名 同名的 文件夾
useradd -d 指定目錄 用戶名   #此時會預設在  /home 下創建一個 指定目錄名的文件夾

即:
    useradd tom    #此時會預設創建一個  /home/tom
    useradd -d /home/jarry jarry   #此時會創建一個  /home/jarry, 若文件已存在,可能會出現一些問題。

3、指定用戶密碼

passwd 用戶名     #給用戶指定密碼,此時輸入密碼不可見

4、刪除用戶

userdel 用戶名      #刪除用戶,但不刪除家目錄
userdel -r 用戶名      #刪除用戶,同時刪除家目錄(一般不進行此操作)

即:
    userdel tom    #此時會刪除用戶,但是仍然存在  /home/tom
    userdel -r tom  #此時會刪除用戶,且刪除 /home/tom

5、查詢用戶信息

id 用戶名         #用於查詢用戶的信息。若用戶不存在,則提示無此用戶。
會列印出 uid, gid, 以及 組 的相關信息。
其中:
    uid:指的是用戶的 id 號
    gid:指的是用戶所在組的 id 號。
    組: 指的是組的名稱

6、切換用戶

  在Linux操作系統中,如果當前用戶的許可權不夠,可以使用 su - 用戶名, 來切換到高許可權的用戶(比如切換到 root 上)。
註:
  許可權高的用戶切換到許可權低的用戶,不需要密碼,反之需要。

su - tom    #切換到tom用戶,此時不能訪問 /root/ 目錄,會有提示信息。
exit        #退回到原來的用戶,比如root,此時可以訪問 /root/ 目錄。

7、查看當前登錄的用戶

whoami      #用於查看當前用戶

8、用戶組

  用戶組是具有相同特征用戶的邏輯集合。簡單的理解,有時我們需要讓多個用戶具有相同的許可權,比如查看、修改某一個文件的許可權,一種方法是分別對多個用戶進行文件訪問授權,如果有 10 個用戶的話,就需要授權 10 次,那如果有 100、1000 甚至更多的用戶呢?

  顯然,這種方法不太合理。最好的方式是建立一個組,讓這個組具有查看、修改此文件的許可權,然後將所有需要訪問此文件的用戶放入這個組中。那麼,所有用戶就具有了和組一樣的許可權,這就是用戶組。

groupadd 組名        #創建一個組 
groupdel 組名        #刪除一個組

【在創建用戶的同時指定用戶組】
groupadd 組名        #創建一個組 
useradd -g 組名 用戶名   #在創建用戶的同時指定用戶組

【修改(切換)用戶的用戶組】
usermod -g 組名 用戶名    #修改用戶的用戶組

9、用戶和組的相關文件

/etc/password     #用戶的配置文件,記錄用戶的各種信息
    包含:用戶名、口令(密碼)、用戶標識號、組標識號、註釋性描述、主目錄。
    
/etc/shadow       #口令(密碼)的配置文件
    包含:登錄名、加密口令、最後一次修改時間、最小時間間隔、最大時間間隔、警告時間、不活動時間、失效時間、標誌。

/etc/group        #組的配置文件,記錄Linux的組的信心
    包含:組名、口令、組標識號、組內用戶列表。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先新建一個窗體應用程式,在項目屬性中點擊右鍵->添加->添加新項,選擇Windows窗體->添加。 在Form1和Form2視窗中各添加一個按鈕,並雙擊添加事件處理函數: 父視窗Form1的按鈕處理函數,打開子視窗Form2,另外定義一個顯示消息框的方法供子視窗調用(定義為public才能被調用) ...
  • 場景 在Winform的窗體A中打開另一個窗體B。 實現 效果 以上代碼的實現參照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100140716 ...
  • 場景 Winform中實現ZedGraph中曲線右鍵顯示為中文: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292 在上面實現將ZedGraph的右鍵顯示為中文後,再實現自定義菜單的添加。 效果 源碼下載 http ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 碼雲:https://gitee.com/kwwwvagaa/net_winform_custom_contr ...
  • 在 上一篇 中講到了在NetCore項目中如何配置NLog將日誌存到資料庫,這篇中將講述如何處理自定義拋出的異常以及未處理的異常,並通過日誌記錄下來。 為什麼要進行異常的全局處理和記錄日誌呢? 在實際的軟體項目開發與迭代中,無論程式員是久經沙場的老將,還是初出茅廬的萌新,出現異常(尤其是空指針異常) ...
  • 前言 開發時一定要用管理員模式打開VS或者VSCODE進行開發,同時不要在nuget上直接下載,要去github上下載源代碼調試。第一方便調試,第二Surging迭代較快,nuget版本往往不是最新的。 錯誤 問題:fail: Surging.Core.DotNetty.DotNettyServer ...
  • Note: '=> ' 表示返回值 參考資料:請點擊這裡! 1:創建Xml文檔 2:寫Xml文檔(必須保證有根元素) XmlDocument Xd (實例化一個對象) CreateXmlDeclaration => XmlDecalration (文檔聲明) Xd.AppendChild (添加節點 ...
  • 前端頁面:.aspx <asp:CheckBoxList ID="ckbdot" runat="server" RepeatDirection="Horizontal" Style=" display: inline-block; vertical-align: middle;" CellPaddi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...