The First Task關(guān)于初入實(shí)驗(yàn)室
輪番的面試終于讓我這個(gè)菜鳥進(jìn)入了這個(gè)實(shí)驗(yàn)室,領(lǐng)到了自己的第一個(gè)任務(wù)還有點(diǎn)小興奮的。一個(gè)關(guān)于干預(yù)Windows10系統(tǒng)安裝Ubuntu系統(tǒng)成為雙系統(tǒng)的任務(wù)。興沖沖地跪領(lǐng)了學(xué)姐的安裝教程心想仔細(xì)研讀一番應(yīng)該不是什么難事。沒想到安裝過程曲折曲折還是曲折,還是求助了學(xué)長(zhǎng)。此處省略n個(gè)艱難的過程.

什么是Linux?
- Unix:商業(yè),不對(duì)學(xué)生開源。1973年用C語(yǔ)言重寫,方便移植到其他硬盤上。
- CNG:CNG is not Unix。在1984年發(fā)起,旨在構(gòu)建一個(gè)自由開放的操作系統(tǒng)。重新開發(fā)自由的工具軟件并推廣。開發(fā)gcc等其他基礎(chǔ)的軟件便于自由軟件的發(fā)展。開放軟件源碼,允許復(fù)制,傳播,修改。為防止自由軟件被其他人作為專利軟件,制定CPL授權(quán)。
- Linux:1991年,芬蘭大學(xué)生Linus基于X86系統(tǒng)開發(fā)出的Linux內(nèi)核。
Linux文件目錄與管理
-
文件系統(tǒng)架構(gòu)
-
Linux文件系統(tǒng)具有層級(jí)性
-
文件或者目錄起始于根目錄“/”成為樹狀結(jié)構(gòu)
-
由最頂層“/”開始
-
-
文件與目錄名區(qū)分大小寫
-
路徑通過“/”分隔開
-
“..”表示上層目錄?!?”表示當(dāng)前目錄
-
隱藏目錄以“.”開頭
-
-
LS指令操作
-
ls列出當(dāng)前目錄內(nèi)容
-
ls/顯示根目錄,如:ls/home
-
ls-a顯示隱藏目錄與文件
-
ls-l顯示詳細(xì)內(nèi)容
-
ls-ld顯示目錄本身屬性
-
Ubuntu中的指令
- pwd:顯示當(dāng)前工作目錄名
- ls:列出當(dāng)前工作中的內(nèi)容
- cd:進(jìn)入到某目錄。如cd/home/san/就到了桌面的工作目錄。"."表示當(dāng)前路徑,如果從/home/san/進(jìn)入/home/san/桌面,輸入cd ./桌面。./可以省略,則輸入 cd 桌面
- cp:復(fù)制
- " cp -r dir1 dir2 '' 把文件夾1復(fù)制一份并且命名為dir2
- '' cp file1 file2'' 把文件1復(fù)制一份并命名為file2
- mv:
- 移動(dòng)文件目錄:
- " mv dir1 file1 桌面/dir2'' 把文件夾1與文件1移動(dòng)到桌面的dir2中
- 重命名文件目錄:
- '' mv dir1 dir2'' 把dir1重命名為dir2
- 移動(dòng)文件目錄:
- rm:刪除文件目錄
- ''rm file1'' 刪除文件file1
- "rm -r dir1" 刪除文件夾dir1
創(chuàng)建目錄的方法
- mkdir dir 創(chuàng)建dir文件夾
- touch file 創(chuàng)建一個(gè)名為file的文件
- > file 創(chuàng)建一個(gè)名為file的文件
- vim file 打開名為file的文件,可以寫入內(nèi)容,如果沒有file,則創(chuàng)建一個(gè)file
查看文件內(nèi)容的方法
- "'cat file'' 查看file文件內(nèi)容
- "less file" 有快捷鍵,可以看較長(zhǎng)的文件
查看文件類型file
- "file dir1" 查看dir1 的文件類型
- "file file2" 查看file2的文件類型
查看文件大小
- "du -k file'' (KB)
- "du -m file"(MB)
創(chuàng)建隱藏文件
- "mkdir . dir2" 創(chuàng)建隱藏文件夾dir2
- "touch .aa" 創(chuàng)建隱藏文件aa
查看隱藏文件
- ''ls -a''
通配符
"*"日常命令操作就夠用了
例如:
$ ls
a.text b.text ccc.txt a.html hello.html
$ echo *.text
$ echo a*
解壓縮文件
unzip x.zip 解壓X.zip文件
zip -r x.zip x/ 壓縮文件
tar zxvf xxx.tar.gz(解壓)
tar zcvf xxx.tar.gz xxx/(壓縮)
tar jxvf xxx tar .bzz(解壓)
tar jcvf xxx tar.bzz xxx/(壓縮)
重定向(拐彎)
三個(gè)重要的文件
linux下有個(gè)重要的傳統(tǒng),所有的東西都是文件,系統(tǒng)每打開一個(gè)文件會(huì)給這個(gè)文件分配文件描述符。
有三個(gè)文件是一直打開的,所以系統(tǒng)分配了三個(gè)固定的文件描述符:
- "0"是標(biāo)準(zhǔn)輸入文件(stdin)[直接在鍵盤上輸入數(shù)據(jù)]
- "1"是標(biāo)準(zhǔn)輸出文件(stdout)[數(shù)據(jù)不會(huì)保留在硬盤上,而是直接被顯示到屏幕之上]
- "2"是標(biāo)準(zhǔn)錯(cuò)誤輸出文件(stderr)[同"1"]
一個(gè)程序執(zhí)行時(shí),流程如下:從"0"進(jìn)入,正確則從"1"輸出,錯(cuò)誤從"2"輸出,輸出也通過屏幕來顯示。但我們也可以動(dòng)手改變這三股數(shù)據(jù)流向,此稱為重定向。
拐彎的各種方式
- 輸出重定向">"(redirect stdout)
特點(diǎn):每次重定向之前都把文件夾清空
兩個(gè)文件的和有兩種方式:$ cat file1 >> file2
$ cat file1 file2 - 重定向標(biāo)準(zhǔn)錯(cuò)誤輸出 " 2 >"(redirect stdout)
3.重定向標(biāo)準(zhǔn)的輸入"<"(redirect stdin)
例如:
- touch file1,給file1寫入“Hello World ”
touch file2,給file2寫入“你好”
執(zhí)行 cat file1 > file,這樣就把cat命令的數(shù)據(jù)流向,從stdout改為了流向文件file。如果 cat file2 > file,則我們又把file2的內(nèi)容 從cat該流向的stdout改為了流向file。但file的內(nèi)容會(huì)被覆蓋。但若執(zhí)行 cat file2 >> file 則不會(huì)。 - cat file1 file2 > file 我們也可以把文件弄成一個(gè)文件(這里我認(rèn)為的是文件的和)
- ls shit > output. txt shit 是個(gè)根本不存在的目錄,這樣錯(cuò)誤的信息會(huì)被打印到屏幕
ls shit 2> output.txt 那么錯(cuò)誤信息就會(huì)被存到output.txt
此時(shí)還能用到 cowsay程序輸出信息: cowsay < output.txt
管道線
更多時(shí)候我們希望把前一個(gè)程序的輸出,直接作為后一個(gè)程序的輸入來使用,這個(gè)時(shí)候就需要管道線“|”
-
例如:
有一堆文件:cat file.txt d.txt a.txt c.html b.txt b.txt
現(xiàn)在我們要把這個(gè)文件處理一下,去除重復(fù)內(nèi)容(uniq命令),只保留txt文件(grep),按字母順序來排序(sort)
cat file.txt | uniq | grep txt | sort > output.txt
權(quán)限
粗略地,用戶在自己主目錄下會(huì)擁有寫權(quán)限,主目錄之外一般只有讀權(quán)限
三種權(quán)限
- reading -r
- writing-w
- executing-x
LInux為多用戶操作系統(tǒng),用戶可分為:owner, group, world
1.文件模式
例如:
$ ls -l a.txt
-rw-rw-r--1sansan 0 Aug 30 11:50 a.txt
(我將從從左到右依次編號(hào)解釋意思)
1.“—”表示文件類型,文件類型的表示有三種:
"-"代表 file "l"代表 symlink "d"代表directory
2."rw-rw-r--" 代表了文件模式:
"rw-"描述owner對(duì)該文件的權(quán)限情況
"rw-"描述group對(duì)該文件的權(quán)限情況
"r--"描述world對(duì)該文件的權(quán)限情況。(r,w,x 則分別對(duì)應(yīng)三種權(quán)限,-則意思為"no perm"也就是無權(quán)限操作)
- 對(duì)于目錄來說,寫權(quán)限可以是 creat/delete/rename file in it.執(zhí)行權(quán)限則是我們可以進(jìn)入這個(gè)目錄
- 對(duì)于文件來說,有執(zhí)行權(quán)限則可以把它當(dāng)作一個(gè)程序來執(zhí)行,沒有權(quán)限則進(jìn)行不了
Chmod(修改文件權(quán)限)
例如:
$ ls -l a.txt
-rw-rw-r-- 1 san san 0 Aug30 11:50 a.txt
- 修改world的操作權(quán)限:
- $ chmod rw-rw-rw- a.txt (錯(cuò)誤)
- $ chmod 110 110 110 a.txt (錯(cuò)誤)[二進(jìn)制表示,1表示可以執(zhí)行,0表示無權(quán)限執(zhí)行]
這時(shí)我們可以通過八進(jìn)制來表示,八進(jìn)制為chmod的合法參數(shù) - $chmod 666 a.txt(正確)
舉個(gè)例子:
$ vim san .sh
$ ./san,sh
Permission denied
$ chmod +x san.sh
$ ./san.sh
hello san
要去除剛剛加上的的執(zhí)行權(quán)限,可以:$ chmod -x san.sh
其他形式還有許多: $ chmod +w file $chmod -w file
進(jìn)程
用戶每次在系統(tǒng)上執(zhí)行一個(gè)新的程序,系統(tǒng)都會(huì)在底層開啟一個(gè)新的進(jìn)程。
如何獲取進(jìn)程號(hào)?
PID(process ID)進(jìn)程號(hào)。Linux系統(tǒng)上有一個(gè)命令叫PS
$ man ps
它的作用是:報(bào)告當(dāng)前的進(jìn)程狀態(tài)
$ ps aux
它的作用是:查看系統(tǒng)當(dāng)前的所有進(jìn)程
內(nèi)容較多時(shí)可以用less來做分頁(yè)器,從開頭查看
$ ps aux| less
敲/vim 可以查找到我們想要的vim這個(gè)進(jìn)程。當(dāng)我們那一部分代表進(jìn)程號(hào)之后,后面一般用管道線加grep來進(jìn)行查找
$ps aux |grep vim
拿到進(jìn)程號(hào)后,復(fù)制粘貼就可以對(duì)這個(gè)進(jìn)程進(jìn)行操作,比如可以結(jié)束這個(gè)進(jìn)程:
kill 7896(隨意寫的)
查找
Locate
例如:
locate pattern
這樣會(huì)找到系統(tǒng)上的任何路徑中包含 pattern的文件和目錄,用通配符表示就是*pattern*。但是locate不可能找到系統(tǒng)上新創(chuàng)建的文件,因?yàn)閘ocate不是搜索整個(gè)系統(tǒng)文件,而是從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),updated可以把文件系統(tǒng)中的命令存放在數(shù)據(jù)庫(kù)中,但每天只會(huì)進(jìn)行一次。
若非得采用locate來定位,則可加入:
$ sudo updated
此時(shí)運(yùn)用了超級(jí)用戶,此時(shí)可定位成功。
Find
find命令就是你給它指定一個(gè)目錄,它幫你翻個(gè)底朝天
只想看見文件: $ find. -type f
只想看見目錄: $ find. -type d
找到文件后,對(duì)其進(jìn)行操作,find支持exec
例如:
peter @dog:~/mydir$ find. -type f - exec(可輸入命令)'{}' ';'
(其中'{}'代表已找到的文件名)
- 若要找到字符串 則在-exec后+ grep Hello
- 若要打印出匹配項(xiàng)所在的文件在';'+** -print**
- 若要打印出匹配項(xiàng)所在的行數(shù)在 grep + -n
- 若讓grep在查找時(shí)忽略大小寫,在-n的基礎(chǔ)上加-ni
使用apt-get來安裝軟件
大部分常用軟件都可以直接去Ubuntu官方的apt倉(cāng)庫(kù)里直接下載。Ubuntu公司專門有人把源碼下載下來打造成一個(gè)deb包,然后上傳到工作的軟件倉(cāng)庫(kù)中,我們要做的就是敲出命令
$ sudo apt-get install git
那git這個(gè)軟件的deb包就被apt-get下載到本地,同時(shí)apt-get也包裹了dpkg命令,直接把安裝配置也完成。一個(gè)命令,git就可以直接用了
- 查找需要安裝的軟件包包名:
$ apt-cache search ncurse
$sudo apt-get install libncurse<tab>
- 卸載軟件包:
$ sudo apt-get remove git #保留配置文件
$ sudo apt-get purge git #連配置文件一起清除
學(xué)習(xí)總結(jié)
學(xué)習(xí)Ubuntu時(shí),不可避免存在許多問題,但是還是要感謝Peter提供的教程,視頻與文本的相結(jié)合讓我理解一些難點(diǎn)。