初识 Linux
文章目錄
- Linux初識
- 1 Linux背景
- 2 軟件
- 3 基礎命令
- 3.1 目錄相關命令
- 3.2 文件相關命令
- 3.3 壓縮命令
- 3.4 時間日期命令
- 3.5 匹配查找命令
- 3.6 其他
- 4 shell(命令行解釋器)
- 5 權限
- 6 常用工具
- 6.1 yum 軟件包管理工具
- 6.2 vim 編輯器:
- 6.3 gcc:編譯器
- 6.4 gdb:調試器
- 6.5 make/makefile:項目自動化構建工具
- makefile:普通文本文件,記錄了項目的構建流程規(guī)則
- make:一個解釋程序,到當前執(zhí)行make命令的目錄下尋找makeifile文件,并且對makefile中記錄的項目構建規(guī)則進行解釋執(zhí)行
- 6.6 git:項目版本控制工具
- 項目克隆:git clone + 項目路徑
- 項目提交:git add 文件路徑 --> git commit -m "備注信息"
- 同步到服務器:git push origin master(主分支)
- 6.7 進度條程序
Linux初識
1 Linux背景
- multics操作系統(tǒng) – 開發(fā)兩年半失敗了
- 肯·湯姆森 – unix
- Andrew S Tanenbaun – minix
- 李納斯·托瓦斯 – linux(內核),開源+免費
- GNU 開源免費組織
- 發(fā)行版Linux
- 紅帽子:收費
- centos:免費
- debian
- ubuntu
- 操作系統(tǒng) = 內核 + 外部應用
2 軟件
- vmware–虛擬一套硬件環(huán)境(cpu,硬盤,網卡)
- 虛擬機:在虛擬環(huán)境中搭建的 linux 操作系統(tǒng)
- xshell–遠程連接工具
3 基礎命令
- 命令使用格式:命令名 [選項參數(shù)] [操作對象] ls -a wordspace
3.1 目錄相關命令
- 每個目錄下都有兩個特殊的目錄,. 和 …
- . 表示目錄自身, … 表示自身的上一層路徑
- stat filename 查看目錄詳細信息
- linux下一切皆文件
- linux下文件類型不以后綴名區(qū)分
- d 開頭–目錄類型文件
- c 開頭–字符設備文件(鍵盤)
- b 開頭–擴設備文件(硬盤)
- l 開頭–符號鏈接文件(快捷方式)
- 返回上次所在路徑
3.2 文件相關命令
- n 繼續(xù)
3.3 壓縮命令
- zip file.zip filename – 不刪除原文件,生成壓縮包
- unzip file,zip
- gzip filename – 刪除原文件,生成壓縮包
- gunzip file.gz
- bzip2 filename
- bunzip2 file.bz2
3.4 時間日期命令
3.5 匹配查找命令
3.6 其他
- man ls
- stat filename
4 shell(命令行解釋器)
- 命令行解釋器–橋梁
- 將用戶需求解釋給操作系統(tǒng)完成
- .將操作系統(tǒng)結果解釋給用戶展示
- shell命令
- 我們所執(zhí)行的命令其實就是一個個的程序,封裝了相應的功能
5 權限
- 多用戶操作系統(tǒng)
- 用戶對操作系統(tǒng)操作權限分類:管理員用戶root,普通用戶
- 文件權限:
- 文件權限對用戶的分類
- 文件的所有者 u user
- 文件所屬組 g group
- 其他用戶 o other
- 用戶對文件操作的分類
- 可讀 r 對目錄來說:可瀏覽
- 可寫 w 對目錄來說:可創(chuàng)建刪除
- 可執(zhí)行 x 對目錄來說:可進入
- rwxrwxr-x 文件所有者權限rwx,文件所有者權限rwx,其他用戶權限r-x
- 二進制位圖
- rwxrwxr-x,表示為 111 111 101,或表示為7 7 5(八進制)
- 735 所屬組權限:可寫可執(zhí)行,其他用戶:可讀可執(zhí)行
- 文件權限的常見命令
- umask 查看/設置文件的默認權限掩碼
- 權限掩碼:設置文件默認的創(chuàng)建權限
- 實際權限 = 給定權限 & (~權限掩碼)
- (八進制)給定 635 ,掩碼:033,求權限。635 & (~033)
- chmod 修改文件的權限
- chmod 644 通過八進制數(shù)字修改
- chmod o+x 針對用戶操作進行修改
- chmod g-w
- chmod u+r
- chown 修改文件所有者
- chown username filename
- chgrp 修改文件所有組
- chgrp groupname filename
- 沾滯位
- umask 查看/設置文件的默認權限掩碼
- 文件權限對用戶的分類
6 常用工具
6.1 yum 軟件包管理工具
- Linux下軟件安裝方式:
- 源碼安裝:手動安裝一個個依賴關系庫
- 工具安裝:自動檢測解決依賴關系庫的安裝
- 查看能夠哪些軟件包
- yum list | grep package_name
- 查看已經安裝哪些軟件包
- yum list installed | grep package_name (篩選)
- 安裝軟件包
- yum install package_name
- yum install vim – 文本編輯工具
- yum install gcc – 程序編譯工具
- yum install gdb – 版本調試工具
- yum install git – 版本控制工具
- yum install lrzsz – 文件傳輸工具
- 移除已安裝軟件包
- yum remove package_name
- lrzsz的使用
- rz 從主機傳輸文件到服務器/虛擬機
- sz filename 從虛擬機/服務器傳輸指定文件到主機
- sz filename
6.2 vim 編輯器:
- vim共有12種模式,最常用的有三種
- 普通模式:完成編輯一個文件最常見的操作
- 光標移動
- 復制,粘貼,剪切,撤銷,恢復撤銷
- 插入模式:插入數(shù)據
- 底行模式:保存/退出 vim設置
- 模式切換:
- 普通 -> 插入
- i 從光標位置開始插入
- I 光標移動到行首,開始插入
- a 光標后一個字符,開始插入
- A 光標移動到行尾,開始插入
- o 向光標所在行下方添加新行,開始插入
- O 向光標所在行上方添加新航,開始插入
- 插入 -> 普通 esc
- 普通 -> 底行 :
- 底行 -> 普通 esc
- 普通 -> 插入
- 普通模式下的操作:
- 光標移動:
- hjkl 左下上右
- w/b 按單詞左右移動
- ctrl + f/b 向下/上翻頁
- gg/G 文檔首行/尾行
- 復制:
- yy 復制光標所在行
- nyy 從光標所在行開始向下復制n行
- 粘貼:
- p 向光標所在行下方粘貼新行
- P 向光標所在行上方粘貼新行
- 剪切/刪除:
- x 刪除光標所在字符
- dw 刪除光標所在單詞
- dd 刪除光標所在行
- ndd 從光標所在行開始向下刪除n行
- 撤銷:
- u
- 恢復撤銷:
- ctrl + r
- 光標移動:
- 底行模式的操作:
- :q 退出
- :w 保存
- :wq 保存并退出
- :q! 退出不保存(強制退出)
- :!command 臨時執(zhí)行command命令
- /string 字符串匹配
- ?string
6.3 gcc:編譯器
- 將高級語言(C語言)編譯成為機器可識別的指令代碼
- 編譯過程:
- 預處理:去掉注釋,展開所有代碼 – gcc -E main.c -o main.i
- 編譯:語義語法糾錯,將展開的代碼解釋成為匯編代碼 – gcc -S main.i -o main.s
- 匯編:將匯編代碼解釋成為機器指令代碼 – gcc -c main.s -o main.o
- 鏈接:鏈接代碼庫以及所有的目標文件,生成可執(zhí)行程序 – gcc main.o -o main
- 庫文件:大佬們實現(xiàn)一些常用的功能接口,為了防止每次編譯好費時間,因此將這些接口代碼存儲到了一個文件中,這個文件就叫庫文件,這時候如果想用庫函數(shù),這時候就需要包含頭文件,因為頭文件中聲明了這個頭文件的存在,這時候編譯器在頭文件中檢測到這個聲明,就不會報錯,最終鏈接生成可執(zhí)行程序的時候,因為要具體讓cpu處理指令,因此就必須將這些接口的具體實現(xiàn)拿過來。
- gcc的鏈接方式:
- 靜態(tài)鏈接:鏈接靜態(tài)庫,鏈接時,將庫中的代碼寫入到可執(zhí)行程序中
- 優(yōu)點:運行時不依賴庫的存在
- 缺點:占用的資源較多,并且如果大量的程序靜態(tài)鏈接,會在內存中占用大量的資源,造成代碼冗余
- 動態(tài)鏈接:鏈接動態(tài)庫,鏈接時,只記錄接口的位置符號信息,并不拷貝代碼
- 缺點:運行時需要依賴庫的存在
- 優(yōu)點:占用資源少,大量程序可以共享使用
- gcc編譯器的默認鏈接方式:動態(tài)鏈接
- 靜態(tài)鏈接:鏈接靜態(tài)庫,鏈接時,將庫中的代碼寫入到可執(zhí)行程序中
6.4 gdb:調試器
- 調試一個程序的前提是什么?
- 生成debug版本程序,向程序中添加調試符號信息
- linux下gcc默認生成的程序是release版本程序,需要加上-g選項,生成debug版本程序
- gcc -g main.c -o main
- gbd 加載程序
- gbd ./main
- gbd -> file ./main
- 獲取運行參數(shù),并運行程序
- r -a -l -s -t zhang wen chao
- 最常見的調試操作有哪些?
- 打印內容:
- p(print) 打印變量信息
- 單步調試:
- start 開始逐步調試
- l(list)查看調試行附近代碼 l file:line
- n(next) 下一步,不進入函數(shù)
- s(step) 下一步,跟蹤進入函數(shù)
- until 直接運行到指定行 until file:line
- 打斷點:
- b(break):
- b file:line – 給指定行打斷點
- b function_name – 給函數(shù)打斷點
- i(info) 查看調試信息 i(info) b(break) 查看斷點信息
- d(delete) 刪除斷點
- d b_id 斷點編號
- watch 變量監(jiān)控
- watch var
- c(cintinue) 繼續(xù)開始運行
- b(break):
- 查看調用棧信息:
- bt 快速定位程序崩潰位置
- 打印內容:
6.5 make/makefile:項目自動化構建工具
makefile:普通文本文件,記錄了項目的構建流程規(guī)則
- makefile編寫規(guī)則
- 目標對象:依賴對象 main:main.c child.c
- [tab]命令操作 [tab]gcc main.c child.c -o main
make:一個解釋程序,到當前執(zhí)行make命令的目錄下尋找makeifile文件,并且對makefile中記錄的項目構建規(guī)則進行解釋執(zhí)行
- make執(zhí)行規(guī)則
- 解釋執(zhí)行時,在makefile中尋找目標對象(只尋找第一個目標對象),找到目標對象后,執(zhí)行命令操作
- 如果有目標對象,判斷目標對象是否存在:
- 如果目標對象不存在:執(zhí)行命令操作-生成目標對象
- 如果目標對象已經存在:判斷是否有依賴對象
- 沒有依賴對象:直接報錯(目標最新)-不需要重新生成
- 如果有依賴對象:判斷依賴對象是否存在?
- 依賴對象存在:通過目標對象和依賴對象的最后一次修改時間判斷是否需要重新執(zhí)行操作命令-生成目標對象
- 依賴對象不存在:make繼續(xù)在makefile中尋找依賴對象的生成規(guī)則,先生成依賴對象,進而生成目標對象
- 預定義變量:
- $@:目標對象
- $^:所有依賴對象
- $<:依賴對象的第一個
- wildcard:
- src=$(wildcard ./*.c)
- wildcard 獲取指定文件名 – 獲取當前目錄下以.c結尾的文件名
- patsubst:
- obj=$(patsubst %.c, %.o, $(src))
- patsubst 字符串替換 – 對src變量內容進行替換,將.c替換成.o
- #:注釋
- %.o:%.c [tab]gcc -c $< -o $@ — 通配所有.o目標對象的生成規(guī)則
- 偽對象:目標對象每次都需要重新執(zhí)行
- .PHONY用于聲明偽對象:不管對象是否存在,是否最新,每次都重新生成
- .PHONY:clean
- 將clean對象聲明為偽對象-每次都需要重新生成
6.6 git:項目版本控制工具
- svn-集中式 git-分布式
項目克隆:git clone + 項目路徑
項目提交:git add 文件路徑 --> git commit -m “備注信息”
同步到服務器:git push origin master(主分支)
6.7 進度條程序
- 緩沖區(qū)對文件讀寫的影響:數(shù)據并沒有直接寫入文件,而是寫入到緩沖區(qū)(內存)中,等到緩沖區(qū)寫滿或者刷新緩沖區(qū)的時候,才會真正地寫入到文件
- 回車與換行:
- 回車 \r:輸出位置移動到下一行,不帶有\(zhòng)n時,數(shù)據被寫入緩沖區(qū)中,等到緩沖區(qū)滿了/刷新緩沖區(qū)。才會被寫入文件
- 換行 \n:光標移到行首,操作的文件為終端顯示文件時,除了具備換行功能,還具備刷新緩沖區(qū)的功能(僅僅針對終端顯示文件)
總結
- 上一篇: 同盾科技声纹识别建模大赛
- 下一篇: 该网页无法正常运作解决方法