就其本質而言,Unix 是一個「超級工具」環境。即使是 Unix 的初學者, 都能很快地領會到存在於 shell 程式設計、別名與歷史機制以及各種編輯工具中的無窮威力。 然而,只有極少數的人們真的精通 Unix 所提供的強大能力。要學習的東西實在是太多了!
「Unix 超級工具」第三版實實在在地含有數以千計的秘訣、命令稿與技巧, 可以讓 Unix 的使用變得更容易、更有有效率且甚至更有樂趣。本書由上百篇的短文組成, 內含大量與其它章節之間的交互參考,可讓你從一篇新的文章快速地翻閱至另一篇新的文章。 當你看到一個接一個有趣的秘訣時,你會發現很難將本書放下來。
隨著 Linux 越來越普及以及 Mac OS X 的到來,Unix 也變成一種新穎且令人興奮的事物。 因為 Unix 不再被視為是難以相處的作業系統,越來越多的使用者第一次發現了它的優點。 這是一本最暢銷且為讀者喜愛的書,在最新版中充滿了幾乎是關於 Unix 各個面向的參考說明, 包括使用者需要知道的所有新技術。除了關於 Linux、Mac OS X 與 BSD 不可或缺的資訊外, 「Unix 超級工具」現在為 bash、zsh 與新的 shell,提供了較多的篇幅,而且對於 最新的公用程式與應用軟體也有較多的討論。有些文章的重點集中在安全性與 Internet 的存取, 還有新的一章討論如何從 Windows 存取 Unix,點出了當今各種系統的異質本性。 你也會發現本書介紹了更多關於軟體的安裝與包裝,以及 Perl 與 Python 的基本資訊。
伴隨著本書的網站提供了一些可供 Unix 使用者取用的最佳軟體,你可以下載並將它們加到你自己的超級工具箱中。 不管你是初學者還是 Unix 的超級使用者,你都會發現自己正在此新版「Unix 超級工具」中閱讀挖掘資訊寶藏, 並將它們添加到你的知識積蓄中。想要來點新鮮的事物嗎?請先看看本書,你必然會找到一項秘訣或技巧, 而讓你不再以困難的方法學習事物。
目錄
如何使用本書
第六篇 命令稿設計
第 27 章 Shell 解譯
27.1 Shell 做些什麼?
27.2 Shell 如何執行其他命令
27.3 不管如何,Shell 到底是什麼?
27.4 命令的評估與意外覆寫檔案
27.5 一個接著一個地輸入命令列引數
27.6 控制 shell 的命令搜尋
27.7 別名中的通配字符
27.8 eval:當你需要另一個機會
27.9 bash 會用哪一個?
27.10 C Shell 會用哪一個?
27.11 是 "2>&1 file" 或是 "> file 2>&1" ?為什麼?
27.12 Bourne Shell 引文
27.13 Bourne 與 C Shell 引文的差異
27.14 引用檔名中的特殊字符
27.15 Verbose 與 Echo 的設定可以顯示引文
27.16 即席文件
27.17 「特殊的」字符與運算符
27.18 有多少反斜線?
第 28 章 節省在命令列上的時間
28.1 Unix 命令列有何特殊之處?
28.2 使用 CTRL-r 重印命令列
28.3 使用通配字符建立檔案?
28.4 使用 {} 建造字串
28.5 字串編輯(冒號)運算符
28.6 自動完成
28.7 不要在檔名完成中比對無用的檔案
28.8 重複命令
28.9 重複與變化命令
28.10 使用複製與貼上重複一個命令
28.11 重複隨時間而有不同結果的命令
28.12 多行命令、次要提示
28.13 即席文件範例 1:未格式化的信件
28.14 命令替換
28.15 使用暫存檔處理大量文字
28.16 使用分號分隔命令
28.17 處理過多的引數
28.18 Expect
第 29 章 自訂命令
29.1 建立自訂命令
29.2 Shell 別名介紹
29.3 含有命令列引數的 C shell 別名
29.4 設定與取消 Bourne 類型的別名
29.5 Korn-Shell 的別名
29.6 zsh 的別名
29.7 可取用的(Sourceable)命令稿
29.8 避免 C-Shell 的別名迴圈
29.9 如何將 if-then-else 放入 C shell 的別名中
29.10 使用 makealias 與 quote 修正 csh 別名中的引文
29.11 Shell 函式的基礎
29.12 Shell 函式的特有細節
29.13 傳播 Shell 函式
29.14 模擬 Bourne Shell 函式與別名
第 30 章 歷史的用途
30.1 歷史課程
30.2 概述歷史
30.3 我最喜愛的是 !$
30.4 我最喜愛的是 !:n*
30.5 我最喜愛的是 ^^
30.6 為了通配字符的安全性而使用 !$
30.7 依編號的歷史
30.8 歷史替換
30.9 重複一個循環的命令
30.10 對檔案執行一連串的命令
30.11 使用 :p 先檢查你的歷史
30.12 找到離開的地方
30.13 將歷史傳給另一個 Shell
30.14 Shell 的命令列編輯
30.15 使用 histchars 更改歷史字符
30.16 更改歷史字符的替代方案
第 31 章 快速地四處移動
31.1 在檔案系統中到處移動
31.2 使用相對與絕對路徑名稱
31.3 目前的目錄有何用處?
31.4 Unix 如何找到你的目前目錄?
31.5 更改目錄時節省時間:cdpath
31.6 迴圈控制:break 與 continue
31.7 Shell 的 pushd 與 popd 命令
31.8 pushd 的美妙別名
31.9 使用別名的快速 cd
31.10 藉由目錄的起首字母執行 cd
31.11 快速地找到(任何人的)家目錄
31.12 使用 Shell 變數標示你的位置
31.13 當你進入/離開目錄時的自動化設定
第 32 章 正規式(樣式比對)
32.1 是一種表示法
32.2 不要將正規式與通配字符搞混了
32.3 認識表示式
32.4 在正規式中使用 Meta 字符
32.5 正規式:停駐點字符 ^ 與 $
32.6 正規式:使用字符集比對字符
32.7 正規式:使用 .(點號)比對任意字符
32.8 正規式:使用 [...] 指定字符範圍
32.9 正規式:字符集中的例外
32.10 正規式:使用 * 重複字符集
32.11 正規式:使用 \{ 與 \} 比對特定數量的集合
32.12 正規式:使用 \< 與 \> 比對字組
32.13 正規式:使用 \(、\) 與 \1 記住樣式
32.14 正規式:潛在的問題
32.15 延伸的正規式
32.16 讓正規式是正確的
32.17 正規式正好相符的是什麼?
32.18 限制相符的範圍
32.19 我絕不使用我不喜歡的 Meta 字符
32.20 適用於不同 Unix 程式的有效 Meta 字符
32.21 樣式比對的快速參考與範例
第 33 章 通配字符
33.1 檔案命名的通配字符
33.2 概述檔名通配字符
33.3 誰處理通配字符?
33.4 如果通配字符不相符呢?
33.5 或許你不該在路徑名稱中使用通配字符
33.6 使用 grep -l 取得相符檔案的清單
33.7 取得不相符檔案的清單
33.8 nom:列出與通配字符不相符的檔案
第 34 章 sed 串流編輯器
34.1 sed 摘要
34.2 關於 sed 你必須知道的兩件事
34.3 啟動 sed
34.4 測試與使用 sed 命令稿:checksed、runsed
34.5 sed 定址的基本原理
34.6 命令稿中命令的順序
34.7 一次處理一件事情
34.8 劃定正規式的界限
34.9 sed 取代字串中的換行字符
34.10 在取代字串中參考搜尋字串
34.11 參考到搜尋字串的某些部份
34.12 搜尋與取代:許多相符之處的其中一個
34.13 文字的轉換
34.14 保存空間:儲備緩衝區
34.15 轉換文字行的一部份
34.16 跨越行邊界進行編輯
34.17 謹慎的抄寫員
34.18 搜尋分跨多行的樣式
34.19 多行刪除
34.20 在…以外的任何地方進行編輯
34.21 sed 的測試命令
34.22 sed 退離命令的使用
34.23 sed 退離命令的危險
34.24 命令稿中 sed 的換行、引文與反斜線
第 35 章 無相關經驗者的Shell 程式設計
35.1 編寫一個簡單的 Shell 程式
35.2 每個人都應該學一點 Shell 程式設計
35.3 環境變數有何用處
35.4 父子關係
35.5 預先定義好的環境變數
35.6 PATH 環境變數
35.7 PATH 與 path
35.8 DISPLAY 環境變數
35.9 Shell 變數
35.10 使用 Bourne-Shell 的 case 測試字串值
35.11 case 敘述句中的樣式比對
35.12 Unix 行程的離開狀態
35.13 使用 if 敘述句測試離開狀態
35.14 測試你的命令稿是否成功
35.15 測試離開狀態的迴圈
35.16 設定 Shell(命令稿)的離開狀態
35.17 捕捉因中斷而產生的離開狀態
35.18 read:從鍵盤讀取
35.19 用於 awk、sed 等的 Shell 命令稿「封套」
35.20 在 Shell 命令稿中處理命令列引數
35.21 使用 for 迴圈處理命令列引數
35.22 使用 while 與 shift 處理引數
35.23 迴圈控制:break 與 continue
35.24 標準的命令列剖析
35.25 Bourne Shell 的 set 命令
35.26 test:測試檔案與字串
35.27 為新的命令選取名稱
35.28 尋找程式的名稱與賦予程式多個名稱
35.29 使用 . 與 source 命令讀取檔案
35.30 在 Shell 命令稿中使用 Shell 函式
第 36 章 入門者的Shell 程式設計
36.1 在基礎之外
36.2 : # #! 的故事
36.3 你的命令稿不需要 Shell?那就不要使用 Shell
36.4 令 #! 搜尋 PATH
36.5 exec 命令
36.6 未受賞識的 Bourne Shell「:」運算符
36.7 參數替換
36.8 節省磁碟空間與程式的設計:賦予程式多個名稱
36.9 尋找最後一個命令列引數
36.10 如何取消所有的命令列參數
36.11 for 迴圈的標準輸
36.12 建立一個含有多個變數的 for 迴圈
36.13 使用 basename 與 dirname
36.14 一個具有數個迴圈控制命令的 while 迴圈
36.15 概述:開啟的檔案與檔案代碼
36.16 n>&m:將標準輸出與標準錯誤對調
36.17 Shell 可從其標準輸入讀取命令稿,但是…
36.18 在讀取標準輸入的過程中產生 Shell 命令稿
36.19 被引用的即席文件終止符號:sh 對 csh
36.20 關閉對「機密」答案的回應
36.21 快速參考:expr
36.22 使用 expr 測試字串中的字符
36.23 抓取字串的某些部份
36.24 巢狀的命令替換
36.25 使用一個 case 敘述句測試兩個字串
36.26 輸出文字到 X 視窗中
36.27 Shell 鎖定檔
第 37 章 Shell 命令稿的除錯與陷阱
37.1 Shell 命令稿除錯的秘訣
37.2 Bourne Shell 除錯器顯示一個 Shell 變數
37.3 停止顯示數值測試中的語法錯誤
37.4 停止顯示字串測試中的語法錯誤
37.5 引文與命令列參數
37.6 Unix 如何記錄時間
37.7 使用 script 將你所做的複製下來
37.8 清理 script 檔案
37.9 為測試工作建立任意大小的檔案
第七篇 擴充與管理你的環境
第 38 章 備份檔案
38.1 這個「備份」指的是什麼?
38.2 概述 tar
38.3 建立你自己的備份
38.4 更多的備份方法
38.5 如何備份到本地磁碟上
38.6 使用 tar 從磁帶還原檔案
38.7 使用 tar 連接至遠端磁帶機
38.8 使用 GNU tar 與遠端磁帶機
38.9 隨需要而進行專案的遞增備份
38.10 使用 tar 與通配字符
38.11 避免 tar 使用絕對路徑
38.13 cpio 磁帶歸檔器
38.14 工業強度的備份
第 39 章 建立與讀取檔案庫
39.1 打包與搬家
39.2 使用 tar 建立與打開檔案庫
39.3 GNU tar 選粹
39.4 使用 RCS 與 CVS 管理及分享檔案
39.5 RCS 的基本原理
39.6 使用 rcsrevs 列出 RCS 修訂版本編號
39.7 CVS 的基本原理
39.8 更多 CVS
第 40 章 軟體安裝
40.1 /usr/bin 與其他軟體目錄
40.2 在 Unix 上軟體安裝的挑戰
40.3 哪一個 make?
40.4 簡化 make 的程序
40.5 使用 Debian 的 dselect
40.6 使用 Debian 的 Apt-Get 安裝軟體
40.7 使用 wget 進行可以中斷的 gets
40.8 curl 應用程式與 OS X 的 One-Step GNU-Darwin 自動安裝器
40.9 使用 FreeBSD Ports 進行安裝
40.10 使用 FreeBSD Packages 進行安裝
40.11 尋找與安裝 RPM 套件軟體
第 41 章 Perl
41.1 高純度的 Shell 命令稿設計
41.2 檢查你所安裝的 Perl
41.3 從頭開始編譯 Perl
41.4 Perl 新兵訓練營,第一部份:典型的命令稿剖析
41.5 Perl 新兵訓練營,第二部份:變數與資料型別
41.6 Perl 新兵訓練營,第三部份:分支與迴圈
41.7 Perl 新兵訓練營,第四部份:樣式比對
41.8 Perl 新兵訓練營,第五部份:Perl 懂得 Unix
41.9 Perl 新兵訓練營:第六部份:模組
41.10 Perl 新兵訓練營,第七部份:perldoc
41.11 CPAN
41.12 使用 Perl 建造自訂的 grep 命令(等)
41.13 Perl 與 Internet
第 42 章 Python
42.1 Python 是什麼?
42.2 安裝與 Distutils
42.3 Python 的基礎
42.4 Python 與 Web
42.5 urllib
42.6 urllib2
42.7 htmllib 與 HTMLParser
42.8 cgi
42.9 mod_python
42.10 Perl 怎麼樣呢?
第八篇 通訊與連線
第 43 章 重新導向輸入與輸出
43.1 使用標準輸入與輸出
43.2 只提供 cat 一個引數是不夠的
43.3 (只)透過管道傳送標準錯誤
43.4 透過管道將資料傳送給分頁器的問題
43.5 C Shell 中的重新導向:也能捕捉錯誤?
43.6 使用 noclobber 的安全 I/O 重新導向
43.7 () Subshell 運算符
43.8 將輸出傳送到兩個或更多地方
43.9 如何使用 tee 將數個命令的輸出集中在一起
43.10 將輸出重新導向到不只一處
43.11 命名的管道:FIFOs
43.12 你能使用一個空的檔案做些什麼?
第 44 章 裝置
44.1 硬體的快速簡介
44.2 讀取系統核心開機時的輸出
44.3 基本的系統核心組態
44.4 磁碟分割區
44.5 檔案系統類型與 /etc/fstab
44.6 掛載與卸載可移除的檔案系統
44.7 迴路掛載
44.8 網路裝置—ifconfig
44.9 掛載網路檔案系統—NFS、SMBFS
44.10 Win 是一個不是數據機的數據機?
44.11 設定一個撥接的 PPP 通訊期
44.12 USB 的組態設定
44.13 處理音效卡與其他不知名的硬體
44.14 發動攻擊破壞你的系統—序列式主控台
第 45 章 列印
45.1 簡介列印
45.2 簡介 Unix 的列印
45.3 使用 lpc 控制印表機
45.4 使用不同的印表機
45.5 使用排存的符號連結
45.6 編排普通文字:pr
45.7 編排純文字:enscript
45.8 透過網路列印
45.9 透過 Samba 列印
45.10 簡介排版
45.11 Unix 排版的一點點歷史
45.12 排版手冊頁:nroff
45.13 編排標誌語言—troff、LATEX、HTML 等
45.14 列印語言—PostScript、PCL、DVI、PDF
45.15 將文字檔轉換成列印語言
45.16 將排版檔轉換成列印語言
45.17 在排存器中魔術般自動地轉換原始檔
45.18 共通 Unix 列印系統
45.19 可攜式點陣圖套件
第 46 章 網路連線
46.1 TCP/IP—IP 位址與通訊埠
46.2 /etc/services 是你的朋友
46.3 狀態與疑難排除
46.4 哪裡,那個封包跑到哪裡去了?
46.5 運作的導演:inetd
46.6 安全的 Shell(SSH)
46.7 設定匿名的 FTP 伺服器
46.8 郵件—SMTP、POP 與 IMAP
46.9 網域名稱服務(DNS)
46.10 動態主機組態協定(DHCP)
46.11 閘道器與 NAT
46.12 防火牆
46.13 透過數據機的個人區域網路閘道功能
第 47 章 連線至 MS Windows
47.1 建造橋樑
47.2 安裝與設定 Samba
47.3 提升 Samba 的安全性
47.4 SWAT 與 GUI 的 SMB 瀏覽器
47.5 使用 Samba 進行列印
47.6 從 Unix 連接到 SMB 分享資源
47.7 使用 VNC 分享桌面
47.8 模擬器與 APIs
47.9 Citrix:讓 Windows 成為多使用者環境
第九篇 安全防護
第 48 章 安全防護的基本原理
48.1 瞭解弱點的所在
48.2 安全檢核表
48.3 保持知悉安全警示
48.4 緩衝區溢位是什麼意思
48.5 DoS 是什麼意思
48.6 留意遲緩的效能
48.7 入侵偵測
48.8 MOTD 的重要性
48.9 Linux 的 proc 檔案系統
48.10 關閉 inetd
48.11 不允許 rlogin 與 rsh
48.12 TCP 封套
第 49 章 Root、群組與使用者管理
49.1 Unix 的使用者/群組基礎建設
49.2 使用者何時會變成使用者
49.3 忘記 root 的密碼
49.4 設定確切的 umask
49.5 使用 setgid 位元設定目錄中的群組權限
49.6 群組與群組所有權
49.7 在拒絕給予權限的群組中增加使用者
49.8 SUID 與 SGID 命令稿的照料與飼養
49.9 使用 su 更換身分
49.10 絕不要以 root 身分登入
49.11 使用 sudo 提供超級能力
49.12 在 Darwin 中開啟 Root 權限
49.13 關閉登入功能
第 50 章 檔案的安全防護、所有權與分享
50.1 簡介檔案所有權與安全防護
50.2 檔案與目錄權限的教學
50.3 誰會擁有新的檔案?
50.4 使用黏著位元保護檔案
50.5 使用 chmod 更改檔案的權限
50.6 靈巧的 chmod = 運算符
50.7 保護重要的檔案:讓它們成為不可寫入
50.8 cx、cw、c-w:快速更改檔案權限
50.9 一個漏洞:修改檔案卻無寫入權限
50.10 人們能夠存取卻不能列出其內容的目錄
50.11 巧妙地處理權限
50.12 使用 md5sum 進行檔案的確認
50.13 Shell 命令稿必須是可以讀取而且(通常是)可以執行的
50.14 為什麼你不能更改檔案的所有權?
50.15 如何不使用 chown 而更改檔案的所有權
第 51 章 SSH
51.1 開啟在 Mac OS X 上的遠端存取功能
51.2 保護經由 SSH 所進行的存取
51.3 使用 OpenSSH 的免費 SSH
51.4 SSH 的問題與解決方案
51.5 一般性的與鑑別的問題
51.6 金鑰與代理器的問題
51.7 伺服器與用戶端的問題
名詞解釋
索引
如何使用本書
第六篇 命令稿設計
第 27 章 Shell 解譯
27.1 Shell 做些什麼?
27.2 Shell 如何執行其他命令
27.3 不管如何,Shell 到底是什麼?
27.4 命令的評估與意外覆寫檔案
27.5 一個接著一個地輸入命令列引數
27.6 控制 shell 的命令搜尋
27.7 別名中的通配字符
27.8 eval:當你需要另一個機會
27.9 bash 會用哪一個?
27.10 C Shell 會用哪一個?
27.11 是 "2>&1 file" 或是 "> file 2>&1" ?為什麼?
27.12 Bourne Shell 引文
27.13 Bourne 與 C Shell 引文的差異
27....
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。