0.0 系統的認識#
- 什麼是系統?
- 滑鼠能點、鍵盤能輸入東西、閱讀看電影,還可以拓展安裝一些軟體,簡單來說就是人機互動所依賴的東西,開機依賴系統
0.1 Linux 操作系統認識,以及開源的提出:Linux 的千奇百怪的版本#
- 目前世界上流行的電腦系統:
- Windows- Bill Gates (比爾・蓋茨)
- GNU/Linux-Linus Benedict Torvalds (林納斯・托瓦茲)- 開源
- Unix (Linux 的爸爸)- 湯普遜和里奇合 - 給政府機關、公司等機構付費使用
- Linux 發行版本:Ubuntu Centos Red Hat Kali ……
0.2 開源的含義#
- 公开、分享、共同進步
- 開源不一定免費
0.3 Linux 的用途,各類發行版本#
- Linux 主要運用在伺服器上
- Linux 嚴格來說是單指操作系統的內核,因操作系統中包含了許多用戶圖形介面和其他實用工具
只要遵循 GNU 通用公共許可證(GPL),任何個人和機構都可以自由地使用 Linux 的所有底層源代碼,也可以自由地修改和再發布
Linux 衍生: - Debian—Ubuntu,Deepin,Raspberry Pi OS,Knopix
Fedora—RedHat,Centos,Moblin
OpenSUSE—GeckoLinux,openSUSE EcoLab Spin
1.1 Vmware 虛擬機#
安裝系統的方式
-
實體機
-
雙系統
-
虛擬機
1.2 VMware 16#
- 軟體版本,大多數人追求新版本,企業裡更多需要的是穩定,我們應該根據企業標準去學習,企業要什麼我們學什麼
1.3 關於從 15 更新到 16 的說法#
-
Vmware15 不支持 Ubuntu20.04
更新版本並不會影響虛擬機的還原
2.1 先嘗試 Ubuntu#
詳見:Linux (Ubuntu) 零基礎體驗教學
PS:查看軟體安裝過執行內容,有助於學習
2.2 VMware Tools#
- 配置 Ubuntu 鏡像源
- VMware Tools 安裝
tar zxvf VMwareTools-10.3.22-15902021.tar.gz \
cd vmware-tools-distrib/
ls
sudu ./vmware-install.pl
2.3 Ubuntu 20.04 設置#
詳見 2.1 視頻鏈接
2.4 Linux 其他發行版本的安裝指導#
- 商業發行版
- 社區發行版
2.5 下載指導#
- 從官网下载
3.1 Linux 究竟需要我們學習什麼?——Linux 四大組成部分#
Linux 入門不是學 “Linux”,先體驗各發行版 Linux,比較和其他系統的不同和相同點,Linux 究竟學習的是 Shell
Linux 操作系統四個部分
- Linux Kernel 內核
- GNU (“GNU’s Not Unix!”) 工具
- GUI Desktop 環境
- Application 應用
- PS:IT 術語,它並不是遵循通常的英語音標,而是專業術語
3.2 Linux 是命令還是圖形介面?——GUI 是什麼? 那 GNU 是什麼東西?GNU/Linux 和 Linux 有什麼區別?#
Linux 內核基於
-
GUI - 介面
-
GNU - 命令、系統工具
3.3 Linux 內核組成部分#
Linux Kernel
- 1. 硬體設備的管理
- 2. 軟體程序 (系統)、操作軟體
- 3. 系統內存
- 4. 文件管理
3.4 文件系統#
文件系統就是讀、寫標準
- Linux 中分區概念 ext ext2 ext3 ext4
- Windows 磁碟文件管理概念 FAT32 NTFS exFAT
3.5 GNU 核心: coreutils and shell#
GNU 組織
Unix 上具有的一些軟體,Linux 內核本身沒有,所以 GNU 他們模仿 Unix,為 Linux 寫了一些必要的軟體
GNU 核心 Coreutils
指原本在 Unix 上的一些命令和工具,被移植到了 Linux 上,供 Linux 使用的一套工具、coreutilities 軟體包,包括:
-
用來處理文件的工具
-
用來操作文本的工具
-
用來管理進程的工具
-
GNU 核心 Shell
-
提供給用戶使用的軟體,用戶拿它使用電腦,實現互動
-
命令行殼層提供一個命令行介面(CLI)
-
圖像殼層提供一個圖形用戶介面(GUI)
3.6 Shell:CLI 和 GUI,命令和介面#
Shell 類型:bash,zsh,korn,tcsh,oh-my-zsh
3.7 GUI Desktop#
Xwindows,KDE,GNOME,Unity
結束語:經驗介紹
重點在於 Shell
畫思維圖總結 Linux 操作系統關係
4.1 CLI 準備#
- CLI 相關設置,選擇 Preferences
- Theme Variant 主題變換
Open new terminals in 打開一個新終端的方式,Tab 代表在同一窗口下創建新終端,Window 代表開一個新窗口打開新終端
New tab position 新終端位置,默認為上一次位置 - 快捷方式設置,Ctrl+Alt+T 打開新終端
4.2 CLI Terminal#
yeats@yeats-virtual-machine:~$
- 用戶名 @機器名:當前所在目錄 $ 表示等待用戶輸入
- ~ 表示用戶 home 目錄
/home
是存放所有用戶文件的根目錄
Settings 中 About 可以查看機器名與相關信息
4.3 搞定 Linux 命令參數,得心應手使用各類命令 —— 授之於漁 先拿 ls 開張#
ls
命令 用來顯示目標列表,在 Linux 中是使用率較高的命令ls -l
的縮寫就是 ll ,列出當前目錄可見文件詳細信息,輸出的信息從左到右依次包括文件名、文件類型、權限、硬鏈接數、所有者名、組名、大小(byte)man
命令是 Linux 下的幫助指令,通過 man 指令可以查看 Linux 中的指令幫助、配置文件幫助和編程幫助等信息
推薦:Linux 命令搜索
4.4 Linux 根目錄,它們和 Windows 有什麼區別#
- Windows 盤符,文件目錄 \ 反斜線
- Linux 一切皆文件,文件目錄 / 斜線
4.5 Linux 根目錄解析,fhs 權威論文,搞定所有的發行版本文件夾分布#
/ linux
根目錄/bin
二進制目錄 GUN 工具 命令/cdrom
光碟/etc
系統配置文件/home
用戶主目錄/lib
庫目錄 存放庫文件/lost+found
當系統發生錯誤時,將一些遺失的片段放置在這個目錄下/mnt
掛載(外在的設備和電腦進行連接)目錄/proc
假文件系統/run
運行目錄/snap
包管理,軟體包安裝管理方式/tmp
臨時目錄/var
可變目錄/boot
啟動目錄/dev
設備目錄/media
媒體目錄/opt
可選目錄/root
root 用戶的主目錄 管理員/sbin
系統二進制目錄,GNU 高級管理員使用的命令或工具/srv
服務目錄/usr
用戶二進制目錄,GNU 工具- 詳見:FHS 文件系統層級標準
4.6 cd 命令#
cd
進入用戶主目錄cd..
切換到上一層cd –
返回到上一次的工作目錄。
4.7 Ctrl + C? 拉到吧,在 Linux 上可不是複製#
- Ctrl+c (kill foreground process) 發送 SIGINT 信號給前台進程組中的所有進程,強制終止程序的執行
- Ctrl+l 清屏
4.8 絕對路徑#
- 全路徑 D:\Study\Frank_FuckPPT\Linux
4.9 相對路徑#
- 不全路徑 \Frank_FuckPPT\Linux
4.10 Linux 上的路徑與 Windows 上的路徑#
gedit /Doucument/doc/1.txt
操作根目錄 絕對路徑gedit ~/Document/doc/1.txt
當前目錄 相對路徑gedit ./Document/doc/1.txt
當前目錄 相對路徑gedit Document/doc/1.txt
當前目錄 相對路徑
4.11 如何練習?經驗課#
- 單點符號。當前文件
- 雙點符號.. 當前目錄的父目錄
4.12 ls 進階用法:文件夾下各種匹配過濾符號#
*
號替代多個符號?
號替代一個符號-a,,--all
列出目錄中所有文件,包括以 “.” 開頭的文件-l, --format=long,--format=verbose
除每個文件名外,增加顯示文件類型、權限、硬鏈接數等信息-F,--classify, --file-type
在每個文件名後附上一个字符以說明該文件的類型
4.13 touch 命令#
touch
命令 兩個功能
- 一是用於把已存在文件的時間標籤更新為系統當前的時間(默認方式)
- 二是用來創建新的空文件
4.14 cp 命令#
cp
命令 將源文件或目錄複製到目標文件或目錄中- 源文件:指定源文件列表。默認情況下,cp 命令不能複製目錄,如果要複製目錄,則必須使用 - R 選項
- 目標文件:指定目標文件。當 “源文件” 为多個文件時,要求 “目標文件” 为指定的目錄
cp
你想複製的文件? 你想複製到哪?- -i 覆蓋既有文件之前先詢問用戶
-R/r
遞歸處理,將指定目錄下的所有文件與子目錄一並處理
4.15 cp 遞歸練習技巧#
pwd 顯示當前工作目錄
cp -R ./*.java ~/Documents/temp/
4.16 Linux 終端光標移動技巧#
- Tab 自動補全
- Ctrl + E 跳到行尾
- Ctrl + B 光標向左移動
- Ctrl + H 刪除光標前一個字符 相當於退格
- Ctrl + T 把光標前一個字符往後移動
- Ctrl + R 搜索之前用過的命令
- Ctrl + W 刪掉光標前面的內容
- Ctrl + U 刪掉光標前面的內容
- Ctrl + K 刪掉光標後面的內容
4.17 lnk 鏈接文件的介紹#
-
.lnk 快捷方式
-
Linux 鏈接文件
-
1. 符號鏈接 (軟鏈接)
指快捷方式 原來的文件 / 文件夾必須存在
-
2. 硬鏈接
指副本 原來的文件 / 文件夾必須存在
4.18 符號鏈接和硬鏈接#
ln
命令 用來為文件創建鏈接,鏈接類型分為硬鏈接和符號鏈接兩種,默認的鏈接類型是硬鏈接。如果要創建符號鏈接必須使用 "-s" 選項ln
原文件名 鏈接的文件名ls -l
查看- 軟鏈接:有指向,是一個單獨的文件,不同介質
- 硬鏈接:無指向,同一介質
- 軟鏈接複製的是鏈接文件
4.19 注意事項#
- 符號鏈接 Symbolic links
- 軟鏈接 Soft links
4.20 mv 命令#
- mv 命令 用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中
- 做重命名,mv 重命名誰 命名成什麼
4.20 移動和騷操作#
- 做移動,
mv
移動的文件 移動到的目錄 - 輸入完之後,
cd !$
- !$ 是列出並執行你的命令歷史裡面最近的一條記錄
4.21 rm—— 最佳年度刪庫跑路#
sudo rm -rf /*
該命令極度危險rm
命令可以刪除一個目錄中的一或多個文件或目錄,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。對於鏈接文件,只是刪除整個鏈接文件,而原有文件保持不變rm -i
有提示rm -i -rf
無提示- 注意: linux 沒有回收站
4.22 創建文件夾以及刪除文件夾#
mkdir
用來創建目錄rmdir
用來刪除空目錄
4.23 文件類型#
file
用來探測給定文件的類型- Windows 文本是 txt
- linux 文本是 text
4.24 cat ,more ,less#
cat
連接多個文件並打印到標準輸出,適用於短文本-n, --number
對所有行編號,從 1 開始編號more
顯示文件內容,每次顯示一,以全屏方式顯示- b 上一頁 space 下一頁 q 退出
less
分屏上下翻頁瀏覽文件內容less
命令允許用戶向前或向後瀏覽文件,而more
命令只能向前瀏覽。- 用
less
命令顯示文件時,用 PageUp 鍵向上翻頁,用 PageDown 鍵向下翻頁。要退出 less 程序,應按 Q 鍵 - 瀏覽文件中輸入 / 用於搜索
4.25 tail 和 head 命令#
-
tail
在螢幕上顯示指定文件的末尾若干行tail -n 2 demo.c
-
head 顯示文件的開頭部分
head -n 2 demo.c
5.1 任務管理器#
- 進程、性能、用戶、服務
- 服務:監測用戶行為,為用戶服務
5.2 ps 和 top 命令#
top
可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具ps
(process status) linux 最複雜的命令之一,是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的ps axo pid,comm,pcpu
# 查看進程的 PID、名稱以及 CPU 占用率ps -aux | grep named
# 查看 named 進程詳細信息
5.3 kill 命令#
配合ps -aux | grep named
# 查看 named 進程詳細信息
kill pid
殺死進程
5.4 掛載的含義#
詳見:linux 掛載的作用 (https://blog.csdn.net/qq_35583154/article/details/86569903)
插入新硬碟,分了新磁碟區 sdb1,但它現在還不屬於 /,把新硬碟的區 sdb1 掛載到工作目錄的 / Share / 文件夾下,之後訪問這個 / Share / 文件夾就相當於訪問這個硬碟的 sdb1 分區了,對 / Share / 的任何操作,都相當於對 sdb1 裡文件的操作
5.5 mount#
mount
用於掛載 Linux 系統外的文件/mnt
為自動掛載點sudo fdisk -l
查看硬碟及分區信息sudo mount /dev/sdc1 /mnt
sudo umount /mnt
- 自動掛載的目錄不能卸載
5.5 掛載的意義 —— 嘗試使用 U 盤?自動播放黑客惡意?#
- 企業裡不自動掛載,防止惡意播放腳本 auto 病毒
5.6 安卓設備連接掛載#
- 安卓鏈接協議 (SMB) 掛載路徑
/run/suer/1000/gvfs
5.7 df 和 du#
df
用於顯示磁碟分區上的可使用的磁碟空間。默認顯示單位為 KB。可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等信息h
或--human-readable
:以可讀性較高的方式來顯示信息du
也是查看使用空間的,但是與df
命令不同的是 Linux du 命令是對文件和目錄磁碟使用的空間的查看,還是和 df 命令有一些區別的
5.8 sort 命令#
sort
對文本文件中所有行進行排序- 默認對每一行第一個字符排序,並展示出來,並不會改變原來的文件
-n
,--numeric-sort
根據數字排序-M
,--month-sort
按照非月份、一月、十二月的順序排序-r
,--reverse
將結果倒序排列
5.9 grep 基礎認識、搜索文件#
-
grep
(global search regular expression(RE) and print out theline,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來
-
grep 543 ~/Templates/1.txt
5.10 打包、壓縮、歸檔、解壓縮 它們究竟區別在哪?#
tar
打包、壓縮tar -cvf 1.tar 1.txt
僅打包,不壓縮tar -zcvf 1.tar.gz 1.txt
打包後,以 gzip 壓縮tar -zxvf /opt/soft/test/1.tar.gz
將 tar 包解壓縮
6.1 父子 shell 的概念#
- bash
- ps-f
- ps –forest
6.2 分號在命令裡有什麼作用#
- 命令之間帶分號 ; 依次執行
- 創建一個子 shell 去執行
6.3 sleep 和 jobs#
-
sleep
將目前動作延遲一段時間 ,後面可接s
為秒,m
為 分鐘,h
為小時,d
為日數掛在後台,如果要幹掉,則用
kill
命令 -
jobs
顯示作業的狀態,-l
在作業信息中額外的列出 PID
6.4 後台#
- 後台執行
tar -zxvf ……;&
6.5 coproc 協程#
- Liunx 協程處理命令。協程可以同時做兩件事。在後台生成一個子 shell,並在子 shell 中執行命令
coproc sleep 10
coproc frank_av{ sleep 10; sleep 300;}
- 一定要分號結尾,大括號內空格
6.6 外部命令和內建命令#
- Shell 執行的命令可以分為內建命令(built-in)和外部命令(external) 前者是構建在 shell 內部
- 後者是一個獨立的文件(可以是二進制文件,也可以是一個腳本) 內建命令由當前 shell 本身來執行,例如 echo, cd 等等
- 外部命令的執行 shell 進程會 fork 一個子進程,父進程隨後掛起,然後在子進程中 exec 加載外部文件,子進程返回後,父進程才繼續執行
6.7 alias 別名#
alias
定義或顯示別名。type
顯示指定命令的類型。alias li=’ls -li’
- 但是關閉當前 shell 就不能用了
7.1 什麼是環境變量?徹底搞清楚究竟什麼是環境變量!!!!!#
- 環境變量(environment variables)一般是指在操作系統中用來指定操作系統運行環境的一些參數,如:臨時文件夾位置和系統文件夾位置等
- 文件夾寫入的環境變量,意味則可以在任何位置訪問該文件夾,相當於告訴系統這個目錄在哪裡
7.2 全局環境變量和局部環境變量#
- windows: 系統變量與用戶變量
- linux: 全局環境變量和局部環境變量
- 全局環境變量
printenv
printenv USER
echo $USER
cd $HOME
7.3 用戶和局部變量的定義#
- 局部變量只能在當前 shell 執行,子 shell 或者退出後就不能用了
- 注意 定義局部變量不要大寫
- 全局變量用大寫,下劃線命名法
7.4 定義全局變量#
export
為 shell 變量或函數設置導出屬性。- 可以子 shell 裡執行,但關閉後仍失效
7.5 默認的環境變量#
set
7.6 為啥要用環境變量#
- 配置開發環境需要使用
- 臨時環境變量
PATH=$PATH:/home/yeats/Templates/
7.7 永久配置環境變量?#
-
啟動文件:開機的時候默認執行的環境變量
-
bash shell
-
1 登錄 shell
-
2 非登錄就打開 shell
-
3 運行腳本非交互 shell
-
cat /etc/profile
-
~/.bashrc
-
~/.bash_profile
-
~/.profile
-
~/.bash_login
-
cat bashrc
-
加入全局環境變量 (需學習 vim)
8.1 PMS 系統和軟體安裝的介紹#
- PMS Package Management System
- 解決工具依賴問題
apt install
apt-get install
apt-cache
aptitude(已淘汰)
8.2 安裝、更新、卸載#
apt -h
- 更新
sudo apt update
- 升級
sudo apt upgrade
- 卸載
sudo apt remove oneko
8.3 其他發行版本?#
-
server 版本配置鏡像源
-
sudo vim /etc/apt/source.list
-
修改成國內阿里雲庫:
8.4 安裝第三方軟體案例:例如 github 開源軟體的指導#
9.1 用戶權限的含義和作用#
- 用戶與權限
- 不可能讓所有人有所有的權限 - 不安全
- 避免被入侵
- 用戶 ID UID
- 系統用戶 UID<500
cat /etc/passwd
sudo cat /etc/shadow
9.2 創建、刪除、更改用戶#
- 創建
sudo useradd user1
- 刪除
sudo userdel user1
- 更改密碼
sudo passwd user1
chage
修改帳號和密碼的有效期限
9.3 group#
-
linux 組 groups
目的 :共享資源的權限
-
tail /etc/group
-
ubuntu 不允許把所有用戶納入一個組,而是每個用戶都有一個單獨的組
-
sudo groupadd groupfrank
-
sudo groupdel groupfrank
9.4 文件、文件夾權限#
rwx
文件所有者(Owner)組創始人的權限
r-x
用戶組(Group)組下屬成員權限
r-x
其它用戶(Other Users)其它組成員權限
詳見:Linux chmod 命令(Linux chmod 命令 | 菜鳥教程 (runoob.com))
9.5 chmod 命令#
usermod
命令 用於修改用戶的基本信息。usermod
命令不允許你改變正在線上的使用者帳號名稱。- 當
usermod
命令用來改變 user id,必須確認這名 user 沒在電腦上執行任何程序
附上:vi/vim 鍵盤圖#
10.1 編輯器簡單介紹:vim 編輯器之神; emac 神之編輯器#
- emacs - 神之編輯器
- vim - 編輯器之神
- Vim 是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。和 Emacs 並列成為類 Unix 系統用戶最喜歡的編輯器
- vi 編輯器通常被簡稱為 vi,而 vi 又是 visual editor 的簡稱 。它可以執行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據自己的需要對其進行定制,這是其他編輯程序所沒有的
- Vim 是 vi 的加強版,比 vi 更容易使用。vi 的命令幾乎全部都可以在 vim 上
10.2 vim 的簡單使用方式#
- 安裝 vim
sudo apt install vim
vim 工作模式,國外一般認為兩種模式#
-
普通模式 (命令操作模式):操作文件
-
插入模式:編輯
-
編輯模式到普通模式:ESC
國內一般認為三種模式#
-
一般命令模式:簡稱一般模式,也是最先進入的工作模式,輸入 vi + 文件名可直接進入一般命令模式,在此模式下可進行文本內容的查看、複製、刪除、替換等功 能。當不能輸入相關文本內容
-
編輯模式:在一般模式下,輸入 i 或 o 或 a 進入編輯模式,在此模式下可輸入文本內 容。當輸入 i 時,工作介面如圖所示,只有此時狀態才可以輸入文件內容。輸 入完成後,可單擊 ESC 鍵退出編輯狀態,進入一般模式
-
命令行模式:在一般模式下,輸入:或 / 或?進入命令行模式,在此模式下可輸入相關命令當輸入:wq 此時命令表示保存退出命令,單擊回車鍵,自動保存文件,並退 出 vi 編輯器或者單擊 ESC 鍵,重新返回一般模式
三種工作模式關係如圖所示#
vim 編輯器的退出,一般分三種情況#
:q
表示不保存退出:wq
保存退出:q!
強制退出,此時也不保存文件
10.3 移動光標#
- 上:
k
- 下:
j
- 左:
h
- 右:
l
- 下一行:
b
- 上一行:
w
- 查找上一處字符:
N
- 查找下一處字符:
n
10.4 翻頁#
- 上翻頁 (BACKWARD):
ctrl+B
- 下翻頁 (FORWARD):
ctrl+F
- 上滾:
ctrl+E
- 下滾:
ctrl+Y
- 移動到最後一行:
G 或者shift+g
- 移動到第一行:
gg
10.5 不同方式編輯文本、跳躍單詞操作技巧#
i
光標位置的前面插入a
光標位置後面的插入o
直接 enter 到下一行x
刪除光標所在字符dd
刪除整個一行u
撤銷dw
移除當前所在光標往後到單詞b
跳躍單詞首字母e
跳躍單詞最後w
跳躍單詞 先跳躍到單詞首字母,然後跳躍到單詞最後shift+w
;shift+b
大跳
10.6 跳躍行首行尾技巧#
shift+6
或者0
跳躍到本行到開頭shift+4
跳躍到本行末尾
10.7 大括號跳躍函數段落技巧#
{}
跳躍大括號
10.8 vim 複製剪切粘貼#
p
粘貼yw
複製一個單詞y$
從當前開始往後複製到行末尾
10.9 Visual 可視化模式#
v
選擇文本V
選擇行v G
全選ctrl+v
矩陣選擇o
切換文本首尾vaw
快速選擇單詞vab
包括括號vaB
包括大括號va<
包括尖括號
10.10 视图模式其它技巧#
v shift+<
往左縮進v shift+>
往右縮進shift+~
或者shift+u shift+U
大小寫轉換
10.11 查找和替換#
- 查找
/
- 按 n 查找下一个
:s /const/let/g
一行 const 替換成 let:%s /const/let/g
所有 const 替換成 letset number
臨時顯示行號:9,15s /const/let/g
9-15 行 const 替換成 let:%s /const/let/gc
有提示的替換
10.12 vim 的基礎配置#
touch .vimrc
vim .vimrc
將以下代碼寫入.vimrc 中
set syntax=on
set tabstop=4
set softtabstop=4
set number
set enc=utf-8
set showmatch
- source .vimrc