不想看字蹋凝,那就看看渣渣視頻吧
點(diǎn)擊鏈接柠硕,跳轉(zhuǎn)觀看: https://v.qq.com/x/page/m3022ziwe63.html
因?yàn)楹啎?code>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
rm
rm fileName rm -r dir
-
創(chuàng)建文件目錄和文件
mkdir
&touch
$ mkdir dirName
-
查看文件內(nèi)容
cat
&less
$ cat file # 適合比較短的文件 $ less file # 適合比較長的文件
-
查看文件類型及基本信息
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í)使用一臺計(jì)算機(jī). 對于一個(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
表示符號鏈接,如果我們查看的是一個(gè)目錄嗓袱,那這里就會(huì)顯示 d
籍救,-
表示普通文件。
接下來的九位每三位為一節(jié)渠抹,分別代表“所有者”“用戶組”“其他人”的相關(guān)權(quán)限. 'r''w''x'分別代表擁有'read','write','execute'的權(quán)限蝙昙,而'-'表示沒有對應(yīng)權(quán)限。
```
$ ls -ld dirName # 對指定文件夾查看權(quán)限
```
同樣是讀寫執(zhí)行三種權(quán)限梧却,對于普通文件和目錄代表的意義是有差異的奇颠。 用戶對文件有讀權(quán)限,意味著用戶可以查看文件的具體內(nèi)容放航。 對目錄來說烈拒,就是可以看目錄中所包含的文件名。
寫權(quán)限對文件而言很好理解广鳍,就是我們可以修改里面的內(nèi)容缺菌。那是不是也意味者我們可以對文件進(jìn)行重命名或刪除操作呢? 答案為否搜锰。這要看包含該文件的目錄的權(quán)限。這就談到了一個(gè)目錄的寫權(quán)限的意義耿战,我們對于一個(gè)目錄有寫權(quán)限蛋叼,意味著我們可以對其中包含的文件或子目錄進(jìn)行創(chuàng)建,重命名或刪除(操作成功的前提是我們也同時(shí)擁有對該目錄的執(zhí)行權(quán)限)。
最后要談的是執(zhí)行權(quán)限(x), 我們對于一個(gè)二進(jìn)制文件(例如程序的編譯輸出),或者是一些腳本文件狈涮,例如 shell 腳本狐胎,python ruby 等腳本,執(zhí)行權(quán)限才有意義歌馍。 但是如果我們文件里存的是筆記或者是C程序的源代碼握巢,那執(zhí)行權(quán)限是沒有什么意義的。這就是為什么系統(tǒng)上的大部分普通文件松却,如果我們用ls -l查看一下的話暴浦,都是沒有執(zhí)行權(quán)限的。但是正好相對的晓锻,我們用ls -ld查看一下系統(tǒng)上的目錄歌焦,發(fā)現(xiàn)基本上都是有執(zhí)行權(quán)限的。 對于沒有執(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)程號 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
后臺執(zhí)行 &
`$ progName &`
如果已經(jīng)在前臺啟動(dòng)战转,占據(jù)當(dāng)前`shell`,使用`<C+z>`,可以把程序掛起搜立,然后`bg`,`fg`可以使程序再回到前臺。