Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About

Netkiller Shell 手札

Unix, Linux, FreeBSD & Mac Shell

Mr. Neo Chan, 陳景峯(BG7NYT)



中國廣東省深圳市望海路半島城邦三期
518067
+86 13113668890


2009-11-15

電子書最近一次更新于 2020-04-25 00:48:59 .

版權聲明

轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信訂閲號 netkiller-ebook (微信掃瞄二維碼)
QQ:13721218 請註明“讀者”
QQ群:128659835 請註明“讀者”

2020-04-25 00:48:59

內容摘要

本文檔講述Linux系統涵蓋了系統管理與配置包括:

[注意]對初學Linux的愛好者忠告

玩Linux最忌reboot(重新啟動)這是windows玩家壞習慣

Linux只要接上電源你就不要再想用reboot,shutdown,halt,poweroff命令,Linux系統和應用軟件一般備有reload,reconfigure,restart/start/stop...不需要安裝軟件或配置伺服器後使用reboot重新引導計算機

在Linux系統裡SIGHUP信號被定義為刷新配置檔案,有些程序沒有提供reload參數,你可以給進程發送HUP信號,讓它刷新配置檔案,而不用restart.通過pkill,killall,kill 都可以發送HUP信號例如: pkill -HUP httpd

我的系列文檔:

操作系統

Netkiller Linux 手札 Netkiller FreeBSD 手札 Netkiller Shell 手札
Netkiller Security 手札 Netkiller Web 手札 Netkiller Monitoring 手札
Netkiller Storage 手札 Netkiller Mail 手札 Netkiller Virtualization 手札

以下文檔停止更新合併到 《Netkiller Linux 手札》

Netkiller Debian 手札 Netkiller CentOS 手札 Netkiller Multimedia 手札    

致讀者

Netkiller 系列電子書始於 2000 年,風風雨雨走過20年,將在 2020 年終結,之後不在更新。作出這種決定原因很多,例如現在的閲讀習慣已經轉向短視頻,我個人的時間,身體健康情況等等......

感謝讀者粉絲這20年的支持

雖然電子書不再更新,後面我還會活躍在知乎社區和微信公眾號

目錄

1. 自述
1.1. 寫給讀者
1.2. 作者簡介
1.3. 如何獲得文檔
1.4. 打賞(Donations)
1.5. 聯繫方式
1. Bash Shell
1.1. 快捷鍵
1.2. bash - GNU Bourne-Again SHell
1.2.1. -n 檢查腳本是否有語法錯誤
1.2.2. -x 顯示詳細運行過程
1.3. Introduction
1.3.1. chsh - change login shell
1.3.2. 切換身份
1.3.3. I/O 重定向
1.3.3.1. stdout
1.3.3.2. error 重定向
1.3.3.3. 使用塊記錄日誌
1.3.3.4. tee - read from standard input and write to standard output and files
1.3.3.4.1. 重定向到檔案
1.3.3.4.2. nettee - a network "tee" program
1.3.3.5. 創建檔案
1.3.3.6. 快速清空一個檔案的內容
1.3.4. pipes (FIFOs)
1.3.5. mktemp - create a temporary file or directory 臨時目錄與檔案
1.3.6. History 命令歷史記錄
1.3.6.1. .bash_history
1.3.6.1.1. 格式定義
1.3.6.1.2. 設置忽略命令
1.3.6.2. .mysql_history
1.3.7. hash - hash database access method
1.3.8. prompt
1.4. variable
1.4.1. 系統變數
1.4.1.1. 命令行參數傳遞
1.4.1.2. $n $# $0 $?
1.4.1.3. $? 程序運行返回值
1.4.1.4. shift 移位
1.4.2. 表達式
1.4.3. Internal Environment Variables
1.4.3.1. $RANDOM 隨機數
1.4.3.2. 與 history 有關的環境變數
1.4.4. set 設置變數
1.4.5. unset 變數銷毀
1.4.6. 設置變數預設值
1.4.7. export 設置全局變數
1.4.8. declare
1.4.9. Numerical 數值運算
1.4.10. Strings 字元串操作
1.4.10.1. ##/#
1.4.10.2. %%/%
1.4.10.3. 字元串截取
1.4.10.4. #
1.4.10.5. example
1.4.10.6. 計算字元串長度
1.4.10.7. 字元串查找替換
1.4.11. Array 數組
1.4.11.1. for 與 array
1.4.11.2. while 與 array
1.4.11.3. array 與 read
1.4.11.4. 拆分字元串並轉換為數組
1.4.11.5. 數組轉為字元串
1.4.12. read 賦值多個變數
1.4.13. eval
1.4.14. typeset
1.5. conditions if and case
1.5.1. if
1.5.2. case
1.6. Loops for, while and until
1.6.1. for
1.6.2. while
1.6.3. until
1.7. Functions
1.7.1. Local variables
1.8. User interfaces
1.8.1. input
1.9. subshell
1.10. Example
1.10.1. 有趣的Shell
1.10.2. backup
1.10.3. CPU 核心數
1.10.4. Password
1.10.5. processes
1.10.5.1. pid
1.10.5.2. kill
1.10.5.3. pgrep
1.10.6. Shell 技巧
1.10.6.1. 行轉列,再批評
1.10.6.2. for vs while
1.10.6.3. 遍歷字元串
1.10.7. to convert utf-8 from gb2312 code
1.10.8. 使用內存的百分比
1.10.9. 合併apache被cronlog分割的log檔案
1.10.10. Linux 交集 差集 並集
2. Z Shell
2.1. installing Z shell
2.2. Oh My ZSH!
2.3. Starting file
2.3.1. ~/.zshrc
2.4. Prompting
2.5. Aliases
2.6. History
2.7. FAQ
2.7.1. Home/End key
3. Berkeley UNIX C shell (csh)
3.1.
4. KornShell
4.1.
5. Shell command
5.1. Help Commands
5.1.1. man - an interface to the on-line reference manuals
5.1.1.1. manpath.config
5.1.1.2. 查看man手冊位置
5.1.1.3. 指定手冊位置
5.2. getconf - Query system configuration variables
5.3. test 命令
5.3.1. 判斷目錄
5.4. Directory and File System Related
5.4.1. dirname
5.4.2. filename
5.4.2.1. 排除副檔名
5.4.2.2. 取副檔名
5.4.3. test - check file types and compare values
5.4.4. file — determine file type
5.4.5. stat
5.4.6. mkdir - make directories
5.4.7. rename
5.4.8. touch
5.4.9. truncate
5.4.10. ls - list directory contents
5.4.10.1. full-time / time-style 定義日期時間格式
5.4.11. cp - copy files and directories
5.4.11.1. copy directories recursively
5.4.11.2. overwrite an existing file
5.4.11.3. -a, --archive same as -dR --preserve=all
5.4.12. rm - remove files or directories
5.4.12.1. -bash: /bin/rm: Argument list too long
5.4.12.2. zsh: sure you want to delete all the files in /tmp [yn]?
5.4.13. df - report file system disk space usage
5.4.14. du - estimate file space usage
5.4.15. tac - concatenate and print files in reverse
5.4.16. split - split a file into pieces
5.4.16.1. 按行分割檔案
5.4.16.2. 按尺寸分割檔案
5.4.17. find - search for files in a directory hierarchy
5.4.17.1. name
5.4.17.2. regex
5.4.17.3. user
5.4.17.4. perm
5.4.17.5. type
5.4.17.5.1. 分別設置檔案與目錄的權限
5.4.17.6. -delete
5.4.17.7. exec
5.4.17.8. 排除目錄
5.4.17.9. -mmin n File's data was last modified n minutes ago.
5.4.17.10. -ctime
5.4.17.11. -mtime / -mmin
5.4.17.12. --newer
5.4.17.13. -print / -printf
5.4.17.14. -size
5.4.17.15. -path
5.4.17.16. 目錄深度控制
5.4.17.17. -maxdepth
5.4.17.18. xargs
5.5. package / compress and decompress
5.5.1. tar — The GNU version of the tar archiving utility
5.5.1.1. tar examples
5.5.1.2. gunzip
5.5.1.3. b2zip
5.5.1.4. compress
5.5.1.5. .xz 檔案
5.5.1.6. -t, --list
5.5.1.7. tar: Removing leading `/’ from member names
5.5.1.8. -C, --directory=DIR
5.5.1.9. --exclude
5.5.1.10. -T
5.5.1.11. 日期過濾
5.5.1.12. 保留權限
5.5.1.13. -r, --append
5.5.1.14. 遠程傳輸
5.5.1.15. 分卷壓縮
5.5.2. cpio - copy files to and from archives
5.5.3. gzip
5.5.4. zip, zipcloak, zipnote, zipsplit - package and compress (archive) files
5.5.5. bzip2, bunzip2 - a block-sorting file compressor
5.5.6. RAR
5.5.7. 7-Zip
5.5.7.1. 壓縮
5.5.7.2. 瀏覽壓縮包
5.5.7.3. 解壓
5.5.7.4. Creates self extracting archive.
5.5.8. RAR
5.5.9. xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files
5.6. date and time
5.6.1. 日期格式
5.6.1.1. weekday name
5.6.2. -d --date=
5.6.2.1. 日期偏移量
5.6.2.1.1. day
5.6.2.1.2. month
5.6.2.1.3. year
5.6.2.2. 時間偏移
5.6.3. 時間戳
5.6.4. RFC 2822
5.6.5. UTC
5.7. Numeric
5.7.1. 數值運算
5.7.2. seq - print a sequence of numbers
5.7.3. bc - An arbitrary precision calculator language
5.8. Text Processing
5.8.1. iconv - Convert encoding of given files from one encoding to another
5.8.1.1. cconv - A iconv based simplified-traditional chinese conversion tool
5.8.1.2. uconv - convert data from one encoding to another
5.8.2. 字元串處理命令expr
5.8.3. cat - concatenate files and print on the standard output
5.8.3.1. -s, --squeeze-blank suppress repeated empty output lines
5.8.3.2. -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
5.8.4. nl - number lines of files
5.8.5. tr - translate or delete characters
5.8.5.1. 替換字元
5.8.5.2. 英文大小寫轉換
5.8.5.3. [CHAR*] 和 [CHAR*REPEAT]
5.8.5.4. -s, --squeeze-repeats replace each input sequence of a repeated character that is listed in SET1 with a single occurrence of that character
5.8.5.5. -d, --delete delete characters in SET1, do not translate
5.8.6. cut - remove sections from each line of files
5.8.7. printf - format and print data
5.8.8. Free `recode' converts files between various character sets and surfaces.
5.8.9. /dev/urandom 隨機字元串
5.8.10. col - filter reverse line feeds from input
5.8.11. apg - generates several random passwords
5.8.12. head/tail
5.8.13. 反轉字元串或檔案內容
5.8.14. TAB符號與空格處理
5.8.14.1. expand - convert tabs to spaces
5.8.14.2. unexpand - convert spaces to tabs
5.9. grep, egrep, fgrep, rgrep - print lines matching a pattern
5.9.1. 刪除空行
5.9.2. -v, --invert-match
5.9.3. Output control
5.9.3.1. -o, --only-matching show only the part of a line matching PATTERN
5.9.3.1.1. IP 地址
5.9.3.1.2. UUID
5.9.3.1.3. 行列轉換
5.9.3.2. 遞歸操作
5.9.3.3. -c, --count print only a count of matching lines per FILE
5.9.4. Context control
5.9.4.1. -A, --after-context=NUM print NUM lines of trailing context
5.9.4.2. -B, --before-context=NUM print NUM lines of leading context
5.9.4.3. -C, --context=NUM print NUM lines of output context
5.9.4.4. --color
5.9.5. Regexp selection and interpretation
5.9.5.1. .*
5.9.5.2. 2010:(13|14|15|16)
5.9.5.3. []與{}
5.9.5.4. -P, --perl-regexp Perl正則表達式
5.9.6. fgrep
5.9.7. egrep
5.10. sort - sort lines of text files
5.10.1. 對列排序
5.10.2. -s, --stable stabilize sort by disabling last-resort comparison
5.11. uniq
5.12. 表格操作/行列轉換
5.12.1. column - columnate lists
5.12.2. paste - merge lines of files
5.12.3. join
5.13. standard input/output
5.13.1. xargs - build and execute command lines from standard input
5.13.1.1. 格式化
5.13.1.2. standard input
5.13.1.3. -I 替換操作
5.13.1.4. -n, --max-args=MAX-ARGS use at most MAX-ARGS arguments per command line
5.13.1.5. -t, --verbose print commands before executing them
5.13.1.6. -d, --delimiter=CHARACTER items in input stream are separated by CHARACTER, not by whitespace; disables quote and backslash processing and logical EOF processing
5.13.1.7. -0, --null items are separated by a null, not whitespace; disables quote and backslash processing and logical EOF processing
5.13.1.8. -r, --no-run-if-empty if there are no arguments, then do not run COMMAND; if this option is not given, COMMAND will be
5.13.1.9. -p, --interactive prompt before running commands
5.14. flock - manage locks from shell scripts
5.15. 進制轉換 - 16進制 - 8進制 - 二進制
5.15.1. od - dump files in octal and other formats
5.15.1.1. 16進制
5.15.1.2. 使用 od 隨機生成密碼
5.15.2. hexdump, hd -- ASCII, decimal, hexadecimal, octal dump
5.15.3. xxd - make a hexdump or do the reverse.
5.15.3.1. 指定每行的列數
5.15.3.2. 跳過位元組
5.15.4. binutils
5.15.4.1. strings - print the strings of printable characters in files.
5.16. Logging
5.16.1. logger - a shell command interface to the syslog(3) system log module
5.17. Password
5.17.1. Shadow password suite configuration.
5.17.2. newusers - update and create new users in batch
5.17.3. chpasswd - update passwords in batch mode
5.17.4. sshpass - noninteractive ssh password provider
5.18. 信息摘要
5.18.1. cksum, sum -- display file checksums and block counts
5.18.2. md5sum - compute and check MD5 message digest
5.18.3.
5.19. envsubst - substitutes environment variables in shell format strings
7. Utility Programs
7.1. ed, red - text editor
7.2. vim
7.2.1. 查找與替換
7.2.2. 插入檔案
7.2.3. 批處理
7.2.3.1. vi 批處理
7.2.4. line()
7.2.5. set fileformat
7.3. awk
7.3.1. 處理列
7.3.2. printf
7.3.3. Pattern(字元匹配)
7.3.3.1. Pattern, Pattern
7.3.4. Built-in Variables (NR/NF)
7.3.4.1. NR
7.3.4.2. NF
7.3.4.3. 練習
7.3.4.3.1. 使用 ss 命令統計 TCP 狀態
7.3.4.3.2. TCP/IP Status
7.3.4.3.3. 用戶shell統計
7.3.4.3.4. access.log POST與GET統計
7.3.5. Built-in Functions
7.3.5.1. length
7.3.5.2. toupper() 轉為大寫字母
7.3.5.3. tolower() 轉為小寫字母
7.3.5.4. rand() 隨機數生成
7.3.6. 過濾相同的行
7.3.7. 數組演示
7.4. sed
7.4.1. 查找與替換
7.4.1.1. 正則
7.4.1.2. aaa="bbb" 提取bbb
7.4.1.3. 首字母大寫
7.4.2. insert 插入字元
7.4.3. 追加字元
7.4.4. 修改字元
7.4.5. 刪除字元
7.4.5.1. delete
7.4.6. 行操作
7.4.7. 編輯檔案
7.4.8. 正則表達式
7.4.9. 管道操作
7.4.10. 字母大小寫轉換
7.4.11. perl
7.5. CURL - transfer a URL
7.5.1. 基本用法
7.5.2. 提交表單數據
7.5.3. 上傳檔案
7.5.4. connect-timeout
7.5.5. max-time
7.5.6. compressed
7.5.7. vhosts
7.5.8. -w, --write-out <format> 輸出格式定義
7.5.9. -A/--user-agent <agent string>
7.5.10. referer
7.5.11. -v
7.5.12. -o, --output FILE Write output to <file> instead of stdout
7.5.13. -L, --location
7.5.14. -H/--header <line> Custom header to pass to server (H)
7.5.14.1. Last-Modified / If-Modified-Since
7.5.14.2. ETag / If-None-Match
7.5.14.3. Accept-Encoding:gzip,defalte
7.5.14.4. HOST
7.5.14.5. HTTP 認證
7.5.14.6. Accept
7.5.14.7. Content-Type
7.5.15. curl-config
7.5.16. 指定網絡介面或者地址
7.5.17. Cookie 處理
7.5.18. Restful 應用 JSON 數據處理
7.5.18.1. Curl Oauth2
7.5.18.2. Curl + Oauth2 + Jwt
7.5.19. HTTP2
7.5.20. FAQ
7.6. expect
7.6.1. 模擬登錄 telnet 獲取Cisco配置
7.6.2. 模擬登錄 ssh
7.6.3. SCP
7.7. expect-lite - quick and easy command line automation tool
7.8. sshpass - noninteractive ssh password provider
7.9. Klish - Kommand Line Interface Shell (the fork of clish project)
7.9.1. 安裝Klish
7.9.2. 為用戶指定clish作為預設Shell
7.9.3. FAQ
7.9.3.1. clish/shell/shell_expat.c:36:19: fatal error: expat.h: No such file or directory
7.10. Limited command Shell (lshell)
7.11. Wget - The non-interactive network downloader.
7.11.1. Logging and input file
7.11.1.1. -i, --input-file=FILE download URLs found in local or external FILE.
7.11.2. 下載相關參數
7.11.2.1. -O, --output-document=FILE write documents to FILE 保存到檔案
7.11.3. HTTP options (HTTP 選項)
7.11.3.1. --post-data=STRING use the POST method; send STRING as the data.
7.11.3.2. header HTTP頭定義
7.11.4. Recursive download
7.11.4.1. -r, --recursive specify recursive download.
7.11.4.2. -m, --mirror shortcut for -N -r -l inf --no-remove-listing.
7.11.5. --no-passive-ftp disable the "passive" transfer mode.
7.11.6. 下載一組連續的檔案名
7.12. TUI
7.12.1. screen - screen manager with VT100/ANSI terminal emulation
7.12.2. tmux — terminal multiplexer
7.12.3. byobu - wrapper script for seeding a user's byobu configuration and launching a text based window manager (either screen or tmux)
7.12.4. htop - interactive process viewer
7.12.5. elinks
7.12.6. chat
7.13. jq - Command-line JSON processor
7.14. parallel - build and execute shell command lines from standard input in parallel
7.15. multitail
8. Shell Terminal
8.1. terminal
8.1.1. resize - set TERMCAP and terminal settings to current xterm window size
8.1.2. tset, reset - terminal initialization
8.1.3. stty - change and print terminal line settings
8.2. tput
8.2.1. Change the prompt color using tput
8.3. dialog
8.3.1. --inputbox
8.4. whiptail - display dialog boxes from shell scripts
8.4.1. --msgbox
8.4.2. --infobox
8.4.3. --yesno
8.4.4. --inputbox
8.4.5. --passwordbox
8.4.6. --textbox
8.4.7. --checklist
8.4.8. --radiolist
8.4.9. --menu
8.4.10. --gauge
1. 附錄
1.1. 參考文獻

表格清單

1.1. 檔案目錄表達式
1.2. 字元串表達式
1.3. 組合表達式

範例清單

1.1. A "Power User" Prompt
1.2. A Prompt the Width of Your Term
1.3. The Elegant Useless Clock Prompt
1.4. Basic conditional example if .. then
1.5. Conditionals with variables
1.6. case
1.7. Functions with parameters sample
1.8. Using select to make simple menus
1.9. Using the command line
1.10. Reading user input with read
1.11. read
1.12. random password
5.1. backup(find + tar)
7.1. example for expect
7.2. example for expect
7.3. example 1
7.4. *.exp
7.5. parallel - build and execute shell command lines from standard input in parallel
8.1. whiptail - yesno
8.2. whiptail - inputbox
8.3. whiptail - passwordbox
8.4. whiptail - passwordbox
8.5. whiptail - example 1
8.6. whiptail - radiolist