不想看字,那就看看渣渣視頻吧
點(diǎn)擊鏈接,跳轉(zhuǎn)觀看: https://v.qq.com/x/page/m3022ziwe63.html
因?yàn)楹?jiǎn)書Markdown編輯器不支持視頻標(biāo)簽的樣子。
基本文件和目錄操作
日常文件操作
-
copy
cp$ cp $ cp file1 file2 $ cp -r dir1 dir2 -
move and rename
mv$ mv file ... $ mv file dir/ $ mv file1 file2 $ mv dir1 dir2 -
remove
rmrm fileName rm -r dir -
創(chuàng)建文件目錄和文件
mkdir&touch$ mkdir dirName -
查看文件內(nèi)容
cat&less$ cat file # 適合比較短的文件 $ less file # 適合比較長(zhǎng)的文件 -
查看文件類型及基本信息
file$ file fileName $ file dirName -
查看文件大小
du$ du -k fileName $ du -m fileName 隱藏文件
.fileName網(wǎng)絡(luò)文件下載
wget通配符
*-
壓縮與解壓縮
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è)就是重定向。
各種重定向方法
-
標(biāo)準(zhǔn)輸出重定向
>&>>$ cat file1 > file2 # cat輸出內(nèi)容重定向至file2(覆蓋) $ cat file2 >> file1 # cat輸出內(nèi)容重定向至file1(不覆蓋,疊加) $ cat file1 file2 > file3 # 兩個(gè)弄成一個(gè) -
標(biāo)準(zhǔn)錯(cuò)誤重定向
2>$ ls notExist 2> output.txt # 2是標(biāo)準(zhǔn)錯(cuò)誤輸出的文件描述符 -
重定向輸入
$ cowsay < output.txt 管道
|
目的:我們希望把前一個(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)。