天天看點

一篇文章講完Linux基礎

作者:Antonov

1、更新換源檔案

第一步:下載下傳我的 sources.list 檔案 放到共享目錄下

第二步:在終端中 共享目錄下 找到sources.list 檔案

第三步:進入linux 下的 /etc/apt 目錄 執行以下指令

sudo rm sources.list

即删除 該目錄下 的 換源檔案 sources.list

注意:此時需要輸入密碼 并且密碼輸入是隐式的

第四步:進入共享目錄下 再次找到 sources.list 檔案後

執行以下指令 sudo cp sources.list /etc/apt

第五步:再次進入 /etc/apt 目錄 檢視 sources.list檔案是否存在

即執行指令 ls 看檔案是否存儲

第六步:如果檔案存在 則 執行以下指令換源

sudo apt-get update

注意:需要有網絡才可以換源成功

2、安裝 vim編輯器

注意:請先進入共享檔案夾下

首先測試自己的vim編輯器是否可用

測試方法:

vim 1.txt

可以看到 打開了一個檔案

退出 請先按esc鍵 然後 輸入 :wq 即可退出

安裝方式 即執行以下指令即可: sudo apt-get install vim

3、擷取聯機幫助

linux下提供了兩種聯機幫助的方式

3.1、man

功能最強大 最專業 最齊全的 線上幫助手冊

使用方式: man 頁碼 指令or函數

退出:使用q鍵即可退出

ex: 比如 linux的ls這條指令 不會用 直接 man ls就可以查到他的用法

ex: 在我們學習的 C語言中 有部分函數 不會使用 malloc 不會用 man malloc 即可

關于頁碼是可以預設的

一般情況下 系統的指令在第1頁

ex: man 1 ls

标準庫函數 是在 第3頁

ex: man 3 printf

系統函數 一般是在 第2頁

ex: man 2 read

3.2、info

使用方式 和 man是相同的 但是内容沒有man齊全

使用q退出

ex: info printf

4、基本系統維護指令

4.1、reboot

重新開機指令 如果提示你沒有權限 則需要添加 sudo

即: sudo reboot

4.2、shutdown

關機指令 如果提示沒有權限則添加 sudo

使用方式如下:shutdown -n now 可以設定多久之後關機

關于關機指令還有其他指令:half power off

ex: shutdown 2 now 表示 2minutes 後關機

4.3、sudo

切換到進階使用者 即root使用者 可以了解為給權

ex: sudo apt-get install vim

有一個權限 可以更新擷取安裝vim編輯器

ex: sudo -s

即切換到進階使用者,s表示的是 super user 即超級使用者 擁有一切權限

如何退出 超級使用者 使用 exit即可

注意訪客是不可以切換的

sudo在一個終端中如果輸入了一次密碼則無需再次輸入

4.4、echo

即輸出的意思

echo "字元串"

即将字元串輸出到 終端

ex: echo "hello world!"

螢幕将輸出 hello world!

echo 也可以 定向輸入到檔案中

ex: echo "hello world" >> 1.txt

将輸出的結果輸出到 1.txt這個檔案中

注意 :如果這個檔案不存在則建立

4.5、date

輸出目前的時間和日期

ex: date

4.6、cal

輸出所有的月曆,目前日期使用陰影部分表示

也可以帶參數輸出

ex: 如果要檢視 2018年的月曆 那麼輸入指令 cal 年份

cal 2018

ex: 如果要指定某一年的某一月 那麼輸入指令 cal 月份 年份

cal 2 2022

4.7、clear 清屏指令

注意其并不是清屏 應該說是新開一屏

原因:之前輸入的内容和輸出的命名行 上翻即可看到

4.8、反号

按鍵位于 esc鍵的下面 就是~号這個按鍵

其在shell 腳本中有一個非常關鍵的作用 就是引用另一個指令的輸出

作為目前指令的輸入

ex: echo `date`

即echo 輸出 date的輸出

date指令的 輸出結果作為了 echo指令的輸入

這個輸入可以了解為指令參數

4.9、>> 叫做流向符

即将結果流向到那個位置

ex: echo "hello" >> 1.txt

5、使用者組資訊檔案及使用者管理指令

5.1、使用者組資訊檔案

位于 /etc/group 檔案中 我們可以使用vim編輯器打開這個檔案

指令格式:

vim /etc/group

檔案資訊如下:

root:x:0:

adm:x:4:syslog,gec

以上的資訊其實分為四部分 使用的是 :隔開

第一部分 叫做使用者組名

root 就是root使用者組

adm 就是adm使用者組

第二部分 x

加密密碼

一般情況下 linux系統下的使用者都存在密碼

如果該字段為空則表示 這個使用者組沒有密碼

第三部分:即小組編号

0 4 都表示第幾組

第四部分:組内的使用者

4組有兩個使用者

syslog system login 系統登入使用者

5.2、基本使用者管理指令

5.2.1添加使用者:

adduser 使用者名

ex: adduser zacoh

如果有提示沒有權限加sudo

5.2.2删除使用者:

userdel 使用者名

5.2.3修改使用者密碼:

passwd 使用者名

ex: passwd zacoh

5.2.4建立使用者組:

addgroup 使用者組名

ex: addgroup my

5.2.5删除使用者組:

groupdel 使用者組名

ex: groupdel my

6、linux下的程序管理

6.1、linux下程序的幾種基本狀态

D: 不可中斷的程序

R: 正在執行的程序

S:靜止的程序 或者 已經被中斷的程序

T:暫停執行的程序

Z:将是程序

< 高優先級的程序

N 低優先級的程序

W 沒有足夠運作記憶體的程序 即資源不足的程序

L 正在配置設定記憶體的程序

什麼是程序:就是你自己寫的程式的執行過程就是程序

./a.out 就是建立一個程序執行程式

6.2、如何檢視程序及其狀态

6.2.1 ps 檢視目前終端下的程序

ps 不加任何字尾 将出現以下内容

(程序号 系統啟動時的終端裝置 運作的時間 程序的名字)

PID TTY TIME CMD

2385 pts/2 00:00:00 bash

3340 pts/2 00:00:00 ps

ps -f 表示後面可以加字尾

f的取值如下:

-aux 檢視程序的裝填 可以看到CPU和記憶體的使用率

ex: ps -aux

-ef 詳細檢視程序的資訊

ex: ps -ef

UID PID PPID C STIME TTY TIME CMD

使用者ID 程序号 父程序号 程序的聲明周期 開始運作的時間 系統啟動時的終端裝置 運作多久了 程序的名字

即哪一個程序

建立的他

死循環一直在執行 你想結束 我們一般是按 ctrl+ c

結束 你不小心按了ctrl+z 将會讓這個正在運作的程式停止

接下來檢視這個程序 看它的狀态是什麼

ps -aux

glc 3388 5.0 0.0 2024 276 pts/2 T 01:20 0:01 ./a.out

程序狀态為 T 表示 暫停執行的程序

那如何幹掉這個程序呢?使用以下指令

6.2.2 kill 即 發送一個信号給一個指定的程序

使用方法:

kill -信号 程序号

ex: kill -9 3385

就是給 3385 這個程序發送一個信号9,9表示殺死

6.2.3 top

實時并且按照CPU的占用率檢視程序 相當于 windows下的 任務管理器

按q可以退出

6.2.4 pstree

以程序樹的方式檢視程序

ex: pstree

相當于以族譜的方式

按q鍵退出

7、linux基本操作指令

7.1、pwd

擷取目前路徑的 絕對路徑名

使用方法: pwd

絕對路徑:從根目錄出發的路徑,根目錄以 / 表示,絕對路徑就是以 /打頭的

相對路徑:從目前目錄出發的,目前目錄一般是以.表示,是以目前目錄以.打頭 也可以預設

ex: /mnt/hgfs 這就是linux下的臨時挂載目錄

從 /即根目錄出發 有一個mnt檔案夾下又有一個hgfs檔案夾

我們共享目錄就在這個檔案夾下

因為是将windows下的檔案夾挂載在 linux下 這是一個絕對路徑

./.. 這個表示目前目錄的上一級目錄 就是一個相對路徑

相對于目前路徑 可以預設 ./ ..即可表示上一級目錄

7.2、cd

進入一個目錄或者切換工作路徑

使用方法:cd 檔案路徑名

路徑名 可以使相對路徑 也可以是絕對路徑

ex: cd /mnt/hgfs

進入挂載目錄

/ 表示根目錄 就是計算機目錄

~ 表示家目錄 就是你所處的一個個使用者目錄

是 HOME目錄即主檔案夾 不是home(就是根目錄下的home)

home下的使用者名檔案内才是我們的家目錄

. 表示目前目錄

.. 表示上一級目錄

- 表示上次通路的目錄

7.3、ls

列出目前檔案夾下的所有檔案

使用方法:ls options

注意:此處使用也可以不需要options,即直接使用ls

則功能是列出目前檔案夾下的所有檔案名 不包括隐藏檔案

ex: ls

options 表示的意思是字尾操作,可以取以下幾個值:

-l

ex: ls -l

表示列出目前檔案夾下所有檔案的具體資訊 但是不包括隐藏檔案

之後會看到 以下的内容:

-rwxrw-rw- 1 gcl gcl 84380262 Jul 10 2015 arm-2009q3.tar.bz2

分段處理

第一個字元表示檔案的類型:

- 表示該檔案是一個普通檔案 即ASCII碼組成的檔案

d 表示這是一個目錄檔案 也就是檔案夾

l 表示這是一個連結檔案 即快捷方式

p 管道檔案

c 字元裝置檔案

b 塊裝置檔案

s 套接字檔案

第二個字元 到第10個字元表示該檔案的操作權限

rwxrwxrwx

rwx

r 表示可讀

w 表示可寫

x 表示可執行

那麼如果沒有改權限則 使用 -表示

第二個到第四個 表示檔案所有者權限

ex: 你買了一袋洗衣粉 你就是這袋洗衣粉的所有者

-rwxrw-rw-

檔案所有者 具有可讀可寫可執行的權限

第五個到第七個 表示檔案所屬使用者組的權限

ex: 你買了一袋洗衣粉放到了宿舍,則宿舍内部成員就是使用者組内

-rwxrw-rw-

檔案所有者 具有可讀可寫可執行的權限

rw- 即可讀 可寫 但是 不可執行

第八個到第十個 表示其他使用者權限

就是除了你宿舍的之外 也就是其他宿舍的

-rwxrw-rw-

rw- 可讀可寫但是不可執行

此處的 1 表示使用者組号

之後的兩個gec 分别表示 使用者組名 和使用者名

後面有一個資料 這個資料表示檔案的大小

後面的就是建立檔案的日期

再後面 就是檔案名字

-a

ex: ls -a

将所有檔案列出來包括隐藏檔案 (隐藏檔案:linux下所有以 .開頭的都是隐藏檔案

-lh 人性化顯示

ex: ls -lh

并沒有多人性化,隻不過将大小給了一個機關而已

-t

ex: ls -t

以時間順序顯示

7.4、touch

用于建立一個新的空文本檔案

ex: touch 1.txt

7.5、file

檢視一個檔案的類型

使用方法:file 檔案名

ex: file 1.txt

7.6、cp

文本拷貝指令

使用方法:cp 檔案名 目标路徑

ex: cp 1.txt /mnt/hgfs/share

7.7、mkdir

建立一個檔案夾

使用方式:mkdir 檔案夾名字

ex:mkdir zzz

7.8、rm

删除檔案的指令

使用方式:rm 檔案名

ex: rm 1.txt

rm沒有辦法直接删除檔案夾,如果需要則需要要添加一個字尾

rm zzzz -rf

7.9、rmdir

删除一個檔案夾

注意:僅可以删除空檔案夾

ex: rmdir zzzz

7.10、mv

移動檔案 其本質就是剪切

使用格式:mv 檔案名 路徑名

ex: mv 1.txt zzzz

注意:如果後面的跟的不是路徑名而是一個檔案名,這條指令将不是移動而是重命名

ex: mv 1.txt 3.txt

将1.txt 重命名為 3.txt

8、顯示普通檔案的常用指令

8.1、cat

将檔案的内容輸出到标準輸出 即螢幕或者終端 可以了解為預覽

使用方式:cat options 檔案名

options可以預設 即直接輸出檔案資訊

ex: cat 2.txt

options 可以取以下值

-n 加上行号顯示

-b 隻給有文本的行加上行号 即空行不需要行号

-s 将多個空行 合并為一個空行

注意:由于版本問題可能導緻無法有正确的結果操作

8.2、tac

反向輸出 即先輸出最後一行 ..... 最後輸出第一行

ex: tac 2.txt

8.3、more

是cat的更新版 可以分屏顯示文本内容

回車 是一行行顯示

空格 是一頁頁顯示

= 顯示目前顯示的行号

. 執行上一次的操作

ctrl+B 顯示上一頁

q退出顯示

8.4、less

是more的更新版 能夠相容上下鍵

q退出顯示

回車 是一行行顯示

空格 是一頁頁顯示

= 顯示目前行号

ctrl+B 顯示上一頁

8.5、head

顯示文本的前10行

如果加上字尾則有以下

-n num 表示顯示前 num行

-c num 表示顯示前 num個字元

8.6、tail

顯示文本的後10行

如果 加上字尾則有以下

-n num 表示顯示後 num行

-c num 表示顯示後 num個字元

9、軟連結與硬連結

連結檔案:使用 l來表示 即 link,連結檔案分為兩類:

9.1硬連結

相當于副本,即備份

ex: 在windows下的同一檔案複制到目前檔案,有一個副本産生 這個副本就是硬連結

在linux下的建立方式如下:

ln (target) (link-name 建立的名字)

ex: ln 1.txt xx

注意:不能跨檔案系統建立硬連結

是以不能在共享目錄下建立硬連結

因為共享檔案夾是 windows的而建立連結是linux不能跨作業系統

對于硬連結檔案的操作如下:

1、如果修改了 源檔案則會影響到連結檔案

2、如果修改了 連結檔案 則也會影響到 源檔案

3、如果删除 連結檔案則 不會影響源檔案

4、如果删除 源檔案 那麼連結檔案将忘記自己是一個連結檔案,進而成為一個新的普通檔案

注意(硬連結檔案本身就是一個普通檔案 因為檢視檔案類型顯示是一個普通檔案)

9.2軟連結:

相當于快捷方式

建立方式:ln -s (target) (link-name連結名字)

ex: ln -s 1.txt xxxx

注意:軟連結檔案不能跨系統建立但是可以跨系統連結

即我們建立的軟連結檔案可以拷貝到共享目錄

對于 軟連結檔案的操作如下:

1、如果修改了源檔案則會影響到連結檔案

2、如果修改了 連結檔案 則也會影響到 源檔案

3、如果删除 連結檔案則 不會影響源檔案

4、如果删除 了源檔案 連結檔案将無法使用

簡述硬連結與軟連結的差別:

1、硬連結檔案是對一個已存在檔案進行備份

不允許經過任何目錄建立硬連結檔案(即硬連結與源檔案必須在同一個檔案夾下)

并且隻能在同一個檔案系統内建立(不能跨系統)

是以不能在 共享檔案夾下建立硬連結

2、軟連結可以再任意目錄下 或者 跨路徑建立

但是隻能在同一檔案系統中(即在同一個系統中建立)

但是可以跨路徑使用

10、linux下的檔案歸檔與壓縮

linux下有兩種壓縮格式:

bzip 生成的檔案字尾為 .bz2

gzip 生成的檔案字尾為 .gz

在linux 下雖然 zip指令 可以很好的壓縮檔案但是

它不是标準的歸檔壓縮指令 标準的歸檔壓縮指令是 tar

使用方式:tar function [optins] obj1 obj2 ....

function 一般放到最開頭的位置

有兩個取值:

-j 表示使用tar生成歸檔壓縮檔案或者釋放壓縮檔案格式為 bzip格式

-z 表示使用tar生成歸檔壓縮檔案或者釋放壓縮檔案格式為 gzip

optins 有以下幾個選項

-c 表示建立壓縮檔案 create

-x 表示釋放一個壓縮檔案

-f 制定歸檔檔案的内容 一般放到最後

-v 顯示歸檔和壓縮的具體系統

ex: 壓縮檔案:

tar -jcvf xx.bz2 1.txt 2.txt ...

使用tar指令 壓縮 格式為 .bz2 生成一個壓縮檔案

xx.bz2 裡面将壓縮 1.txt 2.txt .. 等等檔案

釋放:

tar -jxvf xx.bz2

11、apt線上更新

APT是ubuntu中功能做強大最齊全的軟體包管理工具

其是用于擷取、安裝、解除安裝、軟體應用的工具,相當于是軟體管家

實作原理:

ubuntu采用集中式的軟體管理

将各種軟體包分門别類的存儲到哥哥軟體庫中進行有效的組織管理

管理方式類似于藥房的管理:

然後将這些倉庫防止于許多的鏡像伺服器中(伺服器相當于醫院)

并且保護基本一緻(即看病取藥的流程基本一緻)

這樣 ubuntu的使用者就可以随時下載下傳更新安裝包 用于安裝軟體

由于每一位ubuntu使用者(醫生)所處的環境不一樣(在不同的科室)

不可以随意的通路各個鏡像伺服器 并且每個鏡像伺服器中有哪些資源

也是不清楚的,那麼就需要在每個伺服器中找到一個一一對應的 表格

這個表格上面告訴你哪些軟體包在那個位置,如果這個位置沒有則去其他位置找!

這張表格就是我們所說的 sources.list 即換源檔案

如果要更新這張表格 則 需要 執行以下語句

sudo apt-get update

首先軟體包有很多 每個軟體的功能不同是以需要分類

這類似于藥房的管理:即藥房對于藥品而言否是分類管理的

每一類的藥品可以存放到不同的鏡像伺服器

這裡的鏡像伺服器相當于醫院,醫院有有很多

放了很多不同的藥品

有人去看病 不能讓病人直接拿藥

是以藥房和醫院的使用者 對應的醫生

不同的醫生在不同的科室對于藥品的權限操作也是不同的

那麼這些醫生需要知道自己能夠開什麼藥 這個就要有一張表格

sources.list 就是用于更新這張表格的

告訴醫生 那些藥在那個伺服器中有

軟體源的選擇 就是看 sources.list 這個檔案連結的是

那些鏡像伺服器中的源:

ex: 中科大

複旦

清華

阿裡

.....

APT 提供了一些常用的指令

(重要)apt-get 用于軟體的安裝 解除安裝和更新

(重要)apt-cache 用于查詢軟體包資訊

apt-proxy 用于搭建APT代理伺服器 (自己搭建一個 apt伺服器)

apt-show-versions 用于顯示系統中軟體包的版本資訊

apt-confing 用于讀取apt配置檔案的簡單工具

apt-cdrom 用于将CD-ROM加載刀刀如那件源配置檔案中

apt-get 的用法:

格式:apt-get subcommand pagesname

subcommand 有以下的取值:

install 表示安裝

update 更新

remove 解除安裝

source 下載下傳源碼倉 (對于開源的軟體包)

build-dep 為源碼包建構所需要的編譯環境

dist-upgrade 釋出更新 版本更新

clean 删除老版本的下載下傳檔案 即存儲在下載下傳區的臨時檔案

check 檢查系統中的依賴關系的完整性

pagesname

軟體包名字

ex: apt-get install vim //更新安裝和更新vim編輯器的

apt-get update //更新 更新換源清單 後面不可以跟軟體包參數

apt-get remove //軟體包 用于解除安裝軟體工具

apt-get source vim //下載下傳vim的源碼倉

apt-get build-dep vim //為vim源碼搭建編譯環境

apt-get clean 無需字尾軟體包

apt-get check 無需字尾軟體包

apt-cache 的使用:

格式:apt-cache subcommand pagesname

subcommand 可以取以下的值:

showsrc 擷取源碼包的詳細資訊

search 根據正規表達式檢查軟體包 //暫時無法使用

depends 擷取源碼包的依賴關系

pkgnames 列出所有已經安裝的軟體名

stats 擷取源碼包的統計資料

show 擷取版本号和依賴關系

showpkg 擷取依賴關系

ex: apt-cache showsrc vim

apt-cache depends vim

apt-cache pkgnames //無需字尾軟體包

apt-cache stats vim

apt-cache show vim

apt-cache showpkg vim

12、vim編輯器的使用

vi/vim文本編輯器是linux下功能最強大的文本編輯器,也是最常用的文本編輯器

其有三個模式:

指令模式:鍵盤上所有的輸入都會成為指令

輸入模式:鍵盤上所有的輸入都會當做文本寫到到檔案

末行模式:在指令模式下輸入:後進入該模式

此時輸入的所有字元顯示在末行稱之為末行模式

注意:vim 編輯器打開一個檔案預設進入的是指令模式

指令模式進入輸入模式:

a 光标向後偏移一個位元組 進入

A 光标移動到行尾巴進入

i 光标位置不動進入

I 光标移動到行首進入

o 将會在光标所在行下一行新增一行進入,并且光标停留在新行的行首

O 将會在光标所在行上一行新增一行進入,并且光标停留在新行的行首

輸入模式進入指令模式:按 ESC鍵即可

指令模式到末行模式:按 ESC鍵即可

輸入模式到末行模式:先按 ESC鍵 再按:号

基本指令:必須在指令模式下敲

12.1文本删除操作:

x 删除光标後所處的字元 如果在前面加上一個數字n

則表示删除光标所處位置開始向後的n個字元,包括光标所在的字元

X 删除光标所處位置前面的字元 如果在前面加上一個數字n

則表示删除光标所處位置開始前的n個字元,不包括光标所在的字元

dd 删除光标所在的行

若在在前面加上一個數字n,則表示删除目前行以及之後的n-1行

D or d$ 删除光标位置到行尾的内容

d0 删除從光标位置到行首的内容

dw/dW 删除一個單詞

若光标在某個單詞的中間 則從光标位置之後開始删除到詞尾

若在在前面加上一個數字n,則表示删除目前光标位置以及之後的 n-1個單詞

注意 w 與 W 單詞的劃分方式不同:(w 比 W 劃分單詞更加嚴格

1、兩個空格之間是一個詞即 W 表示

2、英文單詞 标點符号 和非字元符号之間的是一個詞 w

d回車 删除目前行以及之後的一行,即删除兩行

12.2文本複制操作:

注意:vim下面是不能夠使用ctrl+c ctrl+v 複制的,隻能用過指令行複制

Y 複制光标所在的行

若在其前面加上一個數字n 則表示複制光标所在的行及其之後的 n-1行

y$ 複制光标所在位置及行尾的内容

yw/yW 複制一個單詞

若在其前面加上一個數字n 則表示複制光标所在的詞及其之後的 n-1個詞

注意 w 與 W 不同即單詞的劃分不同

y回車 表示複制目前行及其下一行的内容

p 表示粘貼到下一行

P 表示粘貼在 上一行

shift+p 表示粘貼到本行

12.3文本選擇指令:

v:在指令模式下進行文本的選擇

使用方法:在需要選擇的文本處按下v

進入塊選擇模式移動光标到行尾(以字元為機關)

V: 在指令模式下進行文本的選擇

使用方法:在需要選擇的文本處按下V

進入行選擇模式 移動上下鍵即可(以行為機關)

12.4複制粘貼操作:

1、使用文本選擇指令選擇文本 按下 Y/y 複制,在粘貼處按下p即

注意:Y 與 y有所不同, Y是整行對應 V , y整塊對應 v

2、直接輸入n行号co n 粘貼行

可直接複制但必須在末行模式下

12.5撤回指令:

u 撤回

ctrl+r 取消撤回

.表示繼續執行上一條指令

12.6vim末行操作:

儲存與退出

q 表示直接退出

q! 表示強制退出

x / wq 儲存并退出

w 儲存

w 檔案名 就是另存為

wq! 儲存并強制退出

$前往最後檔案尾部

12.7查找文本指令:

/string 從光标後開始查找string字元串

查找的内容可以使用n N檢視

n 下 N 上

12.8替換文本指令:

%s/ostring/nstring

将ostring替換為 nstring

後面可以跟字尾, c 表示一個個替換, g 表示替換所有的

繼續閱讀