《Linux命令行大全》讀書筆記


這本書比較容易讀,也比較容易上手。里面有一些驚喜,學到一些以前不知道的linux概念。

初學linux的好幫手,比學視頻培訓好很多,先搞懂以下兩章,會操作文件,會安裝軟件。

第4章 操作文件與目錄
第14章 軟件包管理

 

適合的讀者:Linux新用戶

目標:掌握Linux命令行的使用,理解命令行的工作原理和方式,增強與linux的親近感。

 

全書36章,主要內容:

一、命令行語言介紹

命令結構

文件系統

命令行編輯

命令幫助與使用手冊

二、配置文件編輯

三、利用命令行完成常規任務

四、shell編程

 

date # 顯示當前系統的時間和日期
cal # 顯示當月的日歷
df # 查看磁盤驅動器當前可用空間
free # 顯示可用內存
exit # 關閉終端

pwd # 查看當前工作目錄
cd # 改變目錄, “.”工作目錄,“..”工作目錄的父目錄
ls # 查看目錄內容,文件和目錄屬性;ls -a 可看到隱藏目錄
ls:查看當前工作目錄中包含的一系列文件和子目錄;
ls /usr :查看特定目錄,此處為/usr
ls ~ /usr :查看多個目錄
ls -l : 查看詳細信息

 

 

 

 

 

 


類UNIX系統以分層目錄結構(樹形結構)組織文件。tree命令
大部分命令行形式: command -options arguments "-"連字符

file # 確定文件類型
less # 查看文件內容  less filename

less常見的鍵盤命令

 

 

Linux文件系統層次標准(Linux Filesystem Hierarchy Standard)

 

 

 

 

 

 

 

 

第4章 操作文件與目錄

cp:復制文件和目錄。
mv:移動或重命名文件和目錄。
mkdir:創建目錄。
rm:移除文件和目錄。
in:創建硬鏈接和符號鏈接。

 

通配符(也叫文件名替換)允許用戶依據字符模式選擇文件名,可以快速幫助查找文件名。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rm命令與通配符在一起使用時要特別小心。

類UNIX操作系統(如Linux)並不包含還原刪除操作的命令。一旦使用rm命令,就徹底地刪除。

 

 

 

 

 

 

第5章 命令的使用

type:顯示命令的類型。 type command
which:顯示可執行程序的位置。 which command
help: 獲得shell內置命令的幫助文檔,顯示命令的使用信息。 help command 或者 command --help
man:顯示命令的手冊頁。
apropos:顯示一系列合適的命令。
info:顯示命令的info條目。
whatis:顯示命令的簡要描述
alias:創建一條命令的別名。

man命令顯示的“手冊文檔”被分成多個部分(section),它不僅包括用戶命令,也包括系統管理命令、程序接口、文件格式等。

 

 $man 5 passwd  # 該命令將會顯示文件/etc/passwd的文件格式描述手冊。

 

GNU項目提供了info頁面來代替手冊文檔。

 

 

 

 

系統中安裝的很多軟件包都有自己的文檔文件,它們存放在/usr/share/doc目錄中。

 

第6章 重定向

命令行最酷的功能——I/O重定向。
這個功能可以把命令行的輸入重定向為從文件中獲取內容,也可以把命令行的輸出結果重定向到文件中。如果我們將多個命令行關聯起來,將形成非常強大的命令——管道。

UNIX“一切都是文件”的思想


I/O重定向功能可以改變輸出內容發送的目的地,也可以改變輸入內容的來源地。

 

重定向標准輸出

$ > ls-output.txt  # 僅僅使用重定向符,並在它之前不加任何命令,就可以刪除一個已存在的文件內容或者創建一個新的空文件。

 

如何不從文件的首位置開始覆蓋文件,而是從文件的尾部開始添加輸出內容呢?可以使用重定向符“>>”來實現,使用重定向符>>將使得輸出內容添加在文件的尾部。如果這個文件並不存在,將與操作符>的作用一樣創建這個文件。

文件描述符(file descriptor)。一個程序可以把生成的輸出內容發送到任意文件流中。如果把這些文件流中的前三個分別對應標准輸入文件、標准輸出文件和標准錯誤文件,那么shell將在內部用文件描述符分別索引它們為0、1和2。shell提供了使用文件描述符編號來重定向文件的表示法。由於標准錯誤等同於文件描述符2,所以可以使用這種表示法來重定向標准錯誤。

$ ls -l /bin/usr 2> ls-error.txt  # 文件描述符“2”緊放在重定向符之前,將標准錯誤重定向到ls-error.txt文件中。

 

重定向標准錯誤

6.1.3 將標准輸出和標准錯誤重定向到同一個文件

$ ls -l /bin/usr &> ls-output.txt  # 使用標記符“&>”把標准輸出和標准錯誤都重定向到了lsoutput.txt文件中

 

6.1.4 處理不想要的輸出

想把輸出丟棄,尤其是在輸出錯誤和狀態信息的情況下。通過把輸出重定向到/dev/null的特殊文件來實現它。這個文件是一個稱為位桶(bit bucket)的系統設備,它接受輸入但是不對輸入進行任何處理。

$ ls -l /bin/usr 2> /dev/null

 

6.1.5 標准輸入重定向

cat——合並文件
cat命令讀取一個或多個文件,並把它們復制到標准輸出文件中,格式:cat [file...]

如果cat命令沒有給定任何參數,它將從標准輸入讀取內容。Ctrl-D退出。
$ cat > lazy_dog.txt #標准輸入用文本輸出
The quick brown fox jumped over the lazy dog.
然后Ctrl-D退出。

 

6.2 管道
Command1 | command2
使用管道操作符“|”(豎線)可以把一個命令的標准輸出傳送到另一個命令的標准 輸入中。

通過使用該技術,可以很方便地檢查任意一條生成標准輸出的命令的運行結果。

過濾器(filter)接受輸入,按照某種方式對輸入進行改變,然后再輸出它。
$ ls /bin /usr/bin | sort | less    # 把/bin和/usr/bin目錄下的所有可執行程序合並成一個列表,並且按照順序排列,最后再查看這個列表

$ ls /bin /usr/bin | sort | uniq | less  # uniq命令,刪除列表中的所有重復行。
$ ls /bin /usr/bin | sort | uniq -d | less   # 查看重復行的列表,可以在uniq命令后面添加-d選項

 

wc(字數統計,word count)命令用來顯示文件中包含的行數、字數和字節數。
$ wc ls-output.txt   #  輸出行數、字數和字節數

$ ls /bin /usr/bin | sort | uniq | wc -l   #  -l選項限制命令只報告行數

 

grep是一個功能強大的程序,它用來在文件中查找匹配文本

grep pattern [file...]

$ ls /bin /usr/bin | sort | uniq | grep zip   # 搜索出文件名中包含zip的所有文件

選項:
-i,該選項使得grep在搜索時忽略大小寫(通常情況下,搜索是區分大小寫的);
-v,該選項使得grep只輸出和模式不匹配的行。

 

只是需要輸出開頭幾行或者最后幾行。
head命令將輸出文件的前10行,tail命令則輸出文件的最后10行;
使用-n選項來調整輸出的行數。

$ head -n 5 ls-output.txt
$ tail -n 5 ls-output.txt
$ ls /usr/bin | tail -n 5

$ tail -f /var/log/messages   # tail中-f選項很有用,用來實時查看文件,一旦添加了新行,新行將會立即顯示在屏幕上。該選項在觀察正在被寫入的日志文件的進展狀態時很有用。

按Ctrl-C后退出

 

tee——從stdin讀取數據,並同時輸出到stdout和文件

tee程序讀取標准輸入,再把讀到的內容復制到標准輸出和一個或更多的文件中去。
當在某個中間處理階段來捕獲一個管道中的內容時,會很有用。

$ ls /usr/bin | tee ls.txt | grep zip   # 在使用grep命令過濾管道內容之前,我們先使用tee命令來獲取整個目錄列表並輸出到ls.txt文件中

 

 

cat:合並文件。
sort:對文本行排序。
uniq:報告或刪除文件中重復的行。
wc:打印文件中的換行符、字和字節的個數。
grep:打印匹配行。
head:輸出文件的第一部分內容。
tail:輸出文件的最后一部分內容。
tee:讀取標准輸入的數據,並將其內容輸出到標准輸出和文件中。

 

echo:顯示一行文本。
clear:清屏。
history:顯示歷史列表的記錄。

 

 

第9章 權限

id:顯示用戶身份標識。
chmod:更改文件的模式。
umask:設置文件的默認權限。
su:以另一個用戶的身份運行shell。
sudo:以另一個用戶的身份來執行命令。
chown:更改文件所有者。
chgrp:更改文件所屬群組。
passwd:更改用戶密碼。

第10章 進程
Linux內核通過使用進程來管理多重任務。

ps:顯示當前所有進程的運行情況。
top:實時顯示當前所有任務的資源占用情況。
jobs:列出所有活動作業的狀態信息。
bg:設置在后台中運行作業。
fg:設置在前台中運行作業。
kill:發送信號給某個進程。
killall:殺死指定名字的進程。
shutdown:關機或者重啟系統。

 

 

第二部分 配置與環境

程序使用存儲在環境中的數據來確定我們的配置

printenv:打印部分或全部的環境信息。
set:設置shell選項。
export:將環境導出到隨后要運行的程序中。
alias:為命令創建一個別名。

 


第三部分 常見任務和主要工具

 

第14章 軟件包管理

決定Linux發行版本質量最重要的因素是軟件包系統和支持該發行版本社區的活力。

多數Linux發行版采用的不外乎兩種軟件包技術陣營,即Debian的.deb技術和Red Hat的.rpm技術。

 

軟件包管理系統通常包含兩類工具——執行如安裝、刪除軟件包文件等任務的低級工具和進行元數據搜索及提供依賴性解決的高級工具。

 

 

 

常見軟件包管理任務

 

 

 在庫里面查找軟件包

通過使用高級工具來搜索庫元數據時,我們可以根據包文件名或其描述來查找該包。

yum search emacs  # 搜索emac文本編輯器

 

 

安裝庫中的軟件包

高級工具允許從庫中下載、安裝軟件包,同時安裝所有的依賴包。

 

 package_name指軟件包名稱,package_file指包含該軟件包的文件名。

 

安裝軟件包文件中的軟件包

低級工具安裝,不會解決依賴性關系。在安裝過程中發現缺少依賴包,就會跳出錯誤后退出。

 

 

 

刪除軟件包

卸載軟件包既可利用高級工具也可用低級工具,高級工具的相關命令:

 

 

更新庫中的軟件包

 

 

更新軟件包文件中的軟件包

如果軟件包的更新版本已從非庫源中下載,可以用以下命令進行安裝更新從而取代原版本。

rpm -U emacs-22.1-7.fc7-i386.rpm   # 將Red Hat系統上已安裝好的emac程序更新為emacs-22.1-7.fc7-i386.rpm軟件包文件中的版本

 

 

列出已安裝的軟件包列表

Debian系統     dpkg --list
Red Hat系統    rpm -qa

判斷軟件包是否安裝

Debian系統     dpkg --status package_name
Red Hat系統      rpm -q package_name   # 要完整的軟件包名,不然找不到

 

顯示已安裝軟件包的相關信息

Debian系統  apt-cache show package_name
Red Hat系統  yum info package_name

 

查看某具體文件由哪個軟件包安裝得到
Debian系統  dpkg --search file_name
Red Hat系統  rpm -qf file_name

rpm -qf /usr/bin/vim    # 查看Red Hat系統中哪個軟件包安裝了/usr/bin/vim目錄下的文件

 

第15章 存儲介質

 

設備級別的數據處理。

管理存儲設備的一些重要命令:
mount:掛載文件系統。
unmount:卸載文件系統。
fdisk:硬盤分區命令。
fsck:檢查修復文件系統。
fdformat:格式化軟盤。
mkf:創建文件系統。
dd:向設備直接寫入面向塊數據。
genisoimage(mkisofs):創建一個ISO 9600映像文件。
wodim(cdrecord):向光存儲介質寫入數據。
md5sum:計算MD5校驗碼。

 

第16章 網絡

 

在網絡連接方面,Linux可以說是萬能的。

ping:向網絡主機發送ICMP ECHO_REQUEST數據包。
traceroute:顯示數據包到網絡主機的路由路徑。
netstat:顯示網絡連接、路由表、網絡接口數據、偽連接以及多點傳送成員等信息。
ftp:文件傳輸命令。
lftp:改善后的文件傳輸命令。
wget:非交互式網絡下載器。
ssh:OpenSSH(SSH協議的免費開源實現)版的SSH客戶端(遠程系統登錄命令)。
scp:secure copy 的縮寫,是遠程復制文件命令。
sftp:secure file transfer program的縮寫,安全文件傳輸程序。

 

IP (Internet protocol) address:互聯網協議地址。
host and domain name:主機名和域名。
URI (uniform resource identifier):統一資源標識符。

 

第17章 文件搜索

 

locate:通過文件名查找文件。
find:在文件系統目錄框架中查找文件。
xargs:從標准輸入中建立、執行命令行。
touch:更改文件的日期時間。
stat:顯示文件或文件系統的狀態。

 

第18章 歸檔和備份
維護系統數據安全是計算機系統管理者的基本任務之一,及時創建系統文件的備份文件是維護系統數據安全的一種常用方法

文件壓縮程序:
gzip:壓縮和解壓縮文件工具。
bzip2:塊排序文件壓縮工具。
文件歸檔程序:
tar:磁帶歸檔工具。
zip:打包和壓縮文件。
文件同步程序:
rsync:遠程文件和目錄的同步。

 

 

第19章 正則表達式

 


第20章 文本處理

 

操控和格式化文本的工具

由於所有類UNIX操作系統都嚴重依賴於文本文件來進行某些數據類型的存儲,所以需要
有很多可以進行文本操作的工具。

cat:連接文件並打印到標准輸出。
sort:對文本行排序。
uniq:報告並省略重復行。
cut:從每一行中移除文本區域。
paste:合並文件文本行。
join:基於某個共享字段來聯合兩個文件的文本行。
comm:逐行比較兩個已經排好序的文件。
diff:逐行比較文件。
patch:對原文件打補丁。
tr:轉換或刪除字符。
sed:用於過濾和轉換文本的流編輯器。
aspel:交互式拼寫檢查器。

 

第21章 格式化輸出

nl:對行進行標號。
fold:設定文本行長度。
fmt:簡單的文本格式化工具。
pr:格式化打印文本。
printf:格式化並打印數據。
grof:文檔格式化系統。

 

第22章 打印

 

pr:轉換文本文件,從而進行打印操作。
lpr:打印文件。
lp:打印文件(System V)。
a2ps:格式化文件,以在PostScript打印機上打印。
lpstat:顯示打印狀態信息。
lpq:顯示打印機隊列狀態。
lprm:取消打印任務。
cancel:取消打印任務(System V)。

 

第23章 編譯程序

 

通過源代碼生成可執行程序。
編譯的復雜程度完全取決於所要安裝的軟件包。

make—維護程序的工具。

 


第四部分 編寫shell腳本

 

第24章 編寫第一個shell腳本

 

通過自行設計,將命令行組合成程序的方式,shell就可以獨立完成一系列復雜的任務。


shell腳本是一個包含一系列命令的文件。shell讀取這個文件,然后執行這些命令,就好像這些命令是直接輸入到命令行中一樣。


shell 很獨特,因為它既是一個強大的命令行接口,也是一個腳本語言解釋器。我們將會看到,大多數能夠在命令行中完成的工作都可以在腳本中完成,反之亦然。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM