Linux 基礎(chǔ)知識(shí)

不想看字,那就看看渣渣視頻吧

點(diǎn)擊鏈接,跳轉(zhuǎn)觀看: https://v.qq.com/x/page/m3022ziwe63.html
因?yàn)楹?jiǎn)書Markdown編輯器不支持視頻標(biāo)簽的樣子。

基本文件和目錄操作

日常文件操作

  1. copy cp

    $ cp
    $ cp file1 file2
    $ cp -r dir1 dir2 
    
  2. move and rename mv

    $ mv file ...
    $ mv file dir/
    
    $ mv file1 file2
    $ mv dir1 dir2 
    
  3. remove rm

    rm fileName
    rm -r dir
    
  4. 創(chuàng)建文件目錄和文件 mkdir&touch

    $ mkdir dirName
    
  5. 查看文件內(nèi)容 cat&less

    $ cat file # 適合比較短的文件
    $ less file # 適合比較長(zhǎng)的文件
    
  6. 查看文件類型及基本信息 file

    $ file fileName
    $ file dirName
    
  7. 查看文件大小 du

    $ du -k fileName
    $ du -m fileName
    
  8. 隱藏文件 .fileName

  9. 網(wǎng)絡(luò)文件下載 wget

  10. 通配符 *

  11. 壓縮與解壓縮 tar&unzip

    $ unzip fileName.zip
    $ zip -r x.zip x/
    
    $ tar zxvf xxx.tar.gz
    $ tar zcvf xxx.tar.gz xxx/
    
    $ tar jxvf xxx.tar.bz
    $ tar jcvf xxx.tar.bz xxx/
    

重定向

Ref: http://happypeter.github.io/LGCB/book/05_redirection.html

三個(gè)重要的文件

Everything is a file.

文件描述符(file descriptor)

文件描述符為 0的文件叫做 stdin (標(biāo)準(zhǔn)輸入文件),描述符為 1 的叫做 stdout (標(biāo)準(zhǔn)輸出文件),為2的叫 stderr (標(biāo)準(zhǔn)錯(cuò)誤輸出文件)。

系統(tǒng)默認(rèn)情況下,我們的鍵盤輸入都會(huì)寫入 stdin 文件,而程序執(zhí)行的正常輸出寫到 stdout 文件,報(bào)錯(cuò)信息寫到 stderr 文件,同時(shí)這兩個(gè)文件都是默認(rèn)綁定顯示器的,這也就是為啥我們可以在屏幕上看到程序輸出和報(bào)錯(cuò)的信息了。

正常情況下,在一個(gè)程序執(zhí)行的時(shí)候,會(huì)從鍵盤也就是 stdin 中讀取輸入,正常的輸出導(dǎo)入到 stdout,要是執(zhí)行發(fā)生了錯(cuò)誤,報(bào)錯(cuò)信息流向 stdout 。但是我們也可以動(dòng)手改變這三股數(shù)據(jù)流的流向,這個(gè)就是重定向。

各種重定向方法

  1. 標(biāo)準(zhǔn)輸出重定向 > & >>

    $ cat file1 > file2 # cat輸出內(nèi)容重定向至file2(覆蓋)
    $ cat file2 >> file1 # cat輸出內(nèi)容重定向至file1(不覆蓋,疊加)
    
    $ cat file1 file2 > file3 # 兩個(gè)弄成一個(gè)
    
  2. 標(biāo)準(zhǔn)錯(cuò)誤重定向 2>

    $ ls notExist 2> output.txt # 2是標(biāo)準(zhǔn)錯(cuò)誤輸出的文件描述符
    
  3. 重定向輸入

    $ cowsay < output.txt
    
  4. 管道 |

目的:我們希望把前一個(gè)程序的輸出,直接作為后一個(gè)程序的輸入來使用

Task: 把這個(gè)文件處理一下,去除里面的重復(fù)內(nèi)容(使用 `uniq` 命令),只保留 txt 文件(使用 `grep` ),然后按文件名字母順序來排序( `sort` 命令)

Ps: `tee`把數(shù)據(jù)流分成兩股,一股到文件,一股還到 stdout.

權(quán)限

ref: http://happypeter.github.io/LGCB/book/06_bash_perm.html

三種權(quán)限 “讀”, “寫”, “執(zhí)行”

Linux 是一個(gè)多用戶的操作系統(tǒng),也就是很多用戶可能同時(shí)使用一臺(tái)計(jì)算機(jī). 對(duì)于一個(gè)特定文件,系統(tǒng)會(huì)為他指定一個(gè)特定的用戶( user )作為它的所有者( owner )。 同時(shí)也一定會(huì)指定一個(gè)由一個(gè)或多個(gè)人組成的 group,作為這個(gè)文件的所有者組( owner group ), 嚴(yán)格的術(shù)語就叫組( group )。 這兩類之外的其他用戶歸為第三類人,叫 world 。這三類人各自的權(quán)限多少是可以任意指定的, 不一定誰多誰少,當(dāng)然一般來講 owner 的權(quán)限會(huì)多一些。

```
$ ls -al .
drwxr-xr-x 4 edward edward   4096 Nov 17 22:01 ./
drwxr-xr-x 4 edward edward   4096 Nov 17 21:19 ../
-rw-r--r-- 1 edward edward     21 Nov 17 21:20 pyfile.py
drwxr-xr-x 2 edward edward   4096 Nov 17 21:09 subfiles1/
```

drwxr-xr-x為例

第一個(gè)字符是關(guān)于“文件類型”:這一位常見的情況有,l 表示符號(hào)鏈接,如果我們查看的是一個(gè)目錄,那這里就會(huì)顯示 d ,- 表示普通文件。
接下來的九位每三位為一節(jié),分別代表“所有者”“用戶組”“其他人”的相關(guān)權(quán)限. 'r''w''x'分別代表擁有'read','write','execute'的權(quán)限,而'-'表示沒有對(duì)應(yīng)權(quán)限。

```
$ ls -ld dirName # 對(duì)指定文件夾查看權(quán)限
```

同樣是讀寫執(zhí)行三種權(quán)限,對(duì)于普通文件和目錄代表的意義是有差異的。 用戶對(duì)文件有讀權(quán)限,意味著用戶可以查看文件的具體內(nèi)容。 對(duì)目錄來說,就是可以看目錄中所包含的文件名。

寫權(quán)限對(duì)文件而言很好理解,就是我們可以修改里面的內(nèi)容。那是不是也意味者我們可以對(duì)文件進(jìn)行重命名或刪除操作呢? 答案為否。這要看包含該文件的目錄的權(quán)限。這就談到了一個(gè)目錄的寫權(quán)限的意義,我們對(duì)于一個(gè)目錄有寫權(quán)限,意味著我們可以對(duì)其中包含的文件或子目錄進(jìn)行創(chuàng)建,重命名或刪除(操作成功的前提是我們也同時(shí)擁有對(duì)該目錄的執(zhí)行權(quán)限)。

最后要談的是執(zhí)行權(quán)限(x), 我們對(duì)于一個(gè)二進(jìn)制文件(例如程序的編譯輸出),或者是一些腳本文件,例如 shell 腳本,python ruby 等腳本,執(zhí)行權(quán)限才有意義。 但是如果我們文件里存的是筆記或者是C程序的源代碼,那執(zhí)行權(quán)限是沒有什么意義的。這就是為什么系統(tǒng)上的大部分普通文件,如果我們用ls -l查看一下的話,都是沒有執(zhí)行權(quán)限的。但是正好相對(duì)的,我們用ls -ld查看一下系統(tǒng)上的目錄,發(fā)現(xiàn)基本上都是有執(zhí)行權(quán)限的。 對(duì)于沒有執(zhí)行權(quán)限的目錄,我們是不能跳轉(zhuǎn)進(jìn)去的,所以有沒有執(zhí)行權(quán)限,意味者我們能不能成功的 cd 到該目錄里。

修改文件模式 chmod

```
chmod rw-rw-rw- a.txt # 錯(cuò)誤寫法

chmod 110110110 a.txt # 錯(cuò)誤寫法,用1代表“使能”,0代表“禁止”

chmod 666 a.txt # 正確寫法,2進(jìn)制

chmod a+x pyfile.py # all add executable attr
chmod g+x pyfile.py # group
chmod u+x pyfile.py # user(owner)
```

進(jìn)程

獲取進(jìn)程號(hào) ps

- 查看系統(tǒng)當(dāng)前所有進(jìn)程 `ps aux`
- `ps aux | less` 
- grep 查找指定程序 `ps aux | grep vim`

殺死進(jìn)程 kill

`$ kill PID`

```
$ kill PID
$ killal progName

$ kill -9 PID # 強(qiáng)制關(guān)閉
```

Ctrl+Alt+F2 等等可以進(jìn)入其他console

后臺(tái)執(zhí)行 &

`$ progName &`

如果已經(jīng)在前臺(tái)啟動(dòng),占據(jù)當(dāng)前`shell`,使用`<C+z>`,可以把程序掛起,然后`bg`,`fg`可以使程序再回到前臺(tái)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容