Linux一個最重要的思維方式就是:一切的電腦硬件都是文件,比如硬盤一般在/dev/hda,而鼠標一般在/dev/mouse,所有配置的更改都是通過更改文件完成的
安裝Ubuntu16.04
學習Ubuntu當然需要先安裝一個原生的Ubuntu,在vmware中的Ubuntu始終還是有些問題,從西安交大鏡像源下載安裝文件ubuntu-16.04.2-desktop-amd64.iso
在Windows系統中,首先為Ubuntu分出一定大小的磁盤空間,我們使用win7自帶的管理工具:右鍵我的電腦,點擊管理->磁盤管理->選擇一個還有剩余空間的磁盤->選擇壓縮卷->輸入需要的磁盤空間大小,因為只是用於學習Linux以及一些簡單的開發,我們選擇磁盤大小為50GB,不需要分配磁盤符

接下來,制作u盤啟動盤,使用一個內存大於2gb的u盤,使用win32diskimager軟件進行u盤的刻錄,刻錄時會清空u盤內容,請提前備份u盤
制作完成之后重啟電腦,按F12或者F10進入BIOS,選擇啟動順序為u盤啟動,保存並退出BIOS,進入Ubuntu的安裝界面
選擇語言,選擇地區之后,選擇之后安裝ubuntu更新,安裝方式選擇其他,對50G硬盤進行划分,首先划分出45G掛載/目錄,然后選擇4G作為swap分區,然后選擇500M掛載/boot分區,boot分區主要是用於Linux的啟動引導
等待安裝完成,重啟系統進入了Linux系統的引導界面,但是此時並沒有Windows的引導,因此我們需要登錄Linux系統執行如下命令找到Windows的引導:
4 sudo updata-grub
同時,我們看到Windows的啟動項在最后面,我們需要設置默認的啟動順序是Windows,然后是Linux,因此我們打開/boot/grub/grub.conf進行順序修改,將其中的defalut啟動項設置為4(第一個為0,后面依次加1)
cd /boot/grub/
vim grub.conf
至此,我們完成了Linux的安裝,接下來安裝部分Linux常用軟件
Linux常用軟件安裝及優化
系統清理篇
系統更新
安裝完系統之后,需要更新一些補丁。Ctrl+Alt+T調出終端,執行一下代碼:
sudo apt-get update
sudo apt-get upgrade
卸載libreOffice
libreoffice事ubuntu自帶的開源office軟件,體驗效果不如windows上的office,於是選擇用WPS來替代(wps的安裝后面會提到)
sudo apt-get remove libreoffice-common
刪除Amazon的鏈接
sudo apt-get remove unity-webapps-common
刪除不常用的軟件
sudo apt-get remove thunderbird totem rhythmbox empathy brasero simple-scan gnome-mahjongg aisleriot
sudo apt-get remove gnome-mines cheese transmission-common gnome-orca webbrowser-app gnome-sudoku landscape-client-ui-install
sudo apt-get remove onboard deja-dup
做完上面這些,系統應該干凈了,下面我們來安裝一些必要的軟件。
更換Linux安裝源
請使用root權限進行以下操作。
Ubuntu 的軟件源配置文件是 /etc/apt/sources.list
選擇你的ubuntu版本,以wily為例,查看系統版本可以通過lsb_release -a出來的code查看:
deb http://mirrors.xjtu.edu.cn/ubuntu/ wily main multiverse restricted universe
deb http://mirrors.xjtu.edu.cn/ubuntu/ wily-backports main multiverse restricted universe
deb http://mirrors.xjtu.edu.cn/ubuntu/ wily-proposed main multiverse restricted universe
deb http://mirrors.xjtu.edu.cn/ubuntu/ wily-security main multiverse restricted universe
deb http://mirrors.xjtu.edu.cn/ubuntu/ wily-updates main multiverse restricted universe
deb-src http://mirrors.xjtu.edu.cn/ubuntu/ wily main multiverse restricted universe
deb-src http://mirrors.xjtu.edu.cn/ubuntu/ wily-backports main multiverse restricted universe
deb-src http://mirrors.xjtu.edu.cn/ubuntu/ wily-proposed main multiverse restricted universe
deb-src http://mirrors.xjtu.edu.cn/ubuntu/ wily-security main multiverse restricted universe
deb-src http://mirrors.xjtu.edu.cn/ubuntu/ wily-updates main multiverse restricted universe
如果你使用的是wily以外的版本,將上述每一行的wily改為對應的發行版即可。
主題美化
ubuntu自帶的主題簡直不敢恭維,這里博主將它美化了一番,心情瞬間都好了一大截,碼代碼也會飛起!!先放一張我美化后的效果。
桌面和終端效果如下:

unity-tweak-tool
調整 Unity 桌面環境,還是推薦使用Unity Tweak Tool,這是一個非常好用的 Unity 圖形化管理工具,可以修改工作區數量、熱區等。
sudo apt-get install unity-tweak-tool
安裝完后界面如下:

Flatabulous主題
Flatabulous主題是一款ubuntu下扁平化主題,也是我試過眾多主題中最喜歡的一個!最終效果如上述圖所示。
執行以下命令安裝Flatabulous主題:
sudo add-apt-repository ppa:noobslab/themes
sudo apt-get update
sudo apt-get install flatabulous-theme
該主題有配套的圖標,安裝方式如下:
sudo add-apt-repository ppa:noobslab/icons
sudo apt-get update
sudo apt-get install ultra-flat-icons
安裝完成后,打開unity-tweak-tool軟件,修改主題和圖標:
進入Theme,修改為Flatabulous

在此界面下進入Icons欄,修改為Ultra-flat:

到這里主題和圖標都變為扁平化主題Flatabulous,看起來比較美觀了,當然,還需要修改一些細節,例如終端的配色以及樣式。
如果找不到主題就先注銷重新登錄就行了
終端
終端采用zsh和oh-my-zsh,既美觀又簡單易用,主要是能提高你的逼格!!!
首先,安裝zsh:
sudo apt-get install zsh11
接下來我們需要下載 oh-my-zsh 項目來幫我們配置 zsh,采用wget安裝
這里需要先安裝Git,而且要以管理員權限運行
sudo apt-get install git
sudo wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
所以這時的zsh 基本已經配置完成,你需要一行命令就可以切換到 zsh 模式,終端下輸入以下命令
chsh -s /usr/local/bin/zsh11
最后,修改以下配色,會讓你的終端樣式看起來更舒服,在終端任意地方右鍵,進入配置文件(profile)->外觀配置(profile Preferences),彈出如下界面,進入colors一欄:

其中,文字和背景采用系統主題,透明度設為10%,下面的palette樣式采用Tango,這樣一通設置后,效果如下:

打開~/.zshrc,修改主題配置如下:
ZSH_THEME="agnoster"
source ~/.zshrc之后生效,此時有亂碼,需要下載power字體
# clone
git clone https://github.com/powerline/fonts.git
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts
然后打開terminal的preference選項,將字體設置為ubuntu powerline
此時所有的文件顯示顏色都是灰色的,因此我們要安裝
首先安裝 Git:sudo apt-get install git-core
然后要設一下 solarized theme for GNU ls,不然在 Terminal 下 ls 啥的都灰蒙蒙的,也不舒服:
git clone git://github.com/seebi/dircolors-solarized.git
dircolor-solarized 有幾個配色,你可以去項目那看看說明,我自己用的是 dark256:
cp ~/dircolors-solarized/dircolors.256dark ~/.dircolors
eval 'dircolors .dircolors'
設置 Terminal 支持 256 色,vim .zsh 並添加 export TERM=xterm-256color,這樣 dircolors for GNU ls 算設置完成了。
接下來下載 Solarized 的 Gnome-Terminal 配色:
git clone git://github.com/sigurdga/gnome-terminal-colors-solarized.git
cd gnome-terminal-colors-solarized 到該目錄下運行配色腳本:./set_dark.sh 或./set_light.sh,這就算搞定了。
字體
ubuntu自帶的字體不太好看,所以采用文泉譯微米黑字體替代,效果會比較好,畢竟是國產字體!
sudo apt-get install fonts-wqy-microhei11
然后通過unity-tweak-tool來替換字體:

到此,主題已經比較桑心悅目了,接下來推薦一些常用的軟件,提高你的工作效率!
常用軟件安裝
安裝搜狗輸入法
首先從搜狗官網下載適用於ubuntu的輸入法,執行sudo dpkg -i sogoupinyin_2.1.0.0082_amd64.deb安裝,發現報錯,這個時候進行修復安裝,執行sudo apt-get install -f ,在運行一遍安裝命令, sudo dpkg -i sogoupinyin_2.0.0.0078_amd64.deb,注銷之后在系統輸入法選項中選擇fcit輸入,就可以切換輸入法了
安裝shadowsocks
用PIP安裝很簡單,
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-setuptools m2crypto
接着安裝shadowsocks
pip install shadowsocks
如果是ubuntu16.04 直接 (16.04 里可以直接用apt 而不用 apt-get 這是一項改進)
sudo apt install shadowsocks
然后啟動shadowsocks
sslocal -c /etc/shadowsocks.json
首先是安裝polipo:
sudo apt-get install polipo
接着修改polipo的配置文件/etc/polipo/config:
logSyslog = true
logFile = /var/log/polipo/polipo.log
proxyAddress = "0.0.0.0"
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
重啟polipo服務:
sudo /etc/init.d/polipo restart
為終端配置http代理:
export http_proxy="http://127.0.0.1:8123/"
接着測試下能否翻牆:
curl ip.gs
如果有響應,則全局代理配置成功。
設置別名
bash中有一個很好的東西,就是別名alias. Linux用戶修改~/.bashrc,Mac用戶修改~/.bash_profile文件,增加如下設置
alias proxy="http_proxy=http://localhost:8123"
然后Linux用戶執行source ~/.bashrc,注意在bash中執行上述命令只是本次有效,要一直生效需要修改~/.bashrc文件
chrome安裝
打開終端,
輸入 sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/,
然后繼續輸入wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -,
再更新apt-get,sudo apt-get update,
再執行sudo apt-get install google-chrome-stable,
下載完成后輸入/usr/bin/google-chrome-stable即可打開chrome
Pycharm安裝
從官網下載壓縮包,(1)到官網下載安裝包
(2)到下載目錄下進行解壓
$ cd Downloads/
$ tar xfz pycharm-*.tar.gz
(3)運行解壓后的文件夾中的bin目錄下的pycharm.sh文件
$ cd pycharm-community-3.4.1/bin/
$ ./pycharm.sh
安裝typora
按照官網教程安裝,不詳細說明
使用幫助文檔
Linux的指令都是command + option + parameter1 + parameter2的模式
使用man page
在遇到我們不知道怎么用的指令的時候,可以求助於man page,man是manual的簡稱,以為操作說明,比如我們輸入man date ,系統就彈出對於date這個指令的解釋,其中有一個“DATE(1)”,括號里面的1表示命令的類型,比如1表示用戶在shell環境中可以在操作的命令或可執行文件,2表示用戶內核可調用的函數與工具等等,一共有9個類
| 代號 | 代表內容 |
|---|---|
| 1 | 普通的命令─在shell中執行的命令 |
| 2 | 系統調用─關於核心函數的文檔 |
| 3 | 庫調用─libc函數的使用手冊頁,如printf,fread |
| 4 | 特殊文件─關於/dev目錄中的文件的信息 |
| 5 | 文件格式─/etc/passwd和其他文件的詳細格式 |
| 6 | 游戲:給游戲留的,由各個游戲自己定義 |
| 7 | 宏命令包─對Linux文件系統、使用手冊頁等的說明。還有一些變量,比如向environ這種全局變量在這里就有說明 |
| 8 | 系統管理─根操作員操作的使用手冊頁,這些命令只能由root使用,如ifconfig |
| 9 | 核心例程─關於Linux操作系統內核源例程或者內核模塊技術指標的文檔 |
man page一般由以下幾個部分組成:
| 代號 | 內容說明 |
|---|---|
| NAME | 簡短的命令、數據名稱說明 |
| SYNOPSIS | 簡短的命令執行語法(syntax)介紹 |
| DESCRIPTION | 較為完整的說明,這部分最好仔細看看 |
| OPTIONS | 針對SYNOPSIS部分中,有列舉的所有可用的選項說明 |
| FILES | 這個程序或數據所使用或參考或連接到的某些文件 |
| SEE ALSO | 這個命令或數據有相關的其他說明 |
| EXAMPLE | 一些可以參考的范例 |
| BUGS | 相關的錯誤 |
通常查詢一個命令的方法如下
- 先查看NAME部分,了解這個指令的含義
- 再仔細看一下DESCRIPTION,這個部分會提到很多相關的資料和用法,從這個地方可以學到很多小細節
- 如果你已經對這個命令很熟悉了,那么主要查詢的就是OPTIONS的部分,可以知道每個選項的意義
- 最后看一眼SEE ALSO
- 某些內容還會列舉FILES供使用者參考
輸入/就可以進行向下字符串查找,按n可以查詢下一個,按N查詢上一個,?string進行向上字符串查找,空格鍵向下翻一頁,[home]去往第一頁,[end]去往最后一頁,[page up]向上一頁,[page down]向下一頁,按q就可以離開當前頁面
使用info page
info和man用途差不多,都是用來查詢某個指令的用法,但是info類似於網頁超鏈接的形式,跳轉到各個具體的節點頁面下,每個頁面稱之為一個節點
使用info時有如下快捷鍵:
| 按鍵 | 主要內容 |
|---|---|
| 空格鍵 | 向下翻一頁 |
| [page down] | 向下翻一頁 |
| [page up] | 向上翻一頁 |
| [tab] | 在節點之間移動 |
| [enter] | 當光標在節點之上時,按下enter進入該節點 |
| B | 移動光標到該info界面中第一個節點處 |
| E | 移動光標至最后一個節點處 |
| N | 前往下一個節點 |
| P | 前往上一個節點 |
| U | 向前移動一層 |
| S(/) | 在info page中進行查詢 |
| H | 顯示求助菜單 |
| ? | 命令一覽表 |
| Q | 結束這次的info page |
Linux文件屬性
使用ls -al列出文件的信息,看到文件屬性這一列一共有10個字母,第一個字母表示文件類型,1-3表示文件所有者的權限,4-6表示用戶所屬用戶組的權限,7-9表示其他人對此文件的權限

第一個字符表示對是這個文件是“目錄、文件或鏈接文件等”“
[d]表示目錄[-]表示文件[|]表示連接文件(linkfile)[b]表示可供存儲的接口設備[c]表示設備文件里面的串行端口設備,例如鍵盤鼠標等
接下來的字符每3個一組,r代表可讀,w代表可寫,x代表可執行,-表示沒有權限
第二大列表示的是這個文件有多少個連接到這個文件的鏈接
第三大列表示的是文件的所屬用戶
第四大列表示的是文件所屬的用戶組
第五大列表示文件的大小,默認的單位是B
第六列為文件的創建日期或者是最近的修改日期
第七列為文件名,如果文件名以"."開頭,那么這個文件就是隱藏文件
改變文件屬性與權限
- chgrp:改變文件所屬用戶組
- chown:改變文件所有者
- chmod:改變文件的權限
上述三個指令的具體用法可以查看man page或者是--help,具體不贅述
Linux目錄配置
為了對Linux的文件系統能夠更好的管理和利用,所有Linux系統都醉尋FHS標准(Filesystem Hierarchy Standard),主要目的是讓用戶可以了解到已安裝軟件通常放在那個目錄下
其主要的規定如下:
/:與開機系統有關
/usr:與軟件安裝/執行有關
/var:與系統運作過程有關
FHS標准定義出根目錄/應該含有如下子目錄“
| 目錄 | 應放置的文件內容 |
|---|---|
/bin |
系統中有很多放執行文件的目錄,但是/bin比較特殊,因為/bin放置的是在單用戶模式下還能被操作的命令/在/bin下面的命令可以被root和一般用戶使用,主要有cat,chmod,chown,date,mv,mkdir,cp,bash等常用的命令 |
/boot |
這個目錄主要在放置開機會使用到的文件,包括Linux內核文件以及開機菜單與開機所需配置文件等,Linux kernel 常用的文件名為vmlinuz,如果使用grub這個引導裝在程序,還會存在/boot/grub這個目錄 |
/dev |
在linux系統上,任何設備與接口設備都是以文件的形式存在於這個目錄的,你只要通過訪問這個目錄下的某個文件,就等於訪問某個設備。比較重要的文件有/dev/null,/dev/zero,/dev/ tty,/dev/ lp*,/dev/hd*,/dev/sd* |
/etc |
系統主要的配置文件幾乎都放置在這個目錄中,例如人員的賬戶密碼文件 ,各種服務的起始文件等。一般來說,這個目錄下的個文件屬性是可以讓一般用戶查閱的,但是只有root有修改權限,FHS建議不要放置可執行文件(binary)在這個目錄紅,比較重要的文件有/etc/inittab,/etc/init.d,/etc/modprobe.conf,/etc/X11,/etc/fstab,/etc/sysconfig等。另外,其下還有幾個比較重要的目錄:1. etc/init.d:所有服務的默認啟動腳本都是放在這里的,例如要啟動或者關閉iptables的話,/etc/init.d/iptables start,/etc/init.d/iptables stop。2.etc/xinetd.d:這就是所謂的superdaemon管理的各項服務的配置文件目錄。3. /etc/X11:與X window相關的各種配置文件都在這里,尤其是xorg.conf這個XServer的配置文件 |
/home |
這是系統默認的用戶主文件夾(home dictionary)。在你創建一個一般用戶賬號時,默認的用戶主文件夾都會規范到這里來。比較重要的是,主文件夾有兩種代號,~:代表目前這個用戶的主文件夾,~dmtsai:則代表dmtsai的主文件夾 |
/lib |
系統的函數庫非常多,而/lib庫放置的則是在開機時會用到的函數庫,以及在/bin或/sbin下面的命令會調用的函數庫而已。尤其重要的是/lib/modules/這個目錄,該目錄會防止內核相關的模塊(驅動程序) |
/media |
放置可刪除的設備,包括軟盤,光盤dvd都放在這里 |
/mnt |
暫時掛在某些額外設備,簡易房知道這么目錄中 |
/opt |
這是給第三方軟件放置的目錄,不過還是習慣放置於/usr/local之中 |
/root |
系統管理員root的主文件夾 |
/sbin |
/sbin中包含了開機、修復、還原系統所需的命令。 |
/srv |
srv可以看做service的縮寫,是一些網絡服務啟動后,這些服務所需取用的數據目錄,如www服務或者是ftp服務 |
/tmp |
讓一般用戶或者是正在執行的程序暫時放置文件的地方 |
除了上述目錄,Linux中還有一些目錄需要了解:
| 目錄 | 放置內容 |
|---|---|
| /lost+found | 放置系統發生錯誤時丟失的片段 |
| /proc | 本身是一個虛擬文件系統,所有文件都在內存中,主要是 系統內核、進程、外部設備的狀態及網絡狀態等。重要文件有/proc/cpuinfo,proc/dma,/proc/interrupts,/proc/ioports,/proc/net/* |
| /sys | 與/proc很像,記錄內核先關信息,包括目前已加載的內核模塊與內核監測到的硬件設備信息等等 |
/usr目錄是Linux中重要的一個目錄,其是Unix software resource的縮寫,所有軟件都會放到該目錄下,其重要的文件夾如下
| 目錄 | 放置的文件內容 |
|---|---|
| /usr/X11R6 | x widow的放置目錄 |
| /usr/bin | 大多用戶可以使用的命令都在這里 |
| /usr/local | 系統管理員在本集下載的第三方軟件 |
| usr/sbin | 非系統正常運行所要的系統命令,比如網絡服務器的服務命令 |
| /usr/share | 放置共享文件 |
| /usr/src | 源碼一般放在這里,比如Linux的源碼放在/usr/src/Linux |
/var主要放置緩存以及一些日志文件
查看Linux內核版本
主要有兩條命令可以查看Linux的版本
$ uname -a
$ lsb_release -a
Linux目錄管理
目錄相關操作
- cd命令:change dictionary
cd ~ #打開用戶主目錄
cd - #打開上一個打開的目錄
- pwd命令:顯示當前文件夾,Print Working Dictionary
- mkdir命令:make dictionary,創建文件夾
- rmdir:刪除空目錄, [-p]連同上級的空文件夾一起刪除
執行文件路徑變量:$PATH
打印出文件路徑變量:
echo $PATH
這個路徑變量由一堆目錄組成,每個目錄中間永冒號來隔開
要想把一個新的路徑加入PATH
PATH="$PATH":/dictionary_you_want_to_add
文件目錄相關操作
- ls:查看文件與目錄,ls列出來的藍色字體的是文件夾,綠底藍字的表示others擁有write權限的文件夾
- cp:復制文件,復制文件夾時要加-r,若目標文件已存在,覆蓋式先詢問是否進行操作加-i
- mv:移動文件或用於重命名
- rm:刪除文件,-i詢問是否刪除,-f強制刪除,-r遞歸刪除文件夾
- basename:取得該文件的目錄名/文件名
- dirname:取得上層目錄名
文件內容查閱
- cat:從第一行開始顯示文件內容
- tac:從最后一行開始顯示文件內容,tac是cat的倒寫形式
- nl:顯示的時候順便輸出行號,是numberline的縮寫
- more:一頁一頁的顯示文件內容
- less:與more類似,但是比more剛好的是,它可以向前翻頁
- head:只看頭幾行
- tail:只看結尾幾行
- od:以二進制方式讀取文件內容
- touch:創建新文件或者修改文件時間(atime(access):訪問時間,ctime(status):狀態改變時間,mtime(modified):內容修改時間)
文件目錄的默認權限與隱藏權限
- umask:查看默認建立文件的權限,顯示的四位數字的后三位表示被拿掉的權限,比如顯示0022,表示權限為rwxr-x
- lsattr:顯示文件的隱藏屬性
- chattr:改變文件的隱藏屬性,+i表示不可以被改變,移動或刪除
查看文件類型的操作命令:file
命令與文件查詢
- which:尋找可執行文放在哪里(在$PATH的路徑下找)
- whereis:利用系統的數據庫查找特定文件
- locate:-i忽略大小寫,-r可以接正則表達式的形式,從系統的數據庫/var/lib/mlocate中查找數據,這個數據庫每天更新一次,可以通過updatedb進行手動更新
- find:直接在硬盤上查找文件
Linux文件系統
每個文件有inode和block以及superblock三塊
inode用來存放文件的屬性以及文件數據所在的block號碼
block用來存放實際的文件內容,若數據太大,則會占用多個block
superblock:記錄文件的整體信息,包括inode/block 的總量,使用量,剩余量,以及文件系統的格式與相關信息等
df:display the amount of disk space available,展示掛載磁盤的可用空間
dumpe2fs:dump ext2/ext3/ext4 filesystem information
磁盤與目錄容量
df:列出文件系統的整體磁盤使用量,-h:以人們比較容易閱讀的GB,MB,KB等單位進行顯示
du:評估文件系統磁盤使用量,在不加參數時默認列出的是當前目錄的磁盤使用量
連接文件:ln
有兩種連接方式,分別是硬連接(hard link,也稱實際連接),和符號鏈接
硬連接
實際上就是多個文件名指向同一個inode,這種連接方式不支持跨文件系統的連接,也不能連接到目錄,因為如果連接到目錄,會使得目錄下屬的所有文件都產生連接,復雜度過高
symbolic link(符號連接)
創建一個獨立的文件,這個文件讓數據的讀取指向它連接的那個文件的文件名,symbolic可以和Windows的快捷方式划等號,唯一的不同是在你修改鏈接文件時,源文件也會隨之改變
執行連接操作的指令是
ln source destination # 硬連接
ln -s source destination # 符號連接
磁盤操作
- 磁盤分區管理:
fdisk,然后按m查看命令幫助,以便進行分區或者是刪除新增分區 - 磁盤格式化:
mkfs:make file system,具體的使用方法是mkfs [-t 文件系統格式] 設備文件名 - 更加詳細的磁盤格式化命令:
mke2fs [-b block大小] [-i inode大小] [-L 卷標] [-cj] 設備,-c檢查磁盤錯誤,-j表示ext3格式 - 磁盤檢驗:
fsck,一般只有在系統出現極大問題時才使用這個命令,正常使用系統時使用這個命令會破壞系統文件 - 掛載硬盤:
mount,-a掛載所有為掛載的磁盤 - 卸載:umount
- 修改卷標:e2label
設置開機掛載
在/etc/fstab里設置,根目錄/必須最先被掛載
掛載鏡像文件
比如你要掛載centos5.2的安裝鏡像到/mnt/centos_dvd這個文件夾,可以使用如下命令
linuxmount -o loop /root/centos5.2_x86_64.iso /mnt/centos_dvd
創建無內容的大型文件
使用dd命令,if表示input file,of表示output file,bs表示block size,count表示有多少個block
dd if=/dev/zero of=/home/loopdev bs=1M count=512
交換空間swap
分出一塊單獨的硬盤之后,或者使用dd命令得到一個文件之后,格式化,使用mkswap命令將文件格式化為swap格式,可以使用swapon命令建立swap
文件壓縮與打包
文件壓縮常有兩種形式,第一種是通過壓縮為0的bit,第二種是通過壓縮諸如100個1連在一起的情況
常用的壓縮命令有
gizp:默認模式是進行壓縮文件,-d解壓文件,-v表示冗長模式打印出所有信息tar
壓縮: tar -jcvf 新建的文件名 需要打包的文件
解壓縮: tar -jxvf 文件名 -C 欲解壓縮的目錄
dump文件系統備份
dunp:對系統進行備份的命令
從備份的文件進行恢復:restore
光盤寫入工具
mkisofs:新建鏡像文件
cdrecord:光盤刻錄工具
vim編輯器
vi常用移動快捷鍵,如果想要進行多次移動,例如向下移動30行,只需要輸入30j
| 快捷鍵 | 移動光標方法 |
|---|---|
| h或左箭頭(\(\leftarrow\)) | 向左移動一個字符 |
| l或右箭頭(\(\rightarrow\)) | 向右移動一個字符 |
| j或下箭頭(\(\downarrow\)) | 向下移動一個字符 |
| k或上箭頭(\(\uparrow\)) | 向上移動一個箭頭 |
ctrl+f(front的意思) |
向上翻動一頁 |
ctrl+b(blow的意思) |
向下翻動一頁 |
ctrl+d(down的意思) |
向下移動半頁 |
ctrl+u(up的意思) |
向上移動半頁 |
| + | 移動到非空格符的下一行 |
| - | 移動到非空格符的上一行 |
| n+空格 | 向右移動這一行的n個字符 |
| 0或者home | 移動到這一行最前面 |
| $或end | 移動到這一行的結束 |
| H(Head) | 移動到這個屏幕上方那一行的第一個字符 |
| M(Middle) | 移動到屏幕中央那一行 |
| L(Last) | 以調動到屏幕最下方那一行 |
| G | 移動到這個文件的最后一行 |
| nG | n為數字,移動到這個文件的第n行 |
| gg | 移動到文件的第一行 |
| n+回車 | 向下移動n行 |
查找、替換快捷鍵:
| /word | 下下搜索word字符串 |
|---|---|
| ?word | 向上搜索word字符串 |
| n | 查找下一個 |
| N | 查找上一個 |
| :n1,n2s/word1/word2/g | 在n1到n2之間查找word1字符串並替換為word2,s/表示開頭start,/g表示結尾 |
| :1,$s/word1/word2/g | 從第一行到最后一行查找字符串word1並替換為word2 |
| :1,$s/word1/word2/gc | 從第一行到最后一行查找字符串word1並替換為word2,替換前提示,c表示confirm |
刪除復制和粘貼
| x,X | x向后刪除一個字符,X向前刪除一個字符 |
|---|---|
| nx | n為數字,連續向后刪除n個字符 |
| dd | 刪除光標所在那一行 |
| ndd | 刪除光標所在行的下n行 |
| d1G | 刪除光標坐在到第一行的所有數據 |
| dG | 刪除光標所在到最后一行的數據 |
| d$ | 刪除光標所在處到該行的最后一個字符 |
| d0 | `刪除光標所在處到改行的最前面一個字符 |
| yy | 復制光標所在行 |
| nyy | 復制光標坐在的向下n行 |
| y1G | 復制光標所在行到第一行 |
| yG | 復制光標所在行到最后一行 |
| y0 | 復制光標所在地方到該行行首 |
| y$ | 復制光標所在位置到該行末 |
| p,P | p將已復制數據在下一行粘貼,P表示粘貼在上一行 |
| u | 復原前一個操作 |
ctrl+r或者. |
重復上一個操作 |
模式切換:
| i,I | i從目前光標所在處插入,I在目前行的第一個非空字符處開始插入 |
|---|---|
| a,A | a從光標所在處下一個字符開始插入,A從光標所在行最后一個字符處插入 |
| o,O | o從光標所在處下一行開始插入,O從光標所在處上一行插入 |
| r,R | r替換光標所在的哪一個字符一次,R一只替換光標所在的文字,直到按下Esc為止 |
命令行模式
| :w | 將數據寫入硬盤(保存) |
|---|---|
| :w! | 強制保存 |
| :q | 退出vi |
| :q! | 強制退出vi(不保存) |
| :wq | 保存並退出 |
| ZZ | 文件沒變動則直接離開,變動過則保存后離開 |
| :w [filename] | 將編輯的數據保存成另一個文件 |
| :r [filename] | 將filename的內容加到光標所在地的后面 |
| :n1,n2 w [filename] | 將n1到n2行的內容保存成新文件 |
| :!command | 暫時離開vi執行command |
| set nu | 顯示行號 |
| set nonu | 隱藏行號 |
在操作時按下ctrl+z可以使得vim臨時在后台運行,用vim打開文件時,vim會自動在當前文件夾創建一個swp文件,用於記錄用戶對文件的操作,用於在系統一場崩潰或者是斷電時對文件進行恢復,再次打開文件時會提示進行恢復或者是刪除swp文件,按r進行恢復,按a或者q退出操作,按d刪除暫存文件
塊選擇
塊選擇,類似於sublime里面的多行選擇,按下ctrl+v進入快選擇,選擇好之后按y進行復制
多文件同時編輯
vim 后面接多個文件的名字,然后:n編輯下一個文件,:N編輯上一個文件,:files列出目前這個vim打開的所有文件
多窗口功能
在vim命令行模式下輸入:sp,split的縮寫,可以打開在新窗口中當前文件,split [filename]在新窗口打開新的文件
利用ctrl+w+\(\uparrow\)進入上面的窗口,ctrl+w+\(\downarrow\)進入下面的窗口
bash和shell
shell:能夠操作應用程序的接口都稱之為shell
alias:設置命令別名,使用方法:alias new_com,man="old"
echo:用於顯示變量,在變量名之前要加上$
變量
設置變量:直接用等號連接,不能加空格,變量名只能是英文字母或者數字,且開頭不能是數字
變量如果需要增加內容:如PATH=$PATH:/home/bin
大寫字符一般為系統變量,自己設置的字符一般用小寫表示
特殊字符要轉義,比如引號和空格號
取消變量的方法為:unset 變量名
環境變量
環境變量存儲在env當中,可以直接在bash中輸入env進行查看
其中的random是用於顯示一個0~32767的隨機數的,如果你想要一個0-9的隨機數,可以使用declare -i number=$RANDOM*10/32768;echo $number
用set可以查看所有變量
export:將自定義變量引入環境變量,環境變量=全局變量,自定義變量=局部變量
查看當前系統支持的語系:locale -a
來自鍵盤的變量、數組與聲明:read、array、declare
要讀取來自鍵盤的變量,使用read: -p 后面可以接提示符,-t后面可以接等待的秒數
declare:聲明變量類型,declare [-aixr] variable,-a設置成array,-i設置為integer,-x與export功能相同,把變量設置為環境變量,-r設置為只讀類型,不能變更或unset
變量數組的設置:var[1]="var 1",讀取的時候,需要通過echo ${var[1]},注意是$加上大括號
ulimit
ulimit可以限制用戶使用的內存大小,cpu時間以及同時打開的文件數量等等
更改、刪除變量
使用“${PATH#/usr/bin}”來刪除變量內容,一個#表示刪除符號替換文字的最短的哪一個(非貪婪匹配),兩個##表示符合替換文字的最長的哪一個(貪婪匹配)
從后面開始刪除是“${PATH%😗/bin}”,同樣一個%是非貪婪的刪除,兩個%是貪婪刪除,%后面的內容是正則表達式
替換字符串:${PATH/old/new},一個/表示替換第一個舊字符串,兩個/表示全部替換
如果變量不存在則替換:a=${username:-root},:-root的意思就是如果username不存在那么就把a賦值為root,:的作用就是在username如果一開始就被賦值為空字符串的時候也可以用root替換
設置命令別名
alias:用法,alias lm=“ls -l|more”
取消別名:unalias xxx
歷史命令
使用history可以列出歷史命令
使用!command可以執行歷史記錄里面以command開頭的命令
使用!!執行上一條命令
使用!65,執行歷史記錄里面的第65條指令
設置終端機
stty -a:表示set tty,-a列出所有的內容
^表示ctrl的意思
eof:表示end of file
erase:向后刪除字符
intr:interrupt,終端
kill:刪除目前命令行上的所有文字
quit:發出一個退出信號給正在運行的程序
susp:推送一個terminal stop信號給正在運行的程序
此外,我們還可以通過set來查看其他設置,$-這個變量包含了所有的set設置值
標注輸入輸出流
- 標准輸入stdin:代碼為0,使用
<或<< - 標准輸出stdout:代碼為1,使用
>或>> - 標准錯誤輸出:代碼為2,使用
2>或者2>>
輸出標准輸出和錯誤輸出到同一個文件:find /home -name .bashrc > list 2>&1
<<的作用是利用右側的控制字,直到輸入右側的控制字之后自動退出輸入,且文件中不會有右側控制字那一行
多命令同時執行
;執行兩個沒有相關性的命令
cmd1&&cmd2:若cmd1執行完畢且正確執行就繼續執行cmd2
cmd1||cmd2:若cmd1執行正確則cmd2不執行,若cmd1執行錯誤則執行cmd2
管道命令
|:接受stdout的信息
選取命令cut,grep
cut:類似於Python中的split,-d后接用於分離的字符串,-f表示去除第幾個
grep:分析一行的信息,如果該行有我們需要尋找的信息,那么就將該行拿出來grep [-acinv] '查找的字符串' filename
排序命令
sort [-fbmnrtuk] [file or stdin]:對文件或者stdin進行排序
uniq:重復的數據只顯示一個,類似與Python的set
wc:字數統計
雙向重定向命令:tee,既輸出到屏幕,又輸出到文件
字符轉換命令
tr(translate or delete characters):-d刪除文字,-s替換文字
col:-x將tab換成對等的空格鍵,-b文字內有反斜杠/時,僅顯示反斜杠后接的那個字符
join:將兩個文件中有相同數據的一行放到一起
paste:直接將兩個文件粘到一起,且中間以[tab]隔開
expand:將tab轉換為空格鍵
split:切割,將文件分割成多個大小相等的文件
xargs:在不支持管道命令的命令中提供參數
正則表達式
正則表達式依照不同的嚴謹度分為基礎正則表達式與擴展正則表達式
基礎正則表達式
| 符號 | 含義 |
|---|---|
[:alnum:] |
英文大小寫字母及數字,[a-z]、[A-Z]、0-9 |
[:alpha:] |
大小寫英文字母 |
[:blank:] |
空格鍵與tab鍵 |
[:cntrl:] |
鍵盤上面的控制鍵位,包括CR,TF,TAB,DEL等 |
[:digit:] |
數字,[0-9] |
[:graph:] |
除了空格鍵和[TAB]鍵的其他所有按鍵 |
[:lower:] |
小寫字母,[a-z] |
[:upper:] |
大寫字母,[A-Z] |
[:print:] |
任何可以被打印出來的字符 |
[:punct:] |
標點符號(punctuation symbol) |
[:space:] |
任何會產生空白的字符,包括空白鍵[TAB]CR等 |
[:xdigit:] |
十六進制的數字類型 |
[^]表示取反,
^是行首,
$表示行尾,
*出現任意次,
\{m,n\}出現m到n次(注意{}要進行轉義),
[abc],從abc當中選一個
[^list]:選取除了list以外的字符串
擴展正則表達式
| 字符 | 意義 |
|---|---|
| + | 重復一次及多次 |
| 零個或一個 | |
| 用or的方法進行查找 | |
| () | 找出組字符串,比如查找good和glad,可以用egrep -n 'g(oo|la)d' test.txt進行查找 |
| ()+ | 多個重復組的判斷,比如查找A12121212c,可以用egrep -n 'A(12)+c' |
文件格式化打印
使用的是printf,用法如下:
printf '%10s\t %5i\t %s\t \8.2f' $(cat test.txt)
數據處理工具awk
用法
awk '條件類型1{動作1} 條件類型2{動作二}……'
比如要取出last里面的第一列和第三列
last -n 5 | awk 'print $1 "\t" $3'
文件比較工具
diff a b,得到的是左邊文件a與右邊文件b的差別
cmp:以字節進行比較
patch:diff a b> ab.patch得到一個補丁文件,用於存放新舊文件的不同,用patch -pN < patch_file更新,用patch -R -pN < patch_file還原
shell script
終於到了shell script這一個章節了,shell script是程序化腳本
