第一部分 Linux命令行
1. 基本的bash shell命令
1.1 啟動shell
/etc/passwd文件包含所有系統用戶列表及基本配置信息:rich:x:501:501:Rich Blum:/home/rich:/bin/bash
- 用戶名- 用戶密碼(占位符)- 用戶的系統UID(用戶ID)- 用戶的系統GID(組ID)- 用戶的全名- 用戶的默認主目錄- 用戶的默認shell程序
1.2 shell提示符
$:bash shell的默認提示符
echo $PS1:顯示當前默認提示符設置(PS1:控制默認命令行提示符的格式)
$ PS1="[\t][\u]\$":創建新的提示符,只需給PS1變量賦一個新的字符串
1.3 bash手冊
man bash:man手冊頁面
1.4 瀏覽文件系統
常見Linux目錄名稱:
/:根目錄/bin:GNU用戶工具/boot:啟動目錄/dev:設備目錄/etc:系統配置文件目錄/home:主目錄,創建用戶目錄/lib:庫目錄,存放系統和應用程序的庫文件/media:媒體目錄/mnt:掛載目錄/opt:可選目錄,存放可選軟件包/root:根主目錄/sbin:GNU管理員級工具/tmp:臨時目錄/usr:用戶安裝軟件目錄/var:可變目錄,存放經常變化的目錄
遍歷目錄
cd:切換目錄
絕對文件目錄:從根目錄開始
相對文件目錄:.:表示當前目錄;..:表示當前目錄的父目錄
1.5 文件和目錄列表
1.5.1基本列表功能
ls:顯示當前目錄下的文件和目錄
-F:區分文件和目錄-a:顯示隱藏文件和目錄-R:列出當前目錄下包含的目錄中的文件
1.5.2修改輸出信息
ls -l:顯示詳細信息
- 文件類型- 文件的權限- 文件的硬鏈接總數- 文件屬主的用戶名- 文件屬組的組名- 文件的大小- 文件的上次修改時間- 文件名或目錄名
1.5.3 完整的參數列表
ls -sail: -a:列出所有文件 -i:列出索引節點
? ? ? ? -l:產生一個長列表 -s:列出文件的塊大小
1.5.4 過濾輸出列表
ls -l 文件名:文件名中,?代表一個字符,*代表零個或者多個字符
1.6 處理文件
1.6.1 創建文件
touch 文件名:創建空文件,也可以更改文件的訪問和修改時間
-a:只修改訪問時間-m:只修改修改時間-t:指定特定的時間
1.6.2 復制文件
cp 源文件目錄 目標文件目錄:復制文件
cp -R:遞歸復制整個文件目錄
1.6.3 鏈接文件
cp -l:創建硬鏈接,其中包含了源文件的信息及位置。
cp -s:創建軟連接,一個符號鏈接。
1.6.4重命名文件
mv 文件名 新文件名:mv命令是用來移動文件的(moving),也可以用于重命名。
1.6.5 刪除文件
rm:刪除文件也就是移除(removing),加-f強制刪除。
1.7 處理目錄
1.7.1創建目錄
mkdir:創建目錄
1.7.2刪除目錄
rmdir:刪除空目錄,可以--ignore-fail-on-non-empty刪除非空目錄
rm -rf:強制遞歸刪除目錄
1.8 查看文件內容
1.8.1 查看文件統計信息
status:顯示某個文件的所有狀態信息
1.8.2 查看文件類型
file:查看文件類型
文本文件可執行文件數據文件
1.8.3 查看整個文件
1. ? `cat`:查看整個文件。`-n`添加行號,`-s`壓縮空白行
more:顯示文件的內容,但會在顯示每頁數據之后停下來
less:顯示文件內容,功能上更高級
1.8.4 查看部分文件
tail:顯示文件末尾部分內容
head:顯示文件開頭部分內容
2. 更多的bash shell命令
2.1 檢測程序
2.1.1 探查進程
ps:顯示運行在當前控制臺的當前用戶的進程
-ef:查看系統上運行的所有進程-H:把輸出的進程組織成層級形式,即樹狀--forest:顯示層級結構信息
1.Unix風格參數2.BSD風格參數3.GNU全字參數
2.1.2 實時監測進程
top:實時顯示進程信息
2.1.3 結束進程
kill PID:結束進程號的進程
killall 進程名:結束相關進程
2.2 檢測磁盤空間
2.2.1 掛載存儲媒體
mount:顯示當前系統掛載的設備列表
umount:卸載掛載的設備
2.2.2 使用df命令
df:掛載已掛載磁盤的使用的情況
-h:以人類可讀的形式顯示
2.2.3 使用du命令
du:顯示某個特定目錄的磁盤使用情況
2.3 處理數據文件
2.3.1 排序數據
sort:將文件數據默認按照標準的字符排序。
-n:將數字按照數字排序
-M:按月排序
-k:
-t:
n:
2.3.2 搜索數據
grep pattern file:搜索數據
-v:反向搜索,搜出不匹配的項目
-n:顯示匹配數據所在的行數
-c:只顯示所在行數
2.3.3 壓縮數據
bzip2工具(.bz2)
bzip2:壓縮文件bunzip2:解壓.bz2文件?bzcat:顯示壓縮的文本文件內容bziprecover:嘗試修復損壞的壓縮文件
gzip工具(.gz)
gzip:壓縮文件gunzip:解壓文件gzcat:查看壓縮的文本文件內容
zip工具(.zip)
zip:壓縮文件unzip:解壓文件?zipcloak:創建一個加密壓縮文件,包含指定的文件和目錄zipnote:從zip文件中提取批注
2.3.4 歸檔數據
tar:歸檔打包數據,常見加上-zxvf
tar命令選項:
-A:將一個已有的tar歸檔文件追加到另一個tar文件-c:創建一個新的tar歸檔文件-d:檢查歸檔文件和文件系統的不同之處,或者是從已有的etar歸檔文件中刪除-r:追加文件到已有的tar文件末尾-t:列出已有tar歸檔文件的內容-u:將比tar歸檔文件中已有的同名文件新的文件追加到該tar歸檔文件中-x:從已有的tar歸檔文件中提取文件?-C dir:切換到指定目錄-f file:輸出結果到文件或設備-j:將輸出重定向給bzip2命令來壓縮內容-p:保留所有文件權限-v:在處理文件時顯示文件-z:將輸出重定向給gzip命令來壓縮內容
3. 使用Linux環境變量
3.1 什么是環境變量
? bash shell用環境變量的特性來存儲有關shell會話和工作環境的信息。環境變量分為全局變量和局部變量。
? 全局變量不僅對shell會話可見,對所有shell創建的子進程也可見。
? 局部變量只對創建他們的shell可見。
printenv:查看全局變量
echo $全局變量名:顯示單個變量值
set:顯示某個特定進程設置的所有環境變量,包括全局變量。沒有單獨命令能顯示局部變量。
3.2 設置環境變量
設置局部變量:
? 啟動bash shell 即可為局部變量賦值。如:test=testing。但是在子shell和父shell中都不能使用。
設置全局變量:
? 創建全局變量的方法是先創建一個局部變量,再導出到全局環境中,通過export完成。
$test = testing$export test$bash$echo $testtesting
3.3刪除環境變量
unset 環境變量名:刪除環境變量,注意不要用$。
如果在子進程中刪除了全局環境變量,那么只對當前子進程有效。
3.4 默認shell環境變量
? 不是所有的默認環境變量都會在運行set命令時列出。盡管是默認環境變量,但并不代表它們所有必須有一個值。
3.5 設置PATH環境變量
? PATH環境變量是Linux系統上造成最多問題的變量。它定義了命令行輸入命令的搜索路徑。如果找不到,則會產生一個錯誤。
3.6 定位系統環境變量
3.6.1登陸shell
登陸shell會從以下4個不同啟動文件讀取命令。
/etc/profile//bash shell的主啟動目錄$HOME/.bash_profile$HOME/.bash_login$HOME/.profile
剩下三個$HOME啟動文件都有同一個作用:提供一個用戶專屬的啟動文件來定義用戶專有環境變量。大多數發行版只有三個文件中的一個。
3.6.2交互式shell
如果bash shell不是登陸系統時啟動,shell被稱為交互式shell。交互式shell不會訪問/etc/profile文件,而是只用尋找用戶HOME目錄的.bashrc是否存在。.bashrc文件有兩個作用:查看/etc目錄下共用bashrc文件,二是為用戶提供一個定制自己的命令別名和私有腳本函數的地方。
3.7 可變數組
環境變量可以作為數組來使用:$ mytest=(one two three four)
$echo $mytest[2]
$echo $mytest[*]
3.8 使用命令別名
alias 別名='命令':設置別名
-p:顯示已有別名列表
4. 理解Linux文件權限
4.1 Linux的安全性
4.1.1? /etc/passwd文件:包含與用戶有關的信息
4.1.2? /etc/shadow文件:能對linux系統如何管理密碼有更多的控制,只有root用戶可以訪問
4.1.3? 添加新用戶:
useradd:使用系統默認值及命令行參數來添加新用戶
-D:查看系統默認值
-m:創建用戶home目錄
-c comment:-d home_dir:-e expire_date:-f inactive_days:
4.1.4 刪除用戶:
userdel:刪除etc/passwd的用戶信息,不會刪除系統中的用戶文件。
-r:同時刪除用戶的HOME目錄及mail目錄。
4.1.5 修改用戶:
usermod:修改用戶賬戶字段,并可以指定主要組以及附加組的所屬關系。
-l:修改用戶賬戶的登陸名
-L:鎖定用戶,無法登陸
-p:修改用戶賬戶密碼
-U:解除賬戶鎖定
passwd:修改已有用戶密碼
chpasswd:從文件中讀取登錄名密碼對,并更新密碼
chsh? chfn? chage:用來修改特定的賬戶信息
4.2 使用Linux組
? 組權限允許多個用戶共享一組共用的權限來訪問系統上的對象,比如文件,目錄和設備。
? 每個組都有唯一的GID。
/etc/group:包含系統上用到的每個組的信息。該文件有四個字段:組名;組密碼;GID;用戶列表。
? 不能通過修改該文件來實現添加用戶到組,而是要用usermod命令。
創建新組:groupadd命令用來創建新組。
修改組:groupmod命令可以修改已有組的GID(-g)或組名(-n)。
4.3 理解文件權限
文件權限符:如-rw-rw-r--。
? 第一個字符代表文件的類型:
-代表文件d代表目錄l代表鏈接c代表字符型設備
? 之后有三種三字符的碼,每一種三字符碼代表三種訪問權限:
r:代表對象是可讀的w:代表對象是可寫的x:代表對象是可執行的-:代表沒有權限
? 這三組字符碼分別對應三個安全級別:文件屬主;屬組成員;其他用戶
默認文件權限:
umask:用來設置用戶創建文件和目錄的默認權限
linux文件權限碼
---:0--x:1-w-:2-wx:3r--:4r-x:5rw-:6rwx:7
4.4 改變安全性設置
改變權限:
chmod:改變文件和穆勒的安全性設置。chmod 760 file
改變所屬關系:
chown:改變文件屬主和屬組。chown options owner[.group] file
chgrp:改變文件默認屬組。chgrp group file
只有root用戶能夠改變文件的屬主,任何屬主都可以改變文件屬組。
5. 管理文件系統
5.1 探索Linux文件系統
5.2 操作文件系統
創建分區:
fdisk:用來管理存儲分區,是一個交互式程序。
p:顯示存儲設備詳細信息n:創建新分區w:將更改保存到設備上
創建文件系統:
檢查和修復:fsck命令用來檢查和修復任意類型的linux文件系統。
5.3 邏輯卷管理器
使用Linux LVM
1.定義物理卷使用fdisk命令將物理分區轉換成物理卷區段使用pvcreat命令來用分區創建真實的物理卷2.創建卷組vgcreate:創建卷組vgdisplay:查看新創建的卷組的細節3.創建邏輯卷lvcreate:創建邏輯卷lvdisplay:查看邏輯卷詳細信息4.創建文件系統5.修改LVM
6. 安裝軟件程序
6.1包管理基礎
6.2 基于Debian的系統
? dpkg命令是基于Debian系PMS工具的核心。包含在PMS中的其它工具有:
apt-get
apt-cache
aptitude(最常用)
aptitude的使用:
管理軟件包
aptitude:進入全屏模式,q鍵退出
aptitude show package_name:單個命令使用aptitude
dpkg -L package_name:顯示某個特定軟件包關聯的所有文件列表
安裝軟件包
aptitude search package_name:搜索特定軟件包,i:軟件包已經安裝;p:軟件包未安裝
aptitude install package_name:安裝軟件包
更新軟件
aptitude safe-upgrade:更新系統上所有軟件包
卸載軟件
aptitude remove package_name:只刪除軟件包但不刪除數據和配置文件
aptitude purge package_name:刪除軟件包和相關的數據和配置文件
aptitude庫
庫存儲在/etc/apt/sources.list中。
6.3 基于Red Hat的系統
yum:在Red Hat和Fefora中使用(重點)urpm:在Mandriva中使用zypper:在openSUSE中使用
yum的使用
列出安裝包
yum list installed:列出已安裝的包,輸出的信息可能一閃而過,最好重定向到一個文件中,如:yum list installed > installed_software。
yum list package_name:查看特定的軟件包詳細信息。
安裝軟件
yum install package_name:安裝軟件
更新軟件
yum list updates:更新所有可用的軟件
yum update package_name:更新特定軟件
yum update:更新所有列在更新列表中的包
卸載軟件
yum remove package_name:只刪除軟件包,保留配置文件和數據文件
yum erase package_name:刪除軟件包和它的所有文件
處理損壞的包依賴關系
yum clean all:清理放錯文職的文件
yum deplist package_name:顯示所有包的庫依賴關系
yum軟件庫
yum repolist:查看正在從什么庫中獲取文件
6.4 從源碼安裝
解壓tar包
tar -zxvf xxx.tar.gz
cd xxx
./configure:為系統配置systat
make:構建二進制文件
make install:安裝軟件
7. 使用編輯器
7.1 Vim編輯器
?Vim編輯器
? Vim有兩種模式,普通模式和插入模式。Vim初始顯示的是普通模式,按i后進入編輯模式,按Esc退回到普通模式。
h:左移一個字符j:下移一行k:上移一行l:右移一個字符?PageDown(或Ctrl+F):下翻一屏數據PageUp(或Ctrl+B):上翻一屏數據G:移到緩沖區最后一行num G:移到緩沖區的第num行gg:移到緩沖區的第一行
? Vim在普通模式下有個命令行模式。按:進入命令行模式。
q:如果未修改緩沖區數據,退出q!:取消所有對緩沖區數據的修改并退出w filename:將文件保存到另一個文件名下wq:將緩沖區的數據保存到文件中并退出
編輯數據
? 在插入模式下,可以向緩沖區插入數據。在普通模式下,vim也提供了一些命令來編輯緩沖區中的數據。
x:刪除當前光標所在位置的字符dd:刪除當前光標所在行dw:刪除當前光標所在位置的單詞d$:刪除當前光標所在位置至行尾的內容J:刪除當前光標所在行行尾的換行符u:撤銷前一編輯命令a:在當前光標后追加數據A:在當前光標所在行行尾追加數據r char:用char替換當前光標所在位置的單個字符R text:用text覆蓋當前光標所在位置的數據,知道按下Esc
復制和粘貼
? 編輯數據時刪除數據實際上是將數據保存到單獨的寄存器中(也就是剪切),可以使用p命令來取回數據,也就是粘貼。
? 復制相對復雜一點。復制的命令是y,可以與y使用與d命令相同的第二字符(yw,y$),然后用p粘貼光標所在的位置。復雜的是你不知道自己復制了什么。
? 于是vim還有一種可視模式。移動光標到要復制的開始位置,按下v鍵進入可視模式,移動光標復制想要復制的文本,然后按下y鍵激活復制,p鍵粘貼。
查找和替換
查找:按下斜線(/),輸入要查找的內容回車。
1. 如果要查找的文本出現在光標當前位置之后,則光標會跳到該文本出現的第一個位置。2. 如果要查找的文本未在光標當前位置之后出現,則光標會繞過文件末尾,顯示在該文本出現的第一個位置。3. 輸出錯誤信息,說明未找到文本。4. 要繼續查找同一單詞,按下`/`鍵,然后回車。或者使用`n`鍵,表示下一個(next)。
替換:進入替換模式,必須在命令行模式下輸入::s/old/new/。
? vim編輯器會跳到old第一次出現的地方并用new替換。可以對替換命令做一些修改來多處替換。
:s/old/new/g一行命令替換所有old:n,ms/old/new/g替換行號n和m之間的所有old:%s/old/new/g替換整個文件中的所有old:%s/old/new/gc替換整個文件中的所有old,但在每次出現時提示
7.2 Emacs編輯器
7.3 KDE系編輯器
7.4 GNOME編輯器
(因為我自從接觸到linux以來一直使用的都是vim,所以對于其他的編輯器以后了解的時候再補充吧。如果想要查看相關內容,建議閱讀原書!)
(完)
技能樹.IT修真院
“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫”。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧 !
注冊邀請碼:99872160 ? ? ?注冊鏈接:IT修真院