日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux基本总结

發(fā)布時(shí)間:2023/12/15 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux基本总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、系統(tǒng)狀態(tài)查看工具
    • 1、使用 Linux
      • 超級(jí)用戶
      • 使用 Linux
    • 2、幾個(gè)基本的Linux命令
      • man
      • date
      • cal
      • bc
      • passwd
    • 3、了解系統(tǒng)狀態(tài)
      • who
      • uptime
      • top
      • ps
      • free
      • vmstat
  • 二、文本文件處理
    • 1、讀取文件內(nèi)容
      • more / less
      • cat 與 od
      • head 與 tail
      • tee
      • wc
      • sort
      • tr
      • uniq
    • 2、正則表達(dá)式
      • 功能
      • 單字符正則表達(dá)式
        • 轉(zhuǎn)義字符(\\)
        • 圓點(diǎn)(·)
        • 星號(hào)(\*)
        • 錨點(diǎn)(\^與\$)
        • 集合(\[與\])
          • 基本用法
          • 用減號(hào) \- 定義一個(gè)區(qū)間
          • 用 \^ 表示補(bǔ)集
          • 舉例
      • 正則表達(dá)式擴(kuò)展
      • 文本行篩選 grep
      • 流編輯 sed
      • 復(fù)雜篩選及加工 awk
    • 3、文件比對(duì)
      • 文件內(nèi)容比對(duì)
        • cmp
        • md5sum / sha1sum
      • 求文本文件版本間差異
        • diff
    • 4、vi 編輯器
      • 編輯狀態(tài)和光標(biāo)移動(dòng)
        • 用戶的偏好設(shè)置
        • vi 的兩種工作狀態(tài)
        • 光標(biāo)移動(dòng)
          • 單字符移動(dòng)
          • 翻頁
          • 光標(biāo)行內(nèi)快速移動(dòng)
          • 光標(biāo)移動(dòng)到指定行
      • 查找、編輯及存盤
        • 刪除和替換
        • 取消和重復(fù)
        • 文件操作命令
        • 剪貼板
        • 塊操作:復(fù)制與刪除
        • 行合并、刷屏和狀態(tài)顯示
        • 模式查找與替換
  • 三、文件系統(tǒng)管理
    • 1、文件通配符
      • 文件通配符規(guī)則
        • 星號(hào) \*
        • 問號(hào) ?
        • 方括號(hào) \[ \]
        • 波浪線 \~
        • 注意
      • 處理過程
        • shell 和 kernel
        • shell文件名通配符處理
        • 舉例
    • 2、文件和目錄的管理
      • 列出文件目錄
        • ls
      • 文件的復(fù)制與刪除
        • cp
        • mv
        • rm
      • 目錄管理
        • pwd
        • cd
        • mkdir
        • rmdir
      • 目錄遍歷
        • find
          • 舉例
      • 批量處理文件
        • xargs
          • 構(gòu)造參數(shù)列表并運(yùn)行命令
      • 打包與壓縮
        • tar
          • 舉例
    • 3、命令獲取信息
      • 配置文件
      • 環(huán)境變量
    • 4、文件系統(tǒng)
      • 創(chuàng)建與安裝
        • mkfs
        • mount
        • umount
      • 存儲(chǔ)結(jié)構(gòu)
        • stat
    • 5、文件和目錄的權(quán)限
      • 相關(guān)命令
        • chmod
        • umask
  • 四、bash及腳本程序設(shè)計(jì)
    • 1、shell的基本機(jī)制
      • 歷史與別名
        • history
        • 歷史替換
        • alias
        • TAB鍵補(bǔ)全
      • 輸入重定向

一、系統(tǒng)狀態(tài)查看工具

1、使用 Linux

超級(jí)用戶

root 用戶(超級(jí)用戶)

  • root 不受權(quán)限的制約,可隨意修改和刪除文件
  • root 用戶誤刪重要文件可能帶來嚴(yán)重后果

創(chuàng)建新用戶

由 root 用戶創(chuàng)建(useradd 命令),用戶信息存放 /etc/passwd 文件中,包括用戶名和用戶 ID,以及 Home 目錄, 登錄 shell

登錄 shell:一般為 bash,也可以選其他 shell,其他系統(tǒng)程序,甚至自設(shè)計(jì)的程序。

  • 用戶可以從普通終端或者網(wǎng)絡(luò)虛擬終端登錄進(jìn)入系統(tǒng)

使用 Linux

Shell 的提示符

登錄成功后出現(xiàn)shell提示符

  • $ Bourne Shell 系列 (sh, ksh, bash)

  • # 當(dāng)前用戶為超級(jí)用戶 root(操作時(shí)要小心)

系統(tǒng)的使用

  • 出現(xiàn)shell提示符以后就可輸入系統(tǒng)命令
  • 與Windows不同的是組成命令的英文字母大小寫敏感

2、幾個(gè)基本的Linux命令

man

作用:查閱手冊(cè)

使用方法

  • man name
  • man section name,章節(jié)編號(hào):1 命令,2 系統(tǒng)調(diào)用,3 庫函數(shù),5 配置文件
  • man -k regexp,列出關(guān)鍵字(keyword)與正則表達(dá)式 regexp 匹配的手冊(cè)項(xiàng)目錄

手冊(cè)內(nèi)容

  • 列出基本功能和語法
  • 對(duì)于 C 語言的函數(shù)調(diào)用,列出頭文件和鏈接函數(shù)庫
  • 功能說明
  • SEE ALSO:有關(guān)的其它項(xiàng)目的名字和章節(jié)號(hào)

date

作用:讀取系統(tǒng)日期和時(shí)間

使用方法

  • date,讀取系統(tǒng)日期和時(shí)間,Wed Nov 7 21:09:16 CST 2018

  • 可以根據(jù)需要定制使出格式

    • date "+%Y-%m-%d %H:%M:%S Day %j",2018-11-07 21:09:54 Day 311

    • date "+%s",1541596457

    • 311指的是今天是今年的第311天

      格式控制字符串:第一個(gè)字符必須為 + 號(hào),%Y 代表年號(hào), %m 代表月份,%M 代表分鐘。

      %s 秒坐標(biāo)(從 UTC1970 開始),常用于計(jì)算時(shí)間間隔

  • 通過 NTP 協(xié)議校對(duì)系統(tǒng)事件,ntpdate

    • ntpdate 0.pool.ntp.org,設(shè)置時(shí)間,必須 root 用戶
    • ntpdate -q 0.pool.ntp.org,查詢時(shí)間,普通用戶也可以

cal

作用:打印日歷

使用方法

  • cal,打印當(dāng)前月份的日歷
  • cal year,打印某年的日歷
  • cal month year,打印某年某月的日歷

bc

作用:計(jì)算器

  • 基本計(jì)算器功能
  • 支持變量、函數(shù),條件和循環(huán)等編程功能(類似 C 語言的小編程語言)
  • 可以進(jìn)行任意精度的計(jì)算

精度

  • 缺省精度
    • bc,缺省精度為小數(shù)點(diǎn)后0位
    • bc -l,缺省精度為小數(shù)點(diǎn)后20位
  • 可以通過設(shè)置 scale 自行決定精度(小數(shù)點(diǎn)位數(shù))
    • scale=10000
    • s(1.0)

passwd

作用:更換口令

  • 普通用戶

    • 使用 passwd 命令更改自己的口令,更改前系統(tǒng)先驗(yàn)證原來的口令
  • 超級(jí)用戶 root

    • 修改口令之前不驗(yàn)證舊的口令

    • 可修改自己的口令,還可強(qiáng)迫設(shè)置其它用戶口令

    • 命令 passwd liu

      將用戶 liu 的口令強(qiáng)迫設(shè)置為某一已知口令

      超級(jí)用戶無法讀取其它用戶的口令

      當(dāng)普通用戶忘記口令時(shí),可請(qǐng)求超級(jí)用戶強(qiáng)設(shè)口令

    • 修改超級(jí)用戶 root 的口令時(shí)要特別注意

3、了解系統(tǒng)狀態(tài)

who

作用:確定有誰再系統(tǒng)中

使用方法

  • who,列出當(dāng)前已登錄入系統(tǒng)的用戶信息

    • 第一列:用戶名;第二列:終端設(shè)備的設(shè)備文件名
    • 設(shè)備在文件系統(tǒng)中有一個(gè)文件名(同普通磁盤文件不同的是文件類型屬于特殊文件),設(shè)備文件一般放于目錄 /dev 下
  • tty,打印出當(dāng)前終端的設(shè)備文件名

  • who am i,列出當(dāng)前終端上的登錄用戶信息

  • whoami,僅列出當(dāng)前終端上的登錄用戶名

uptime

作用:已開機(jī)時(shí)間(年齡)

使用方法

  • uptime
    • 系統(tǒng)自啟動(dòng)后到現(xiàn)在的運(yùn)行時(shí)間
    • 當(dāng)前登錄入系統(tǒng)的用戶數(shù)
    • 近期1分鐘,5分鐘,15分鐘內(nèi)系統(tǒng)CPU的負(fù)載
      • 平均調(diào)度隊(duì)列長度

top

作用:列出資源占用排名靠前的進(jìn)程

  • VIRT 進(jìn)程邏輯地址空間大小(virtual)
  • RES 駐留內(nèi)存數(shù)(Resident),也就是占用物理內(nèi)存數(shù)
  • SHR 與其他進(jìn)程共享的內(nèi)存數(shù)(share)
  • %CPU 占用CPU百分比,%MEM 占用內(nèi)存百分比
  • TIME+ 占用的CPU時(shí)間

ps

作用:查閱進(jìn)程狀態(tài)(process status),實(shí)際上就是將內(nèi)核中進(jìn)程狀態(tài)信息有選擇地打印出來

選項(xiàng)

  • 用于控制列表的行數(shù)(進(jìn)程范圍)和列數(shù)(每進(jìn)程列出的屬性內(nèi)容)
  • 無選項(xiàng):只列出在當(dāng)前終端上啟動(dòng)的進(jìn)程,列出的項(xiàng)目有:PID,TTY,TIME,COMMAND
  • -e 選項(xiàng):列出系統(tǒng)中所有的進(jìn)程(進(jìn)程范圍)
  • -f 選項(xiàng):以 full 格式列出每一個(gè)進(jìn)程(控制列的數(shù)目)
  • -l 選項(xiàng):以 long 格式列出每一個(gè)進(jìn)程(控制列的數(shù)目)

free

作用:了解內(nèi)存使用情況

  • 內(nèi)存總量 4GB, 空閑 309MB。Linux 為提高效率,利用程序暫時(shí)不用的內(nèi)存,緩沖讀寫過的磁盤信息。當(dāng)前有 717MB 的 buffer / cache。
  • 不計(jì) buffers / cache,系統(tǒng)有實(shí)際可利用資源 734MB
  • 打印了磁盤 Swap 區(qū)的使用情況

vmstat

作用:了解系統(tǒng)負(fù)載

二、文本文件處理

1、讀取文件內(nèi)容

more / less

作用:逐屏顯示文件

使用方法

  • more shudu.c 指定一個(gè)文件
  • more *.[ch] 指定多個(gè)文件
  • ls -l | more 指定0個(gè)文件
  • less shudu.c

more

滿屏后,顯示–more–或--more–(15%),可以使用 more 命令:

less

less is more

  • 回退瀏覽的功能更強(qiáng)
  • 可直接使鍵盤的上下箭頭鍵,或者 j, k,類似 vi 的光標(biāo)定位鍵,以及 PgUp, PgDn, Home, End鍵
  • 有的 Unix 系統(tǒng)不提供 less 命令,但是可利用 more 命令的增強(qiáng)功能

cat 與 od

作用:列出文件內(nèi)容

cat concatenate:串結(jié),文本格式打印 (選項(xiàng)- n:行號(hào))
od octal dump:逐字節(jié)打印(-c, -t c, -t x1, -t d1, -t u1 選項(xiàng))

舉例

  • cat tryl.c 命令行參數(shù) 1 個(gè)
  • cat –n shudu.c 顯示行號(hào)
  • cat tryl.c tryx.c try.h 命令行參數(shù) 3 個(gè)
  • cat >try 命令行參數(shù) =0 個(gè),從 stdin 獲取數(shù)據(jù),直到 ctrl-d
  • cat tryl.c try2.c try.h > trysrc
  • cat makefile *.[ch] > src
  • od –t x1 x.dat 以十六進(jìn)制打印文件 x.dat 各字節(jié)
  • od –t x1 x.dat | more 以十六進(jìn)制打印文件 x.dat 各字節(jié)
  • od –c /bin/bash 逐字符方式打印文件,遇到不可打印字符打印編碼
  • echo abcdABCD | od –t x1 十六進(jìn)制顯示字符的 ASCII 碼

head 與 tail

作用:顯示文件的頭部或者尾部

默認(rèn)只選擇 10 行, -n 選項(xiàng)可以選擇行數(shù)

舉例

  • head –n 15 ab.c 顯示文件 ab.c 中前15行
  • head –n 23 a.c b.c c.c | more 顯示三個(gè)文件各自的前23行共顯示69行
  • tail –n 40 liu.mail
  • head –n -20 msg.c 除去文件尾部20行其余均算“頭”
  • tail –n +20 msg.c 除去文件頭部20行其余均算作“尾”
  • tail -f debug.txt 實(shí)時(shí)打印文件尾部被追加的內(nèi)容(選項(xiàng) -f : forever)
    netstat -s -p tcp | head
    ls -s | sort | head –n 20

tee

作用:三通。將從標(biāo)準(zhǔn)輸入 stdin 得到的數(shù)據(jù)抄送到標(biāo)準(zhǔn)輸出 stdout 顯示,同時(shí)存入磁盤文件中。

舉例

  • ./myap | tee myap.log

wc

作用:字計(jì)數(shù)(word count)

  • 列出文件中一共有多少行,有多少個(gè)單詞,多少字符
  • 當(dāng)指定的文件數(shù)大于1時(shí),最后還列出一個(gè)合計(jì)
  • 常用選項(xiàng) -l:只列出行計(jì)數(shù)

舉例

  • wc sum.c (1個(gè)文件)
  • wc x.c makefile stat.sh (多個(gè)文件)
  • wc -l *.c makefile start.sh (只列出文件分別有多少行)
  • ps -ef | wc -l (0個(gè))
  • ps -ef | grep liang | wc -l (0個(gè))
  • who | wc -l (0個(gè))

sort

作用:對(duì)文件內(nèi)容排序

  • -n 選項(xiàng)(Numberic):對(duì)于數(shù)字按照算術(shù)值大小排序,而不是按照字符串比較規(guī)則,例如123與67
  • 可以選擇行中某一部分作為排序關(guān)鍵字
  • 選擇升序或降序
  • 字符串比較時(shí)對(duì)字母是否區(qū)分大小寫
  • 內(nèi)排序外排序等算法參數(shù)選擇(當(dāng)數(shù)據(jù)量較大時(shí),性能調(diào)優(yōu))

舉例

  • sort telno > telno1
  • ls -s | sort | tail –10
  • ls -s | sort -n | tail –10

tr

作用:翻譯字符

tr string1 string2:把標(biāo)準(zhǔn)輸入拷貝到標(biāo)準(zhǔn)輸出,string1 中出現(xiàn)的字符替換為 string2 中的對(duì)應(yīng)字符

舉例

  • cat telnos | tr UVX uvx
  • 例:用 [] 指定一個(gè)集合
    cat report | tr '[a-z]' '[A-Z]' 將小寫字母改為大寫字母
  • 例:用 \ 加三個(gè)八進(jìn)制數(shù)字(類似 C 語言)表示一字符
    cat file1 | tr % '\012' 將%改為換行符,注意不要漏掉必需的單引號(hào)

uniq

作用:篩選文件中的重復(fù)行(重復(fù)的行:緊鄰的兩行內(nèi)容相同)

用法

  • uniq options
  • uniq options input-file
  • uniq options input-file output-file

選項(xiàng)

  • -u(uniqe)只保留沒有重復(fù)的行

  • -d (duplicated)只保留有重復(fù)的行(但只打印一次)

    沒有以上兩個(gè)選項(xiàng),則打印沒有重復(fù)的行和有重復(fù)的行(但只打印一次)

  • -c (count)計(jì)數(shù)同樣的行出現(xiàn)幾次

2、正則表達(dá)式

功能

描述一個(gè)字符串模式

作用范圍:

  • 字符串匹配操作和替換操作
  • 舉例:Linux 中的 vi more grep yacc lex awk sed
  • 其他:Visual Studio,Word 等文本編輯器

注意:

正則表達(dá)式規(guī)則與文件名通配符規(guī)則不同

  • 正則表達(dá)式規(guī)則用于文本處理的場(chǎng)合
  • 文件名匹配規(guī)則用于文件處理的場(chǎng)合

單字符正則表達(dá)式

  • 長的正則表達(dá)式由單字符正則表達(dá)式構(gòu)成的

  • 非特殊字符與其自身匹配

    如:正則表達(dá)式 a 與字符串 a 匹配,b 與 b,/ 與 /

轉(zhuǎn)義字符(\)

\. \* \$ \^ \[ \\

正則表達(dá)式 \* 與字符串 * 匹配,與字符串 \* 不匹配

轉(zhuǎn)義字符后除以上六種之外的不該出現(xiàn)其他字符,例如:不該出現(xiàn) \u,這樣的組合被視為undefined(未定義的),后出的軟件有可能會(huì)有特殊的解釋

圓點(diǎn)(·)

匹配任意單字符

星號(hào)(*)

單字符正則表達(dá)式后跟 *,匹配此單字符正則表達(dá)式的 0 次或任意多次出現(xiàn)

錨點(diǎn)(^與$)

  • $ 在尾部時(shí)有特殊意義,否則與其自身匹配
    • 例:123$ 匹配文件中行尾的123,不在行尾的123字符不匹配
    • 例:?$123 與字符串 $123 匹配
    • 例:.$ 匹配行尾的任意字符
  • ^ 在首部時(shí)有特殊意義,否則與其自身匹配
    • 例:^printf 匹配行首的 printf 字符串,不在行首的 printf 串不匹配
    • 例:Hel^lo 與字符串 Hel^lo 匹配
    • 例:在 vi 中使用:10,50s/^ //g,刪除10-50行的每行行首的4個(gè)空格

集合([與])

基本用法
  • 在一對(duì)方括號(hào)之間的字符為集合的內(nèi)容,如:單字符正則表達(dá)式 [abcd] 與 a 或 b, c, d 匹配
  • 圓點(diǎn)、星號(hào)、反斜線在方括號(hào)內(nèi)時(shí),代表它們自己,如:[\*.] 可匹配 3 個(gè)單字符
用減號(hào) - 定義一個(gè)區(qū)間
  • 如 [a-d] [A-Z] [a-zA-Z0-9]
  • [][]集合含左右中括號(hào)兩個(gè)字符
  • 減號(hào)在最后,則失去表示區(qū)間的意義
    • [ad-] 只與3個(gè)字符匹配
用 ^ 表示補(bǔ)集
  • ^ 在開頭,則表示與集合內(nèi)字符之外的任意字符匹配
    • [^a-z] 匹配任一非小寫字母
    • [^][] 匹配任一非中括號(hào)字符
  • ^ 不在開頭,則失去其表示補(bǔ)集的意義
    • [a-z^] 能匹配 27 個(gè)單字符
舉例

正則表達(dá)式擴(kuò)展

  • 表示分組:圓括號(hào) ()

  • 表示邏輯運(yùn)算:表示邏輯 “” 的符號(hào) |
    (xy)* 可匹配空字符串, xy, xyxy, xyxyxy
    (pink|green) 與 pink 或 green 匹配

  • 重復(fù)次數(shù)定義:與星號(hào)地位類似的 + 和 ?,限定重復(fù)次數(shù) \{m,n\}

    • * 號(hào)表示它左邊的單字符正則表達(dá)式的0次或多次重復(fù)
    • + 號(hào)表示1次或多次: [0-9]+ 匹配長度至少為1數(shù)字串
    • ? 表示0次或一次: a? 匹配零個(gè)或一個(gè)a
    • 限定重復(fù)次數(shù) \{m,n\},例如: [1-9][0-9]\{6,8\} 匹配7-9位數(shù)字,首位非0
  • 命名的預(yù)定義集合

    [[:xdigit:]] 表示十六進(jìn)制數(shù)字,\d 數(shù)字,\D 非數(shù)字

  • 比 ^ 和 $ 更靈活的錨點(diǎn)定義

    例如:尋找一個(gè)數(shù)字串,但是要求這個(gè)數(shù)字串不許出現(xiàn)在“合計(jì)”兩個(gè)字之后(“合計(jì)”可作為錨點(diǎn))。

文本行篩選 grep

Global regular expression print

作用:在文件中查找字符串

語法:grep 模式 文件名列表,注意,文件名列表中只包含一個(gè)文件時(shí),結(jié)果不會(huì)顯示文件名,只有包含多個(gè)文件才顯示每個(gè)文件名

舉例

  • grep O_RDWR *.h
  • ps -ef | grep liang
  • ls -l / | grep '^d' | wc –l
  • grep '[0-9]*' shudu.c
  • grep '[0-9][0-9]*' shudu.c

grep選項(xiàng)

  • -n 顯示時(shí)每行前面顯示行號(hào)
  • -v 顯示所有不包含模式的行
  • -i 字母比較時(shí)忽略字母的大小寫
  • -E 使用擴(kuò)展的正則表達(dá)式

舉例

  • grep -n main *.c
    查找含有正則表達(dá)式 main 的行,并打印行號(hào)
    當(dāng)文件數(shù)超過一個(gè)時(shí),除了輸出行號(hào),還輸出文件名
  • grep -v '[Dd]isable' dev.stat>dev.active
    取消文件中所有含有指定模式的行,生成新文件
  • grep -i richard telnos
    在文件中檢索字符串 richard,不顧字母的大小寫

流編輯 sed

用法

  • sed '命令' 文件名列表
  • sed -e '命令1' -e '命令2' -e '命令3' 文件名列表
  • sed -f 命令文件 文件名列表

舉例

  • tail -f pppd.log | sed 's/145\.37\.23\.26/橋西/g',把 IP 地址 145.37.23.26 替換為 “橋西”,注意不要忘記轉(zhuǎn)義符號(hào) \

  • tail -f pppd.log | sed -f sed.cmd

    其中 sed.cmd 文件內(nèi)容為

    s/145\.37\.23\.26/橋西/g s/102\.157\.23\.109/柳蔭街/g s/145\.37\.123\.57/大山子/g
  • cat pm25.txt | sed 's/\[[^][]*]//g',刪除所有被中括號(hào)包圍的字段

正則表達(dá)式替換

復(fù)雜篩選及加工 awk

作用:逐行掃描進(jìn)行文本處理

用法

  • awk '程序' 文件名列表
  • awk -f 程序文件名 文件名列表

程序 條件 { 動(dòng)作 }

一段程序:awk 自動(dòng)對(duì)每行文本執(zhí)行條件判斷,滿足條件執(zhí)行動(dòng)作(內(nèi)置循環(huán))

多段程序:允許多段程序,程序間用空格或分號(hào)隔開

處理方式

  • **(行)**輸入文件的每行作為一個(gè) “記錄” ,變量 NR 就是行號(hào)

  • **(列)**每行用空格分隔開的部分,叫做記錄的 “域”

    內(nèi)置變量 $1 是第1域內(nèi)容,依次,?$2 是第2域內(nèi)容,…… 特別的,?$0 指的是整個(gè)這一行的內(nèi)容

  • awk 的處理為:符合條件的行,執(zhí)行相應(yīng)的動(dòng)作

awk描述的條件

awk描述的動(dòng)作

舉例

3、文件比對(duì)

文件內(nèi)容比對(duì)

cmp

作用:兩文件逐字節(jié)比較

用法:cmp file1 file2

功能

  • 逐字節(jié)比較兩個(gè)文件是否完全相同
  • 兩個(gè)文件完全相同時(shí),不給出任何提示
  • 兩個(gè)文件不同時(shí),打印出第一個(gè)不同之處
  • 在 Windows 中有類似的命令 COMP

md5sum / sha1sum

  • 使用 MD5 算法(散列函數(shù))根據(jù)文件內(nèi)容生成16字節(jié) hash 值,比較 hash 值是否相同,就可斷定兩文件內(nèi)容是否完全相同
  • 使用 SHA-1 算法的命令名為 sha1sum(20字節(jié) hash 值)
  • 常用于數(shù)據(jù)完整性(Data Integrity)驗(yàn)證和判斷位于網(wǎng)絡(luò)不同機(jī)器上的兩個(gè)文件內(nèi)容是否相同
  • 其他散列函數(shù)也可以用來完成這一任務(wù):sha512sum

求文本文件版本間差異

diff

作用:求出兩個(gè)文件的差別

用法

  • diff file1 file2
  • diff -u file1 file2

功能

  • 比較兩個(gè)版本的文本文件,以尋找兩者間差別
  • 輸出格式 normal, unified (-u)
  • normal 格式:列出一個(gè)如何將 file1 轉(zhuǎn)化為 file2 的指令
    • 這些指令有 a (Add), c (Change) 和 d (Delete)
    • 指令字母左邊的行號(hào)是 file1 的行號(hào),右面是 file2 的行號(hào)
    • 列出內(nèi)容時(shí),大于號(hào)后邊的內(nèi)容是需要在 file1 文件中增加的內(nèi)容;小于號(hào)后邊的內(nèi)容是需從 file1 中刪除的內(nèi)容
  • normal 格式文件轉(zhuǎn)化指令如下表

diff -u舉例

4、vi 編輯器

編輯狀態(tài)和光標(biāo)移動(dòng)

用戶的偏好設(shè)置

  • 用戶 HOME 目錄下的文件 .exrc,記作 $HOME/.exrc(每用戶一份,用戶獨(dú)立設(shè)置)

    set number # 每行左邊顯示行號(hào) set tabstop=4 # 制表符位置為4格對(duì)齊
  • 用運(yùn)行時(shí)檢查偏好設(shè)置
    :set

vi 的兩種工作狀態(tài)

  • 命令狀態(tài):鍵盤輸入解釋為命令
    • vi 一啟動(dòng)就進(jìn)入命令方式,鍵盤輸入解釋為命令
    • 一般按鍵無回顯
    • 以冒號(hào)可以引入行編輯的命令和查找命令
    • 編輯命令 i a 等,可以從命令狀態(tài)轉(zhuǎn)到文本狀態(tài)
  • 文本狀態(tài)
    • 鍵盤輸入解釋為輸入的文本
    • 可以輸入多行,每輸入完一行后按回車轉(zhuǎn)入下一行
    • 正文輸入時(shí)有回顯
    • 輸入完畢按鍵盤左上角的 Esc 鍵,返回到命令狀態(tài)
  • 正文插入
    • 命令 i 在當(dāng)前字符前插入正文段,直至按 Esc 鍵 (insert)
    • 命令 a 在當(dāng)前字符后插入正文段,直至按 Esc 鍵 (append)

光標(biāo)移動(dòng)

單字符移動(dòng)
  • 單字符移動(dòng)(四個(gè)字母鍵盤上相鄰的按鍵)
    • h 光標(biāo)左移一列
    • j 光標(biāo)下移一行
    • k 光標(biāo)上移一行
    • L 光標(biāo)右移一列
    • 一般可以直接使用鍵盤上的方向鍵代替這四個(gè)字母
  • 命令前加一整數(shù),表示這個(gè)命令連續(xù)執(zhí)行多少遍
    • 5h 光標(biāo)左移5列
    • 6j 光標(biāo)下移6行
    • 23k 光標(biāo)上移23行
    • 10L 光標(biāo)右移10列

注意:在 vi 命令狀態(tài)下的按鍵命令沒有回顯

翻頁
  • Ctrl-b 向后翻頁(Backward)
  • Ctrl-f 向前翻頁(Forward)
  • 一般可以用 PgDn 鍵代替 Ctrl-f,用 PgUp 鍵代替 Ctrl-b
  • 也可以使用下面的命令
    • 6Ctrl-f 向前翻6頁
    • 15Ctrl-b 向后翻15頁
光標(biāo)行內(nèi)快速移動(dòng)
  • 行尾行首
    • 將光標(biāo)移至當(dāng)前行首 ^
    • 將光標(biāo)移至當(dāng)前行尾 $
  • 移動(dòng)一個(gè)單詞
    • 移到右一個(gè)單詞 w
    • 移到左一個(gè)單詞 b
    • 也可以使用 6w 5b 命令
光標(biāo)移動(dòng)到指定行
  • 移到指定的行
    • :476 將光標(biāo)定位于第476行
    • :1 將光標(biāo)定位于第1行(文件首)
    • :$ 將光標(biāo)定位于文件尾
  • 在描述行號(hào)時(shí)可以使用
    • 圓點(diǎn) . 代表當(dāng)前行號(hào)
    • $ 代表最后一行的行號(hào)
  • 括號(hào)配對(duì) %
    • 把光標(biāo)移到一個(gè)花括號(hào)(或圓括號(hào),或方括號(hào))上,按 % 鍵,則光標(biāo)自動(dòng)定位到與它配對(duì)的那一個(gè)括號(hào)

查找、編輯及存盤

刪除和替換

  • 刪除字符
    • 刪除當(dāng)前字符的命令 x
    • 命令 5x 刪除從當(dāng)前光標(biāo)開始的5個(gè)字符
  • 刪除行
    • 刪除當(dāng)前行的命令 dd
    • 命令 3dd 刪除從當(dāng)前行開始的3行
  • 替換光標(biāo)處字符 r
    • ra 命令將當(dāng)前光標(biāo)處字符替換為 a
    • 將當(dāng)前光標(biāo)處開始的三個(gè)字符依次替換為 abc,則需要按命令 rarbrc

取消和重復(fù)

  • 取消上一次的編輯操作(undo) u
    • 如:誤刪了一段正文,用 u 命令可撤銷刪除
    • 如:把文件中的所有abc字符串替換成xyz字符串, 用 u 命令可撤銷替換
  • 重復(fù)上一次的編輯操作 .
    • 按圓點(diǎn)鍵,可以重復(fù)上一次的編輯操作
    • 例如:按 3dd 命令刪除了三行,然后按圓點(diǎn)鍵就再刪除三行,接著連續(xù)按圓點(diǎn)鍵,每按一次刪三行

文件操作命令

存盤退出:

  • ZZ
  • :wq<CR>

存盤不退出::w<CR>

不存盤退出::q!<CR>

讀入文件 xyz.c 插入到當(dāng)前行之下::r xyz.c<CR>

寫文件,把第50行至文件尾的內(nèi)容寫到文件 file1 中:

  • :50,$w file1<CR>
  • :50,$w! file1<CR>,強(qiáng)制覆蓋

剪貼板

刪除,并拷貝到剪貼板:

  • :10,50d<CR>,刪除第10-50行
  • :1,.d<CR>,刪除文件首至當(dāng)前行的部分
  • :.,$d<CR>,刪除當(dāng)前行到文件尾

不刪除,拷貝到剪貼板(yank)::10,50y<CR>

粘貼剪貼板信息(paste):p

塊操作:復(fù)制與刪除

復(fù)制::5,10co56<CR>,復(fù)制第5-10行到第56行之下

移動(dòng)::8,34m78<CR>,移動(dòng)第8-34行到第78行之下

行合并、刷屏和狀態(tài)顯示

兩行合并(Join) J,當(dāng)前行下面的行合并到當(dāng)前行

刷新屏幕顯示(load) Ctrl-l

狀態(tài)顯示 Ctrl-g,在屏幕最下面一行列出正在編輯的文件的名字,總行數(shù),當(dāng)前行號(hào),文件是否被修改過等信息

模式查找與替換

用正則表達(dá)式來描述一個(gè)字符串模式

查找命令

  • 格式為 /pattern
  • 例如:/[0-9][0-9*]

繼續(xù)查找命令

  • n 向下查找下一個(gè)next
  • N 向上查找下一個(gè)
  • 循環(huán)式搜索(向下搜索時(shí)遇到文件尾則回到文件頭繼續(xù)搜索)

替換命令(substitution)

  • 格式 :n1,n2s/pattern/string/g
  • 例如
    • :1,50s/abc/xyz/,不帶 g 則每一行只替換第一個(gè)符合模式的
    • :1,50s/abc/xyz/g,帶 g 會(huì)替換一行中所有符合模式的
    • :50,75s/^/ /,第50-75行右移4列
    • :50,75s/^ //,第50-75行左移4列
    • :1,$s/ *$//,消除尾部多余的空格
    • :1,$s/a[i]/b[j]/g,小心陷阱:不能把 a[i] 替換為 b[j],要帶轉(zhuǎn)義符 \
    • :1,$/a*b/x+y/g,小心陷阱:不能把 a*b 替換為 x+y

轉(zhuǎn)義符

  • 將 a[i]*b[j] 替換為 x[k]*y[n] 的命令::1,$s/a\[i]\*b\[j]/x[k]*y[n]/g

  • 將 buf.len/1000 替為 buffer.size/1024 的命令::1,$s/buf\.len\/1000/buffer.size\/1024/g,模式串和替換字符串中的斜線前加轉(zhuǎn)義符\ 以區(qū)別于替換命令格式中所必須的斜線

    :1,$s:buf\.len/1000:buffer.size/1024:g,s后面以冒號(hào)取代斜線,分界符就換為冒號(hào),避免對(duì)斜線的轉(zhuǎn)義,其他分隔符(如 ^)同理,:1,$s^http://www\.myvdo\.com/a/b/c/index\.html^https://www.xyvdo.com/index.html^g

假“死機(jī)”問題

  • 現(xiàn)象

    vi 編輯結(jié)束后執(zhí)行存盤操作,結(jié)果導(dǎo)致屏幕卡死,輸入任何信息都不再有顯示(死機(jī),終端死機(jī))

  • 原因

    vi 編輯結(jié)束后按下 Ctrl-S,因?yàn)?Windows 編輯器一般設(shè)置 Ctrl-S 熱鍵的動(dòng)作為 Save,但 Linux 卻進(jìn)入流量控制狀態(tài)

  • 解決方法

    按下 Ctrl-Q 鍵后流量控制解除

意外中止問題

  • 現(xiàn)象

    vi 編輯結(jié)束后存盤,程序意外中止,編輯成果丟失,文件內(nèi)容未發(fā)生變化

  • 原因

    vi 存盤命令 Shift-ZZ,誤操作為 Ctrl-ZZ,而 Ctrl-Z 按鍵導(dǎo)致當(dāng)前運(yùn)行進(jìn)程被掛起(suspend),暫停運(yùn)行(但進(jìn)程尚在,處于 Stopped 狀態(tài))

  • 解決方法

    調(diào)用 bash 的作業(yè)管理機(jī)制,恢復(fù)運(yùn)行被 Stopped 的進(jìn)程

    • jobs,列表當(dāng)前被 Stopped 的進(jìn)程有哪些
    • fg %1,或 %1,將1號(hào)作業(yè)恢復(fù)到前臺(tái)(foreground)運(yùn)行

三、文件系統(tǒng)管理

1、文件通配符

文件通配符規(guī)則

星號(hào) *

  • 匹配任意長度的文件名字符串(包括空字符串)
  • 點(diǎn)字符 (.) 作為文件名或路徑名分量的第一個(gè)字符時(shí),必須顯式匹配
  • 斜線 (/) 也必須顯式匹配
  • 例:*file 匹配 file, makefile,不匹配 .profile 文件,try*c 匹配 try1.c, try.c, try.basic

問號(hào) ?

  • 匹配任一單字符

方括號(hào) [ ]

  • 匹配括號(hào)內(nèi)任一字符,也可以用減號(hào)指定一個(gè)范圍
  • 例:[A-Z]*, *.[ch], [Mm]akefile

波浪線 ~

(Bash特有的)

  • ~,當(dāng)前用戶的主目錄(home)
  • ~kuan,用戶kuan的主目錄(home)

注意

處理過程

shell 和 kernel

  • shell
    • shell 是一個(gè)用戶態(tài)進(jìn)程,如 /bin/bash
    • 對(duì)用戶提供命令行界面
    • 啟動(dòng)其他應(yīng)用程序(ap)使用操作系統(tǒng)核心提供的功能:包括系統(tǒng)命令和用戶編寫的程序
  • kernel:操作系統(tǒng)核心
    • 管理系統(tǒng)資源(包括內(nèi)存,磁盤等)運(yùn)行在核心態(tài)
    • 通過軟中斷方式對(duì)用戶態(tài)進(jìn)程提供系統(tǒng)調(diào)用接口

shell文件名通配符處理

文件名通配符的處理由 shell 完成,分以下三步:

  • 在 shell 提示符下,從鍵盤輸入命令,被 shell 接受
  • shell 對(duì)所鍵入內(nèi)容作若干加工處理,其中含有對(duì)文件通配符的展開工作(文件名生成),生成結(jié)果命令
  • 執(zhí)行前面生成的結(jié)果命令

舉例

設(shè)當(dāng)前目錄下只有 try.c, zap.c, arc.c 三文件

  • 鍵入內(nèi)容 cat *.c
  • 實(shí)際執(zhí)行 cat arc.c try.c zap.c(按字典序)
  • 對(duì)命令 cat 來說,指定了3個(gè)文件

grep a*.c try.c grep 'a*.c' try.c 的區(qū)別

  • 設(shè)當(dāng)前目錄下有 a1.c 和 a2.c
  • 前者實(shí)際執(zhí)行 grep a1.c a2.c try.c,在 a2.c 和 try.c 中查找正則表達(dá)式 a1.c
  • 后者在 try.c 文件中查找正則表達(dá)式 a*.c

鍵入命令時(shí)的簡化輸入

  • 手工鍵入 vi m*e,實(shí)際執(zhí)行 vi makefile
  • 手工鍵入 cd *sna*,實(shí)際執(zhí)行 cd configure-IBM-sna-network.d

2、文件和目錄的管理

列出文件目錄

ls

作用:文件名列表

選項(xiàng)

  • -F,Flag

    • 若列出的是目錄,就在名字后面綴以斜線 /
    • 若列出的是可執(zhí)行文件,就在名字后面綴以星號(hào) *
    • 若列出的是符號(hào)連接文件,就在名字后面綴以符號(hào) @
    • 若列出的是普通文件,則名字面后無任何標(biāo)記
  • -l,長格式列表

    • -rwxr-x--x 1 liang stud 519 Jul 5 15:02 arg

    • 第1列第1字符為文件屬性

      - 普通文件,d 目錄文件(Dir),l 符號(hào)連接文件(Link),b 塊設(shè)備文件(Block),c 字符設(shè)備文件(Char),p 命名管道文件(Pipe)

    • 第1列2-10字符為文件訪問權(quán)限(rwx,讀、寫、可執(zhí)行),分別為文件所有者、同組用戶、其他用戶的權(quán)限

    • 第2列是文件 link 數(shù),涉及到此文件的目錄項(xiàng)數(shù)

  • -h,human-readable,以便于人閱讀的方式打印數(shù)值(例如:1K 234M 2G)

  • -d,directory,當(dāng) ls 的參數(shù)是目錄時(shí),不像默認(rèn)的情況那樣列出目錄下的文件,而是列出目錄自身的信息

  • -a,all,列出文件名首字符為圓點(diǎn)的文件(默認(rèn)情況下這些文件不列出,經(jīng)常會(huì)用來保存用戶的偏好設(shè)置信息或保存某些軟件的狀態(tài)信息)。

  • -A,功能與 -a 相同,除了不列出 . 和 ..

  • -s,size,列出文件占用的磁盤空間

  • -i,inode,列出文件的 i 結(jié)點(diǎn)號(hào)

文件的復(fù)制與刪除

cp

作用:拷貝文件

使用方法

  • cp file1 file2
  • cp file1 file2 … filen dir,其中 file1, file2, …, filen 為文件名,dir 為已有目錄名。
  • 第二種格式中:dir 必須已經(jīng)存在并且是一個(gè)目錄
    第一種格式中:file2 不存在,則創(chuàng)建;file2 存在且是文件,則覆蓋;file2 存在且是目錄,則按格式二處理

選項(xiàng)

  • -u,update,增量拷貝,便于備份目錄
    • 根據(jù)文件的時(shí)戳,不拷貝相同的或者過時(shí)的版本的文件,以提高速度
    • 若 dir1 和 dir2 不慎顛倒位置,不會(huì)出現(xiàn)災(zāi)難性后果
  • -r,若給出的源文件是一目錄文件,此時(shí) cp 將遞歸復(fù)制該目錄下所有的子目錄和文件。此時(shí)目標(biāo)文件必須為一個(gè)目錄名。
  • -v,verbose,cp 命令將告訴用戶正在做什么。很多 Linux 命令都帶有具有相同意義的 -v 選項(xiàng)。

舉例

mv

作用:移動(dòng)文件

使用方法

  • mv file1 file2
  • mv file1 file2 … filen dir
  • mv dir1 dir2

功能

  • 使用 mv 命令可以將文件和目錄改名
  • 可以將文件和子目錄從一個(gè)目錄移動(dòng)到另一個(gè)目錄
  • mv dir1 dir2 兩種執(zhí)行情況(同文件系統(tǒng),不同文件系統(tǒng))

rm

作用:刪除文件

使用方法

  • rm file1 file2 … filen

選項(xiàng)

  • -r,遞歸地(Recursive)刪除實(shí)參表中的目錄,也就是刪除一整棵目錄樹。
  • -i,每刪除一個(gè)文件前需要操作員確認(rèn)(Inform)
  • -f,強(qiáng)迫刪除(Force)。只讀文件也被刪除并且無提示,無操作權(quán)限的文件強(qiáng)制刪除也不能刪掉。
  • 注意:正在運(yùn)行的可執(zhí)行程序文件不能被刪除

顯式區(qū)分命令選項(xiàng)和處理對(duì)象

目錄管理

pwd

作用:打印當(dāng)前工作目錄,print working directory

cd

作用:改變當(dāng)前工作目錄,Change Directory

mkdir

作用:創(chuàng)建目錄

例如:mkdir sun/work.d

mkdir 除創(chuàng)建目錄外,系統(tǒng)自動(dòng)建立文件 . 與 ..

選項(xiàng)

  • -p,自動(dòng)創(chuàng)建路徑中不存在的目錄。例如:mkdir -p database/2019/09/04/log

rmdir

作用:刪除目錄

例如:rmdir sun/work.d

要求被刪除的目錄除 . 與 .. 外無其他文件或目錄,否則應(yīng)該使用命令 rm -r sun/work.d 來刪除

目錄遍歷

find

作用:遍歷目錄樹。find 命令從指定的查找范圍開始,遞歸地查找子目錄,凡滿足條件的文件或目錄,執(zhí)行規(guī)定的動(dòng)作

舉例

  • find verl.d ver2.d -name '*.c' -print
    范圍:當(dāng)前目錄的子目錄 ver1.d 和 ver2.d
    條件:與名字 *.c 匹配。注:*.c 應(yīng)當(dāng)用引號(hào)括起
    動(dòng)作:把查找到的文件的路徑名打印出來

特點(diǎn)

  • 遞歸式查找,提供了一種遍歷目錄樹的手段
  • find 命令提供的靈活性:在“動(dòng)作”中可以指定任何命令(也包括用戶自己編寫的處理程序),使得 find 成為一個(gè)任意處理命令可以借用來進(jìn)行目錄遍歷的殼(類似 awk 對(duì)文本的逐行掃描, find 對(duì)目錄森林中的文件和目錄逐個(gè)掃描)

條件選項(xiàng)

  • -name wildcard,文件名與 wildcard 匹配。注意:
    • 使用正則表達(dá)式時(shí)必需的引號(hào)
    • 這里的 “文件名” 僅指路徑名的最后一部分
    • 對(duì)通配符的解釋由 find 完成
  • -regex pattern,整個(gè)路徑名與正則表達(dá)式 pattern 匹配
  • -type,f 普通文件,d 目錄,l 符號(hào)鏈接文件,c 字符設(shè)備文件,b 塊設(shè)備文件,p 管道文件
  • -maxdepth number,指定搜索深度為 number
  • -size ±n單位,指定文件大小(大于+,等于,小于-),單位有 c(字符),b (塊, 512 字節(jié)),k(1024),M,G,默認(rèn)為 b
  • -mtime ±ndays,文件最近修改時(shí)間
  • -newer file,文件最近修改時(shí)間比 file 的還晚
  • 可以用() –o !等表示多條件的 “與”,“或”,“非”

動(dòng)作選項(xiàng)

  • -print,打印查找的文件的路徑名
  • -exec
    • 對(duì)查找到的目標(biāo)執(zhí)行某一命令
    • 在 -exec 及隨后的分號(hào)之間的內(nèi)容作為一條命令
    • 在這命令的命令參數(shù)中,{} 代表遍歷到的目標(biāo)文件的路徑名
  • -ok,與 -exec 類似,只是對(duì)符合條件的目標(biāo)執(zhí)行命令前需要經(jīng)過操作員確認(rèn)
舉例
  • find . -type d -print,從當(dāng)前目錄開始查找,尋找所有目錄,打印路徑名。結(jié)果:按層次列出當(dāng)前的目錄結(jié)構(gòu)。

  • find / -name 'stud*' -type d -print,指定了兩個(gè)條件:名字與 stud* 匹配,類型為目錄。兩個(gè)條件邏輯 “與”,必須同時(shí)符合這兩個(gè)條件。

  • find / -type f -mtime -10 -print,從根目錄開始檢索最近10天之內(nèi)曾經(jīng)修改過的普通磁盤文件(目錄不算)

  • find . ! -type d -links +2 -print,從當(dāng)前目錄開始檢索 link 數(shù)大于2的非目錄文件條件 “非” 用 !。注意:! 與 -type 之間必須保留一空格。

  • find ~ -size +100k \( -name core -o -name '*.tmp' \) -print,從主目錄開始尋找大于 100KB 的名叫 core 或有 .tmp 后綴的文件

    • 使用了兩條件 “或” -o及組合 () (圓括號(hào))

    • 不要遺漏了所必需的引號(hào),反斜線和空格,尤其是圓括號(hào)前和圓括號(hào)后。圓括號(hào)是 shell 的特殊字符

    • 其他寫法

      find / -size +100k '(' -name core -o -name \*.tmp ')' -print

      find / -size +100k \( -name core –o -name \*.tmp ')' -print

  • find /lib /usr -name 'libc*.so' -exec ls -lh {} \;

    • -exec 及隨后的分號(hào)之間的內(nèi)容作為一條命令執(zhí)行
    • shell 中分號(hào)有特殊含義,前面加反斜線 \
    • {} 代表遍歷時(shí)所查到的符合條件的路徑名。注意,兩花括號(hào)間無空格,之后的空格不可省略
  • 利用 find 的遞歸式遍歷目錄的功能在文件中搜尋字符串,find src -name \*.c -exec grep -n -- --help {} /dev/null \;,在目錄 src 中所有 .c 文件中查找 --help 字符串

批量處理文件

xargs

find src -name \*.c -exec grep -n -- --help {} /dev/null \;,如果能把 find src -name \*.c –print 生成的文件名列表追加在 grep -n -- --help filelist 命令的后面就可以了。

命令 xargs 可以用來完成這個(gè)工作:find src -name \*.c –print | xargs grep -n -- --help

xargs 命令把標(biāo)準(zhǔn)輸入追加到參數(shù)表后面,也就是上述 grep… 的后面,再作為一個(gè)命令來執(zhí)行。這樣利用 find 精確篩選,利用 grep 批量處理文件,提高效率。

構(gòu)造參數(shù)列表并運(yùn)行命令
  • 解決 shell 文件名生成時(shí),因?yàn)槲募?#xff0c;緩沖區(qū)空間受限而文件名展開失敗的問題

    rm -f *.dat,文件名 *.dat 展開失敗,可以使用下面的命令 ls | grep ".dat$" | xargs rm -f

  • find 命中目錄名因刪除目錄導(dǎo)致目錄遍歷過程遇到麻煩

    find . -name CVS –exec rm –rf {} \; 改為:find . -name CVS -print | xargs rm -rf

打包與壓縮

tar

作用:文件歸檔。tar命令最早為順序訪問的磁帶機(jī)設(shè)備而設(shè)計(jì)的(Tape ARchive,磁帶歸檔),用于保留和恢復(fù)磁帶上的文件。

語法:tar ctxv[f device] [options] file-list

選項(xiàng)

  • 選項(xiàng)第一字母指定要執(zhí)行的操作,是必需的
    • c,create,創(chuàng)建新磁帶。從頭開始寫,以前存于磁帶上的數(shù)據(jù)會(huì)被覆蓋掉
    • t,table,列表。磁帶上的文件名列表,當(dāng)不指定文件名時(shí),將列出所有的文件。
    • x,eXtract,抽取。從磁帶中抽取指定的文件,不指定文件名則抽取所有文件。
  • 除功能字母外的其他選項(xiàng)
    • v,verbose,冗長。每處理一個(gè)文件,就打印出文件的文件名,并在該名前冠以功能字母。
    • f,file,指定設(shè)備文件名。
    • z,采用壓縮格式(gzip 算法)
    • j,采用壓縮格式(bzip2 算法)
  • options 選項(xiàng)
    • -C,大寫,解壓到指定目錄下,前提是目錄必須存在
舉例
  • tar cvf /dev/rtc0 .,將當(dāng)前目錄樹備份到設(shè) /dev/rct0 中,圓點(diǎn)目錄是當(dāng)前目錄

  • tar tvf /dev/rct0,查看磁帶設(shè)備 /dev/rct0 上的文件目錄

  • tar xvf /dev/rct0,查看磁帶設(shè)備 /dev/rct0 上的文件目錄

  • tar cvf my.tar *.[ch] makefile,指定普通文件代替設(shè)備文件,將多個(gè)文件或目錄樹存儲(chǔ)成一個(gè)文件。

    • 這一命令的危險(xiǎn)誤操作:tar cvf *.[ch] makefile,漏掉了功能字母 f 必需的 “設(shè)備文件名” ,按照 shell 對(duì)文件名的展開規(guī)則,會(huì)覆蓋掉現(xiàn)存的排位第一的文件,tar cvf a1.c a2.c ab.h makefile
  • 目錄打包,設(shè) work 是一個(gè)有多個(gè)層次的子目錄

    • tar cvf work.tar work
    • tar cvzf work.tar.gz work,gzip 壓縮算法,對(duì) C 源程序體積為原來的 20%
    • tar cvjf work.tar.bz2 work,bzip2 壓縮算法,對(duì) C 源程序 17%,執(zhí)行時(shí)間三倍

    查看歸檔文件中的文件目錄:tar tvf work.tar.gz

    從歸檔文件中恢復(fù)目錄樹:tar xvf work.tar.gz [-C mydir]

    注意:文件名后綴 .tar, .tar.gz, .tar.bz2 僅僅是慣例,不是系統(tǒng)級(jí)強(qiáng)制要求

3、命令獲取信息

配置文件

  • 存儲(chǔ)配置信息或者偏好配置信息
  • 分為系統(tǒng)級(jí)偏好設(shè)置用戶級(jí)偏好設(shè)置, 例如 bash 的 /etc/profile 和 ~/.bash_profile
  • 提供了靈活性(同一個(gè)程序文件因用戶不同讀取的配置文件不同而表現(xiàn)不同),變更這些信息不很方便, 一般不需要變化的配置信息或選項(xiàng)信息存入配置文件,持久化存儲(chǔ)

環(huán)境變量

  • 命令 env 可以打印當(dāng)前的環(huán)境變量。例如:LANG(語言), HOME(主目錄), PATH(可執(zhí)行文件的查找路徑), CLASSPATH(類庫), CVSROOT
  • 環(huán)境變量值的獲取與設(shè)置:C 語言有庫函數(shù) getenv()

4、文件系統(tǒng)

創(chuàng)建與安裝

mkfs

作用:創(chuàng)建文件系統(tǒng)(磁盤格式化)

mkfs /dev/sdb,在塊設(shè)備文件 /dev/sdb 上創(chuàng)建文件系統(tǒng)(make filesystem)

mount

作用:安裝子文件系統(tǒng)

mount /dev/sdb /mnt,/mnt 可以是任一個(gè)事先建好的空目錄名。此后,操作子目錄 /mnt 就是對(duì)子文件系統(tǒng)的訪問,從文件或目錄名看不出和其它根文件系統(tǒng)的對(duì)象有什么區(qū)別

mount,不帶參數(shù),列出當(dāng)前已安裝的所有子文件系統(tǒng)

umount

作用:卸載已安裝的子文件系統(tǒng)

umount /dev/sdb

存儲(chǔ)結(jié)構(gòu)

這部分建議去學(xué)習(xí)操作系統(tǒng),這里不展開

stat

作用:讀取 i 節(jié)點(diǎn)信息

stat test.c

5、文件和目錄的權(quán)限

相關(guān)命令

chmod

作用:修改權(quán)限

  • 字母形式

    • chmod [ugoa] [+-=] [rwxst] 文件名表
    • u – user,文件主的權(quán)限;g – group,同組用戶;o – other,其他用戶;a – all,上述所有;t – sticky;s – SUID
    • 例子:chmod u+rw *,chmod go-rwx *.[ch],chmod a+x batch,chmod u=rx try2
  • 數(shù)字形式(八進(jìn)制)

    • 例:chmod 644 xyz1 xyz2

注意:只允許文件主和超級(jí)用戶修改文件權(quán)限

umask

作用:決定文件/目錄的初始權(quán)限

  • 用 vi 新建文件
  • 用輸出重定向創(chuàng)建文件
  • 創(chuàng)建新目錄

使用方法

  • umask,打印當(dāng)前的 umask 值
  • umask 022,將 umask 值設(shè)置為八進(jìn)制的022

四、bash及腳本程序設(shè)計(jì)

1、shell的基本機(jī)制

歷史與別名

history

內(nèi)部命令 history,查看歷史表(文件 $HOME/.bash_history)

查看先前鍵入的命令

歷史替換

人機(jī)交互時(shí)直接使用上下箭頭鍵

!!,引用上一命令

! str,以 str 開頭的最近使用過的命令,如:!v,!m,!.

alias

TAB鍵補(bǔ)全

  • 每行的首個(gè)單詞:TAB鍵補(bǔ)全搜索 $PATH 下的命令
  • 行中的其它單詞:TAB鍵補(bǔ)全當(dāng)前目錄下的文件名

輸入重定向

<filename

<<word

<<<word

輸出重定向與管道

stdout輸出重定向

stderr輸出重定向

舉例

管道

2、變量

賦值與引用

3、替換

Shell 的替換工作:先替換命令行再執(zhí)行命令

文件名生成

命令替換

反撇號(hào) `

$()格式

位置參數(shù)

4、元字符和轉(zhuǎn)義

5、條件

條件判斷的依據(jù):判定一條命令是否執(zhí)行成功。方法:命令執(zhí)行的返回碼,0表示成功,非0表示失敗。可以把命令執(zhí)行結(jié)束后的“返回碼”理解為“出錯(cuò)代碼”。

邏輯判斷

內(nèi)部命令 $?

復(fù)合邏輯

test 和 方括號(hào)命令 [

  • 命令 /usr/bin/[,要求其最后一個(gè)命令行參數(shù)必須為 ]
  • 除此之外 /usr/bin/[ 與 /usr/bin/test 功能相同
  • 注意:不要將方括號(hào)理解成一個(gè)詞法符號(hào),而是一個(gè)名字為 [ 的命令
  • 舉例
    test -r /etc/motd
    [ -r /etc/motd ]

文件特性檢測(cè)

比較

復(fù)合條件

命令組合 {} 與 ()

條件分支

if

舉例

case

6、循環(huán)

expr

作用:算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算、正則表達(dá)式運(yùn)算

正則表達(dá)式運(yùn)算

內(nèi)部命令 eval

while 循環(huán)

多個(gè)命令放到一行時(shí),要用分號(hào)隔開

for 循環(huán)

7、函數(shù)

五、重定向與管道

1、重定向

2、管道

創(chuàng)建

關(guān)閉

舉例

3、一些命令

kill

作用:用于向進(jìn)程發(fā)送一個(gè)信號(hào)

使用方法:kill –signal PID-list

舉例

4、一些系統(tǒng)調(diào)用

signal

作用:進(jìn)程對(duì)信號(hào)的處理

進(jìn)程對(duì)到達(dá)的信號(hào)可以在下列處理中選取一種

  • 設(shè)置為缺省處理方式(大部分處理是程序中止,有的會(huì)產(chǎn)生core文件)。

    signal(SIGINT, SIG_DFL),參數(shù)1為信號(hào)宏,參數(shù)2為 SIG_DFL

  • 信號(hào)被忽略:signal(SIGINT,SIG_IGN),在執(zhí)行了這個(gè)調(diào)用后,進(jìn)程就不再收到 SIGINT 信號(hào)(該屬性會(huì)被子進(jìn)程繼承)

  • 信號(hào)被捕捉:signal(SIGINT,user_func),用戶事先注冊(cè)好一個(gè)函數(shù),當(dāng)信號(hào)發(fā)生后就去執(zhí)行這一函數(shù)。

kill

作用:發(fā)送信號(hào)

使用方法:int kill(int pid, int sig),返回值:0 成功,-1 失敗

六、進(jìn)程控制

1、一些系統(tǒng)調(diào)用

fork

作用:創(chuàng)建新進(jìn)程

使用方法:int fork(),對(duì)父進(jìn)程返回子進(jìn)程的 PID (>0),對(duì)子進(jìn)程返回值為 0,失敗時(shí)返回 -1

exec

wait

system

總結(jié)

以上是生活随笔為你收集整理的Linux基本总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。