20155303狄惟佳预备作业三Linux学习笔记
20155303狄惟佳預備作業三Linux學習筆記
初次接觸Ubuntu系統以及Linux內核,了解了其產生的歷史,從感性來講,深深吸引我的是其中蘊含的珍貴的開源精神,以及Stallman等人對“人人為我,我為人人”軟件世界的追求。Ubuntu產生于一個軟件逐漸脫離硬件成為獨立產業的時代,很多軟件逐漸只提供二進制代碼而不提供源代碼。出于工作需要,Stallman決心創建一套完全自由的操作系統,從而創造自由的軟件世界。經過全世界有志之士的共同努力,Linux應運而生,并不斷被修改完善。開源,便是Ubuntu備受青睞的原因。
初識Ubuntu
Ubuntu系統通常會在每年4月和10月各發布一個新的版本。進入下載頁面,選擇16.04版本下載安裝即可。安裝好的界面如圖:
- 答疑解惑:Linux中的最高權限
之前聽說過Linux的root用戶,權力非常大,讓我想起了Windows系統里的administrator,出于對兩者區別的好奇,我上網學習了相關的知識。
- administrator
administrator看似是Windows系統下權力最高者,實則不然。Windows系統本身會進行自我保護,即使是管理者administrator的權利也不會大過系統本身的權力。嘗試將Windows系統C:\WINDOWS下的regedit.exe刪除(我抱著半信半疑的態度嘗試時真的心驚膽戰!),但刷新幾次之后又復原了。所以,Windows系統下的權力最高者是SYSTEM本身。
- root
在Ubuntu下(或者其他Linux系統)權力最高者,毋庸置疑是root!root在系統中擁有真正至高無上的權力,甚至可以運行rm -rf刪除系統中所有文件(危險動作,自覺放棄了嘗試...)。而Windows下是不可能在系統運行時格式化系統盤的。
- 兩者為什么不同
administrator與root有這些不同,我認為歸根到底是兩個操作系統的理念不同。Linux作為一個面向廣大程序設計者的操作系統,其優勢在于每個人都可以獲得這個系統全部的源代碼,并根據自己的需求進行修改。這種開放的原則使得系統本身為人類所創造,并可以為人類所任意修改。我想這也是開源精神一種體現吧。
命令行的使用
使用Ctrl+Alt+t打開終端,看到如圖所示的窗口
這種圖形界面下的命令行窗口,叫做偽終端。操作系統和用戶在這個窗口里使用命令進行交流。通過查閱資料了解到,之所以稱為偽終端,是因為它只是負責提供一個輸入命令的交互界面,真正處理命令的是Shell。
在Ubuntu系統中,默認的Shell是bash,比如第一行出現的“shiyanlou:~/ $”就是bash的語言。其中,“:”后面,“$"前面是當前所在目錄,“~”代表用戶的家目錄,也就是“/home/”這個位置。“$”則是命令提示符,在“$"后面輸入命令即可。如果使用root登錄終端,提示符為"#",但Ubuntu系統默認禁用root用戶,所以一般看不到#提示符。
Shell使用初探
一、目錄結構
①當前目錄與家目錄
運行ls命令可查看當前目錄下的所有文件。用戶每次打開終端時,默認進入家目錄里。命令行下可以使用~代表當前用戶的家目錄。
②進入指定目錄
使用$ cd 命令進入任意一個目錄中,只要有權限即可。
③絕對路徑與相對路徑
絕對路徑從“/”這個最根本的位置開始敘述,直接但有時比較費時。cd同時相對路徑,即從所在位置開始進行描述。使用時還要參考具體情況。如果不清楚所在目錄,可以輸入pwd命令查詢。
二、重要的Tab命令補全功能
遇到字母多的命令時,Tab鍵就顯得方便很多。比如要運行ifconfig命令,只要輸入ifc后按下Tab鍵就能自動補全。
通過查詢資料了解到,在按下Tab鍵的時候,bash遍歷PATH變量所設置的所有目錄,檢查了其中所有的有執行權限的文件(“Linux中一切皆文件”,命令也是個可執行的文件),最終找到ifconfig文件。
當然,如果只寫了if,按下Tab鍵,由于有四個命令均以if開頭,所以需要按兩次Tab鍵,列出所有以if開頭的命令,根據需要輸入即可。
三、通配符
DOS系統的通配符是“ * ”和“?”兩個符號。而Linux下的Shell有所不同。以bash為例,星號(*,Asterisk)——代表任何長度的任何字符。
問號(?,Question mark)——代表任何單個字符。
方括號([],Square brackets)——定義一定范圍的字符。
使用以上三種通配符可以在命令行的使用中提高效率。
以上大致了解了命令行的使用,而學習才剛剛開始。對于一名Linux新手來說,熟練掌握更多的命令才是最重要的。
通過近期在實驗樓的學習,初步掌握了一些常用命令的使用,總結如下:
- 常用快捷鍵
| CTRL+ALT+T | 打開終端 |
| CTRL+SHIFT+T | 新建標簽頁 |
| ALT+數字N | 終端中切換到第N個標簽頁 |
| Tab | 終端中命令補全 |
| 上下鍵盤 | 切換命令歷史 |
| CTRL+C | 中斷程序運行 |
- 用戶及文件權限管理
| who am i | 查看當前用戶 |
| su | 切換到用戶user(需要輸入目標用戶的密碼) |
| su - | 切換到用戶user |
| sudo adduser | 新建sudo組用戶user |
| su -l | 切換登錄用戶 |
| exit 或快捷鍵 Ctrl+d | 退出當前用戶 |
| groups | 查看該用戶所屬用戶組 |
| cat | 讀取指定文件的內容并打印到終端輸出 |
| cat /etc/group l grep -E | 過濾用戶組信息 |
| sudo usermod -G sudo | 將其他用戶添加到sudo組 |
| sudo deluser --remove-home | 刪除用戶 |
| ls -l | 列出并顯示當前目錄下的文件及詳細信息 |
| cat | 讀取某個文件的內容 |
| ls -A | 顯示除了 '.'(當前目錄),'..' 上一級目錄之外的所有包含隱藏文件 |
| ls -dl | 查看某一個目錄的完整屬性 |
| ls -AsSh | 顯示所有文件大小 |
| touch | 新建文件 |
| ll | 查看文件所有者信息 |
| cp | 復制文件 |
| echo "內容" > 文件名 | 在文件中添加內容 |
| chmod 三位數字 文件名 | 修改權限(三位數字為擁有者,所屬用戶組,其他用戶的rwx順序,有該權限為1) |
注意:Linux 下密碼輸入是不顯示任何內容的。
- Linux 目錄結構及文件基本操作
| tree / | 查看文件間關系 |
| sudo apt-get update;sudo apt-get install 軟件名 | 下載安裝軟件 |
| ls -a | 查看隱藏文件 |
| cd | 切換目錄 |
| cd .. | 進入上一級目錄 |
| cd ~ | 進入用戶“home”目錄 |
| pwd | 獲取當前路徑 |
| .. | 相對路徑中當前目錄的上一級目錄 |
| mkdir | 創建一個空目錄 |
| mkdir -p father/son/grandson | 同時創建一個多級目錄 |
| cp | 復制一個文件或目錄到指定目錄 |
| cp -r或cp -R | 復制目錄(遞歸復制) |
| rm | 刪除文件 |
| rm -f | 忽略提示強制刪除 |
| rm -r或rm -R | 刪除目錄 |
| mv 源目錄文件 目的目錄 | 移動文件(剪切) |
| cat,tac和nl | 查看文件(cat正序,tac倒序,nl添加行號并打印) |
| cat -n | 查看文件并顯示行號 |
| more | 分頁查看文件(使用Enter鍵向下滾動一行,使用Space鍵向下滾動一屏,按下h顯示幫助,q退出) |
| tail 文件路徑 | 只查看的頭幾行(默認為10行,不足10行則顯示全部)和尾幾行 |
| tail -n 頁數 文件路徑 | 只查看該行 |
| file | 查看文件的類型 |
- 環境變量與文件查找
| declare | 創建指定類型的變量 |
| = | 給左邊的變量賦值 |
| echo $ | 讀取變量的值($符號用于表示引用一個變量的值,不要忘記) |
| set | 顯示當前 Shell 所有環境變量,包括其內建環境變量(與 Shell 外觀等相關),用戶自定義變量及導出的環境變量 |
| env | 顯示與當前用戶相關的環境變量,還可以讓命令在指定環境中運行 |
| export | 顯示從 Shell 中導出成環境變量的變量,也能通過它將自定義變量導出為環境變量 |
| sort | 排序 |
| echo $PATH | 查看PATH環境變量的內容 |
| vim hello_shell.sh | 創建一個 Shell 腳本文件 |
| ./hello_shell.sh | 執行腳本 |
| vim hello_world.c | 創建一個 C 語言"hello world"程序 |
| gcc -o hello_world hello_world.c | 使用 gcc 生成可執行文件 |
| PATH=$PATH:/home/shiyanlou/或echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc | 添加自定義路徑到“PATH”環境變量(注意這里一定要使用絕對路徑) |
| unset | 刪除一個環境變量 |
| source | 讓環境變量立即生效 |
| . | 同上,注意第一個點后面有一個空格,而且后面的文件必須指定完整的絕對或相對路徑名,source 則不需要。 |
| whereis,which,find,locate | 均與搜索相關。whereis只能搜索二進制文件(-b),man幫助文件(-m)和源代碼文件(-s) ,which確定是否安裝了某個指定的軟件,只從PATH環境變量指定的路徑中去搜索命令,find,locate指定目錄下的不同文件類型 |
注意:關于變量名,并不是任何形式的變量名都是可用的,變量名只能是英文字母,數字或者下劃線,且不能以數字作為開頭。
- 文件打包與壓縮
| zip | 壓縮打包文件夾 |
| zip -r | 遞歸打包包含子目錄的全部內容 |
| zip -q | 安靜模式打包,即不向屏幕輸出信息 |
| zip -o | 輸出文件,需在其后緊跟打包輸出文件名 |
| du | 查看打包后文件的大小 |
| zip -r -9 -q -o shiyanlou_ 9.zip /home/shiyanlou -x ~/.zip zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/.zip | 設置壓縮級別為9和1(9最大,1最小),重新打包(注意:這里只能使用絕對路徑,否則不起作用。) |
| du -h -d 0 *.zip | 查看默認壓縮級別、最低、最高壓縮級別及未壓縮的文件的大小 |
| zip -r -e -o | 創建加密壓縮包 |
| unzip | 解壓到當前目錄 |
| unzip -q | 使用安靜模式,將文件解壓到指定目錄 |
| unzip -l | 不解壓只查看壓縮包的內容 |
| unzip -O GBK 中文壓縮文件.zip(英文字母,大寫o) | 指定編碼類型 |
| rar | 創建rar 壓縮包 |
| unrar | 解壓 rar 壓縮包 |
| rar d | 從指定壓縮包文件中刪除某個文件 |
| rar l | 查看不解壓文件 |
| unrar x | 全路徑解壓 |
| unrar e | 去掉路徑解壓 |
| tar -cf | 創建一個 tar 包 |
| tar -xf shiyanlou.tar -C tardir | 解包一個文件(-x參數)到指定路徑的已存在目錄(-C參數) |
| tar -tf | 只查看不解包文件(-t參數) |
| tar -cphf | 保留文件的屬性(-p參數)和備份鏈接指向的源文件而不是鏈接本身(-h參數) |
| tar -czf | 使用gzip來壓縮文件 |
| tar -xzf | 壓縮*.tar.gz文件 |
| tar -xJf | 壓縮*.tar.xz文件 |
| tar -xjf | 壓縮*tar.bz2文件 |
注意:rar 的命令參數沒有-,如果加上會報錯。
- 文件系統操作與磁盤管理
| df | 以blocks的大小顯示磁盤的容量 |
| df -h | 以人類語言顯示磁盤容量 |
| du | 以 blocks 的大小展示目錄的容量 |
| du -h | 以人類語言展示目錄的容量 |
| du -h -d | 指定查看目錄的深度 |
| dd of=test bs=10 count=1或dd if=/dev/stdin of=test bs=10 count=1 | 從標準輸入讀入用戶輸入到一個文件 |
| dd if=/dev/stdin of=/dev/stdout bs=10 count=1 | 從標準輸入讀入用戶輸入到標準輸出 |
| bs | 指定虛擬磁盤塊大小 |
| dd if=/dev/stdin of=test bs=10 count=1 conv=ucase | 將輸出的英文字符轉換為大寫再寫入文件 |
| dd if=/dev/zero of=virtual.img bs=1M count=256 | 設備創建一個容量為 256M 的空文件 |
| sudo mkfs.ext4 virtual.img | 將虛擬磁盤鏡像格式化為ext4文件系統 |
| sudo mount | 查看主機已經掛載的文件系統 |
| mount [options] [source] [directory] | 掛載真正的磁盤到目錄樹 |
| mount -o loop -t ext4 virtual.img /mnt | 掛載我們創建的虛擬磁盤鏡像到/mnt目錄 |
| sudo umount /mnt | 卸載已掛載磁盤 |
| sudo fdisk -l | 查看硬盤分區表信息 |
| sudo fdisk virtual.img | 進入磁盤分區模式 |
| sudo losetup /dev/loop0 virtual.img | 建立鏡像與回環設備的關聯 |
| sudo losetup -d /dev/loop0 | 解除設備關聯 |
| sudo kpart kpartx -av /dev/loop0 | 用kpartx工具建立虛擬設備的映射 |
| sudo kpart kpartx -dv /dev/loop0 | 取消映射 |
| sudo mkfs.ext4 -q /dev/mapper/loop0p1 | 建立映射后,將其全部格式化為ext4 |
| mkdir -p /media/virtualdisk_{1 . . 3} | 在/media目錄下新建四個空白目錄用于掛載虛擬磁盤 |
| sudo mount /dev/mapper/loop0p1 /media/virtualdisk_1(以此類推) | 掛載磁盤分區 |
| sudo umount /dev/mapper/loop0p1(以此類推) | 卸載磁盤分區 |
- Linux下的幫助命令
| bash | 進入 bash 中,在 bash 中內置有help命令 |
| help ls | 顯示內建命令的幫助信息 |
| ls --help | 顯示外部命令的幫助信息 |
| man ls | 顯示系統手冊頁中的內容 |
| info ls | 更完整的顯示出 GNU 信息 |
實驗樓第3~8節的命令總結如上,但這些還遠遠不夠。在之后的學習中我會繼續補充完善,并多加練習。
學習過程中的一些疑惑以及解決
- Linux的分區與掛載
在學習過程中頻繁遇到分區與掛載這兩個專業術語。鑒于Windows與Linux的區別,我想Linux的分區一定有特殊之處,于是查閱了相關資料進行學習。
與Windows的C盤D盤等等不同的是,Linux系統中有獨特的目錄結構。最基本的是一個根目錄“/”,根目錄下還有很多目錄,比如“/etc”用來存放配置文件,“/bin”用來存放二進制程序,“/boot”用來存放啟動文件,“/lib”用來存放庫文件,“/home”用來存放用戶的各種文件等等。這些便是Linux的分區。
用戶可以任意一個目錄里的東西存在某個分區里,如果不指定,則這個目錄里的東西存在上一級目錄所在分區里,以此類推,所以一定要指定“/”目錄存放在哪個分區。給某一個制定分區的過程,即“掛載”。
- Vim編輯器的使用
實驗樓課程第四節提到Vim編輯器的使用。在學習Linux的同時,我進行了Vim文本編輯器的學習。
在幾種常用文本編輯器中,功能最強大的要數Vim和Emacs了。學習Vim的使用,可以為今后寫程序以及寫腳本做充足準備。
Vim有3種工作模式,即:指令模式、輸入模式、行末模式。
- 指令模式:Vim運行默認進入指令模式。在這種模式下,可以通過各種快捷鍵、組合鍵進行操作,對文本進行編輯,比如復制、粘貼、刪除、查找等操作。
- 輸入模式:即向文件里輸入字符的模式。按i鍵或者Insert鍵進入輸入模式。進入后,頁面左下角有“插入”字樣,即跟使用gedit之類的編輯器一樣了。按Esc鍵可以回到指令模式。
- 行末模式:在該模式下可以在界面最下面一行輸入命令并執行,從而實現各種操作,例如打開文件、保存文件、查找替換、退出等操作。行末模式執行完最后一條指令后自動回到指令模式。
三種模式下均有常用快捷鍵或常用命令,目前正在進行學習。之后會對于快捷鍵以及命令的使用做系統的總結。
寫在最后:對于寒假的一點點感觸
轉眼寒假過半,放假前我覺得難以完成的種種任務,正在被我一項一項finished,比如學習Linux,比如每天扇貝打卡,比如健身鍛煉,比如讀書。
剛開始學習Linux感覺很吃力,雖然大部分時候打開終端輸入命令都能得到想要的結果,但搞不清楚Linux的本質,總是覺得學習只是浮在水面。于是我在學習實驗樓課程的同時,在網上查閱各種資料,跟視頻圖書等等學習,終于摸清了Linux的一點點門道。熟練掌握各種命令的使用,成為了接下來學習Linux的重中之重。
在我看來,學習Linux的過程反過來促進了我英語的學習(真是奇妙),雖然安裝Ubuntu選擇的語言是中文,但動不動就出現一篇英文提示讓我實在很頭大,而且所有的命令都是英文單詞或是英文單詞的縮寫,所以我想,具有一定的詞匯量對于Linux的學習也會有很大幫助吧。
養成一個良好的習慣,或是掌握一門新技術,都不是輕而易舉的事。最后我想說給自己,克服懶惰吧。萬里長征才剛剛開始。
轉載于:https://www.cnblogs.com/Vivian517/p/6352129.html
總結
以上是生活随笔為你收集整理的20155303狄惟佳预备作业三Linux学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NYOJ1071 - 不可以!
- 下一篇: 纯css3实现美化复选框和手风琴效果(详