https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.mdnode
詳見emacs 內置教程python
cat < in.txt
echo "123" > out.txt
cmd 2>error.txt
cmd 1>out.txt 2>err.txt
cmd >out_err.txt 2>&1
$ command > /dev/null 2>&1
密碼登陸 ssh -p port username@webserverip
密鑰登陸 ssh -i ~/.ssh/id_rsa_1 username@webserverip
利用ssh-keygen 生成密鑰對,公密: ../.ssh/id_rsa.pub 私密:../.ssh/id_rsa 將公密放到服務器linux
ssh 配置文件 etc/ssh/sshd_config 設置端口,設置是否容許密碼登陸、是否須要進行密鑰驗證等ios
Port 32200 RSAAuthentication yes PubkeyAuthentication yes
less、 head、tail、 tail -f、 ln 和 ln -s 、chown、 chmod、 du 、df 、fdisk 、mkfs、 lsblk ,inode
ln 硬鏈接
ln -s 軟鏈接git
ifconfig 查看網絡內容,啓動或者關掉網卡,修改網絡ip,修改mac地址功能github
使用 netstat -lntp
或ss -plat
檢查哪些進程在監聽端口(默認是檢查 TCP 端口; 添加參數 -u 則檢查 UDP 端口)
或者 lsof -iTCP -sTCP:LISTEN -P -n
web
netstst部分參數正則表達式
查看結果以下:shell
# netstst -lntp | grep 32200 tcp 0 0 0.0.0.0:32200 0.0.0.0:* LISTEN 492/sshd
字段 | 含義 |
---|---|
COMMAND | 進程名稱 |
PID | 進程標識符 |
USER | 進程全部者 |
FD | 文件描述符 |
TYPE | 文件類型 |
DEVICE | 指定磁盤名稱 |
SIZE | 文件大小 |
NODE | 索引節點(文件在磁盤的標識) |
NAME | 打開文件的確切名稱 |
lsof -i:8080 #查看8080端口占用 lsof abc.txt #顯示開啓文件abc.txt的進程 lsof -c abc #顯示abc進程如今打開的文件 lsof -c -p 1234 #列出進程號爲1234的進程所打開的文件 lsof -g gid #顯示歸屬gid的進程狀況 lsof +d /usr/local/ #顯示目錄下被進程開啓的文件 lsof +D /usr/local/ #同上,可是會搜索目錄下的目錄,時間較長 lsof -d 4 #顯示使用fd爲4的進程 lsof -i -U #顯示全部打開的端口和UNIX domain文件
# do something in current dir (cd /some/other/dir && other-command) # continue in original dir
mv foo.{txt,pdf} some-dir #同時移動兩個文件 cp somefile{,.bak} #會被擴展成 cp somefile somefile.bak# mkdir -p test-{a,b,c}/subtest-{1,2,3} #會被擴展成全部可能的組合,並建立一個目錄樹
python -m SimpleHTTPServer 7777 (使用端口 7777 和 Python 2) python -m http.server 7777 (使用端口 7777 和 Python 3)
在當前路徑下查找 find . -name '*something*'
在全部路徑下經過文件名查找文件,使用locate something
`緩存
- -b 忽略每行前面開始出的空格字符。 - -c 檢查文件是否已經按照順序排序。 - -d 排序時,處理英文字母、數字及空格字符外,忽略其餘的字符。 - -f 排序時,將小寫字母視爲大寫字母。 - -i 排序時,除了040至176之間的ASCII字符外,忽略其餘的字符。 - -m 將幾個排序好的文件進行合併。 - -M 將前面3個字母依照月份的縮寫進行排序。 - -n 依照數值的大小排序。 - -u 意味着是惟一的(unique),輸出的結果是去完重了的。 - -o<輸出文件> 將排序後的結果存入指定的文件。 - -r 以相反的順序來排序。 - -t<分隔字符> 指定排序時所用的欄位分隔字符。 - +<起始欄位>-<結束欄位> 以指定的欄位來排序,範圍由起始欄位到結束欄位的前一欄位。 - --help 顯示幫助。 - --version 顯示版本信息。
- -c或--count 在每列旁邊顯示該行重複出現的次數。 - -d或--repeated 僅顯示重複出現的行列。 - -f<欄位>或--skip-fields=<欄位> 忽略比較指定的欄位。 - -s<字符位置>或--skip-chars=<字符位置> 忽略比較指定的字符。 - -u或--unique 僅顯示出一次的行列。 - -w<字符位置>或--check-chars=<字符位置> 指定要比較的字符。 - --help 顯示幫助。 - --version 顯示版本信息。 - [輸入文件] 指定已排序好的文本文件。若是不指定此項,則從標準讀取數據; - [輸出文件] 指定輸出的文件。若是不指定此選項,則將內容顯示到標準輸出設備(顯示終端)
awk -F ':' {pattern + action}' {filenames}
其中 pattern 表示 AWK 在數據中查找的內容,而 action 是在找到匹配內容時所執行的一系列命令,-F 指定劃分的分隔符,默認是空格
變量 | 含義 |
---|---|
ARGC | 命令行參數個數 |
ARGV | 命令行參數排列 |
ENVIRON | 支持隊列中系統環境變量的使用 |
FILENAME | awk瀏覽的文件名 |
FNR | 瀏覽文件的記錄數 |
FS | 設置輸入域分隔符,等價於命令行 -F選項 |
NF | 瀏覽記錄的域的個數,列數 |
NR | 已讀的記錄數,行數 |
OFS | 輸出域分隔符 |
ORS | 輸出記錄分隔符 |
RS | 控制記錄分隔符 |
變量$0表示整條記錄,$1表示當前行的第一個域 $2表示當前行的第二個域 一次類推
cat /etc/passwd | awk -F ':' '{print $1}' #顯示分割後的第一列
sed [-hnV][-e<script>][-f<script文件>][文本文件]
參數說明:
-e 以選項中指定的script來處理輸入的文本文件。
-f 以選項中指定的script文件來處理輸入的文本文件。
-h或--help 顯示幫助。
-n或--quiet或--silent 僅顯示script處理後的結果。
-V或--version 顯示版本信息。
動做說明:
a :新增, a 的後面能夠接字串,而這些字串會在新的一行出現(目前的下一行)
c :取代, c 的後面能夠接字串,這些字串能夠取代 n1,n2 之間的行
d :刪除,由於是刪除啊,因此 d 後面一般不接任何咚咚
i :插入, i 的後面能夠接字串,而這些字串會在新的一行出現(目前的上一行)
p :打印,亦即將某個選擇的數據印出。一般 p 會與參數 sed -n 一塊兒運行
s :取代,能夠直接進行取代的工做哩!一般這個 s 的動做能夠搭配正規表示法
# 將文件、目錄和內容所有重命名 foo -> bar: repren --full --preserve-case --from foo --to bar . # 還原全部備份文件 whatever.bak -> whatever: repren --renames --from '(.*)\.bak' --to '\1' *.bak # 用 rename 實現上述功能(若可用): rename 's/\.bak$//' *.bak
例如: getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt
sort a b | uniq > c # c 是 a 並 b sort a b | uniq -d > c # c 是 a 交 b sort a b b | uniq -u > c # c 是 a - b
$ ls hosts out.txt| head -100 * ==> hosts <== 192.168.15.1 192.168.15.1 awdd my name is mike hello i am a teacher what a stupid gay,fuck! ==> out.txt <== out.txt hosts
find . -type f -ls
awk '{ x += $3 } END { print x }' myfile