---
# System prepended metadata

title: UNIX - Note
tags: [UNIX, 大二下]

---

# 大二下 - UNIX - Note
###### tags: `大二下` `UNIX`
:::danger
:100: 安裝容易出現的dpkg問題
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a
sudo rm /var/lib/dpkg/lock
sudo apt install tree
:::

## 期中考範圍
[[pdf筆記link](https://github.com/simoneyc/UNIX/blob/main/my_note.pdf)]
## 期末考範圍
#### CH6
* nl 把行號顯示出來
    >![](https://hackmd.io/_uploads/HJ8B5Vewn.png)
* pr 顯示時間 日期 filename 分成幾頁
    >![](https://hackmd.io/_uploads/B1fRcNgP2.png)
* head 默認顯示前10行
    * head -5 顯示前5行
* tail 默認顯示後10行
    * tail -4 顯示前4行
    * tail +12 顯示'前'12行
    * tail -5r 顯示後5個 但是倒序
    * tail -f 可以找還在增加的文件屁屁
* ls -l 看權限
    >![](https://hackmd.io/_uploads/rJyZRElw2.png)
* cp -f
    >可以複製權限
* mv -f 強制move不論權限
* rm -ir ~/filename 防止誤刪
* ls -l 數字17,4096是長度BYTE
    >![](https://hackmd.io/_uploads/SyyIy0ew3.png)
* wc
    >![](https://hackmd.io/_uploads/HJI6k0ePn.png)
    >```
    >行數 字數 BYTE數 filename
    >```
    >![](https://hackmd.io/_uploads/SJnqJAgPn.png)
* cat 123.txt >> 456.txt 
    >append 456.txt 在 123.txt 的屁屁
    >![](https://hackmd.io/_uploads/SJlhlAxP3.png)
* diff Fall_OH Spring_OH
    >![](https://hackmd.io/_uploads/rJX4fClwn.png)
    >```
    >錯誤訊息會印出來
    >```
    >![](https://hackmd.io/_uploads/SkB8MRlDh.png)
* uniq 刪去重複的line並顯示乾淨的行數
    > * uniq -c 會數幾個重複
    >![](https://hackmd.io/_uploads/Byqn4Cxwh.png)
    > * uniq -d 是抓出重複的人
    >![](https://hackmd.io/_uploads/SJZlrAxvn.png)
    > * uniq -d aa bb 是把aa重複的傢伙分離到bb
    >![](https://hackmd.io/_uploads/Bkm4BRlPn.png)
* Printing Files:(我沒有影印機不能測試!!)
    **有點懶得看print**
    >lp or lpr 可印
    >但不要print 非文字檔 
    >```
    >-d 指定在 qpr這台printer上影印qpr-984是ID
    >-n 3 sample phones是個別print3份sample跟phones
    >```
    >![](https://hackmd.io/_uploads/ByZaIRewh.png)

---
### CH7

* compress uncompress
    >我沒成功compress(?!)
    >檔名-> **.Z**
    >compress -v 可以看壓縮比例
    >![](https://hackmd.io/_uploads/rk6BYRevn.png)
* gzip gunzip
    >這個part看之前的HW
    >ppt不知道在寫啥 跨攏謀
* gzexe 壓縮exe (顯而易見吧!
* zcat & zmore
    >z貓貓可以偷看壓縮檔的原文
    >```
    >這是沒用z的樣子
    >```
    >![](https://hackmd.io/_uploads/SkGRsRgP3.png)
    >```
    >這是用zmore的偷窺狂
    >```
    >![](https://hackmd.io/_uploads/S1SehRgPh.png)
    >```
    >我弄出來了!!!
    >```
    >![](https://hackmd.io/_uploads/BJZg-yZPh.png)
* sort 可以sort(廢話!
    >```
    >單純sort try 就會照第一個col排序
    >```
    >![](https://hackmd.io/_uploads/BkgWT0lw2.png)
    >```
    >sort +1 try 變成第二個col排序
    >```
    >![](https://hackmd.io/_uploads/SJODp0gPh.png)
    >```
    >來個PPT的複雜範例:
    >+3 是第4col => 數字部分
    >-r 是倒序
    >-b 是忽略區域間的space(空白的ASCII更小)
    >```
    >![](https://hackmd.io/_uploads/Hkco6CxPn.png)
    >```
    >加碼一個PPT超複雜範例
    >+1 -2 是指主key從第二col(last name)那行~email那行前結束sort(也就是只排了last name啦~)
    >+3 是副key 等主key排完換副key
    >```
    >![](https://hackmd.io/_uploads/BkqyJkZw2.png)
* grep家族
    * grep
        >```terminal
        >grep -n John student
        >```
        >***顯示行號***
        >![](https://hackmd.io/_uploads/Bks6Zk-Pn.png)
        :::info
        注意事項:
        grep ' ' " "要有反斜線 => \\' or \\"
        :::
        >```terminal
        >grep '^[A-H]' student
        >```
        >```
        >中級用法
        >找出開頭A-H的人
        >(開頭的話用 ^ 表示)
        >```
        >![](https://hackmd.io/_uploads/H1bJt1bPn.png)
        >```terminal
        >grep "\<Ke" student
        >```
        >```
        >找開頭是Ke...的
        >```
        >![](https://hackmd.io/_uploads/HJxrKJWD3.png)
        >```terminal
        >grep '[a-z]'\{8\} student
        >```
        >```
        >高級用法
        >找至少連續8個小寫英文字母的人
        >```
        >![](https://hackmd.io/_uploads/HJcSO1-vn.png)
    * egrep
        >-n 是行號
        >找兩個人名 中間用 | 間隔
        >![](https://hackmd.io/_uploads/SkK3KkZw3.png)
        >下面這個是找***不含***那兩個人名的其他人們
        >```terminal
        >egrep -v Kimberly\|Nabeel student
        >```
* cut
    >**就是第一行=1,第二行=2...**
    >**我一定是瘋了才把這串打完**
    >![](https://hackmd.io/_uploads/HJce3yZv3.png)
    >```terminal
    >可能有以spase間隔的
    >就要用
    >cut -d -f1,6 name
    >```
    >![](https://hackmd.io/_uploads/ByHyCJbvn.png)
    >* ***剪貼遊戲START!!!***
        >![](https://hackmd.io/_uploads/HyQJlxWvh.png)
        >```
        >另一種方法 先paste再cut要的部分
        >```
        >![](https://hackmd.io/_uploads/Bk8c1xZw3.png)
* uuencode & uudecode
    >![](https://hackmd.io/_uploads/HJZsfdbD2.png)
* crypt
    >![](https://hackmd.io/_uploads/S1gVh_-vn.png)
    >crypt key < original_file > encrypted_file
    >crypt key < encrypted_file > original_file
    >
    >![](https://hackmd.io/_uploads/SJY3huWw2.png)
    >
    >我的範例:
    >a 是source, b 是加密後的, c 是解密後的
    >
    >加密a->b
    >![](https://hackmd.io/_uploads/HyZTCOZw3.png)
    >b
    >![](https://hackmd.io/_uploads/HyVR0dZvh.png)
    >解密b->c
    >![](https://hackmd.io/_uploads/rJYJkYWD3.png)
    >c
    >![](https://hackmd.io/_uploads/BJtxkYWP2.png)

---
### CH8

* hard link
    >![](https://hackmd.io/_uploads/HkT9yYZPh.png)
    >```terminal
    >ln b b.hard
    >ls -il
    >```
    >![](https://hackmd.io/_uploads/SyMftt-w3.png)
    >:::success
    >b & b.hard 有 inode number
    >:::
    >![](https://hackmd.io/_uploads/rykiYt-P2.png)

* ln
    >```terminal
    >ln -f 強制創建hard不論是否已存在
    >```
* soft link
    >![](https://hackmd.io/_uploads/rJZkCYWvh.png)
    >![](https://hackmd.io/_uploads/HJvgAtZv2.png)
* ln 
    >```terminal
    >ln -s ch3 ch3.soft
    >```


---
### CH9

* redirection
    >![](https://hackmd.io/_uploads/By21F9-Pn.png)
    >```
    >把lab1當成input ,output到lab2而不是顯示在screen上
    >```
    >![](https://hackmd.io/_uploads/Sk1dVqZP2.png)
        >
        >```terminal
        >grep "John" 0< input 就是input
        >```
        >```terminal
        >cat 1> out 就是output
        >```
        >```terminal
        >cat 2> erroe.log 就是紀錄error
        >```
        >---
        >```
    >EX:來個範例
    >把lab 123都output到cat.ouput, 把error寫入cat.error
    >```
    >![](https://hackmd.io/_uploads/B1tiI5bv2.png)
    >```
    >來一個output+error寫在一起的範例
    >```
    >用 => **2>&1**
    >![](https://hackmd.io/_uploads/rJafd9bv2.png)
    :::warning
    :+1: 可以用 \'>>\'來表示append到文件尾端
    :::
* pipe
    >**先來先做**
    >![](https://hackmd.io/_uploads/rJR15q-vn.png)
    >```
    >先sort再uniq
    >```
    >![](https://hackmd.io/_uploads/ByxAIccWP3.png)
* REDIRECTION AND PIPING COMBINED
    >```terminal
    >tee file1 file2 
    >```
    >可以用tee幫助後面的wc -l可以跟前面寫成一行
    >![](https://hackmd.io/_uploads/HkCW39ZD3.png)
    >![](https://hackmd.io/_uploads/rJXgpqWw3.png)
* FIFO
    >![](https://hackmd.io/_uploads/S1NyyiWv2.png)

---
### ch10

* 
    >![](https://hackmd.io/_uploads/Hy3m4oWvh.png)

---
### ch12

* 
    >![](https://hackmd.io/_uploads/B1qH8iWPn.png)
    >![](https://hackmd.io/_uploads/rkmzvoWDn.png)
    >```
    >print出變數的概念
    >```

---
## Homework try
* 顯示行數&字數
    >![](https://hackmd.io/_uploads/Sk85FoWD2.png)
* grep 反斜線之妙用
    >![](https://hackmd.io/_uploads/B1A83jbw2.png)
    >![](https://hackmd.io/_uploads/S13J13Wvn.png)
* egrep
    >**加了v是找到沒有Kim的line**
    >![](https://hackmd.io/_uploads/S1MNJhbw2.png)
* hard
    >![](https://hackmd.io/_uploads/BkqZGn-Pn.png)
* soft
    >![](https://hackmd.io/_uploads/SyD6f3Zvn.png)
* pipe
    >![](https://hackmd.io/_uploads/rJxrE2bv2.png)
:::danger
:face_with_monocle: 這個解釋一下:
先cat 兩個file -> tee 半路殺出一個file_combine -> 兩個file的內容被pip進去file_combine -> 對combine的file做tr -s \" \" -> 意思是把重複多餘的\" \"壓縮成一個(TAB to space) -> cut5 & 9 col的內容並且-d \" \"用來間隔我cut下來的內容 -> 再半路殺出一個file_cut放剪好的東西 -> 最後對cut做sorting -g是對數字sort +0指第一個col -> 完成後塞到 file_sort
:::
![](https://hackmd.io/_uploads/ByEWP2Zw2.png)

* system processes and daemons running
    >![](https://hackmd.io/_uploads/B1VGYnWP2.png)
* shell
    >![](https://hackmd.io/_uploads/SyFCKnbv2.png)
    >```
    >好玩的shell 可互動式
    >```
    >![](https://hackmd.io/_uploads/SJn7onZwn.png)
    >**變成**
    >![](https://hackmd.io/_uploads/HyW8s2Wwn.png)
    >**輸入我的名字後~**
    >![](https://hackmd.io/_uploads/HJxOjn-vn.png)





















