set命令
顯示、設(shè)置或取消設(shè)置shell屬性和位置參數(shù)的值。
顯示shell變量的名稱和值:
set標記為導出而修改或創(chuàng)建的變量:
set -a立即通知工作終止:
set -b設(shè)置各種選項,如啟用“vi”樣式行編輯:
set -o vi
iptables
允許配置由Linux內(nèi)核防火墻提供的表、鏈和規(guī)則的程序。
查看所有表的鏈、規(guī)則和包/字節(jié)計數(shù)器:
sudo iptables -vnL設(shè)置鏈策略規(guī)則:
sudo iptables -P chain rule為IP的鏈策略添加規(guī)則:
sudo iptables -A chain -s ip -j rule在考慮協(xié)議和端口的IP鏈策略中附加規(guī)則:
sudo iptables -A chain -s ip -p protocol --dport port -j rule刪除鏈式法則:
sudo iptables -D chain rule_line_number將給定表的iptables配置保存到文件中:
sudo iptables-save -t tablename > path/to/iptables_file從文件中恢復iptables配置:
sudo iptables-restore < path/to/iptables_file
sysctl
訪問內(nèi)核狀態(tài)信息.
顯示所有可用的變量及其值:
sysctl -a顯示Apple模型標識符:
sysctl -n hw.model顯示CPU模型;
sysctl -n machdep.cpu.brand_string顯示可用的CPU特性(MMX、SSE、SSE2、SSE3、AES等):
sysctl -n machdep.cpu.feature設(shè)置一個可變的內(nèi)核狀態(tài)變量:
sysctl -w section.tunable=value
swapoff
禁用設(shè)備或文件的交換.
禁用給定的交換分區(qū):
swapoff /dev/sdb7禁用給定的交換文件:
swapoff path/to/file禁用所有交換區(qū)域:
swapoff -a通過設(shè)備或文件的標簽禁用交換:
swapoff -L swap1
unset
刪除shell變量或函數(shù)
-刪除變量foo和bar:
unset foo bar刪除函數(shù)my_func:
unset -f my_func
where
類似命令 which whereis whatis
報告一個命令的所有已知實例。
它可以是PATH環(huán)境變量中的可執(zhí)行文件、別名或shell內(nèi)建文件。
- 查找命令的所有實例:
where command
nvm
node . js版本管理。
在NodeJS版本之間切換:系統(tǒng),節(jié)點,0.10,0.12,4.2等等.
安裝指定版本的NodeJS:
nvm install node_version在當前shell中使用指定版本的NodeJS:
nvm use node_version設(shè)置默認的NodeJS版本:
nvm alias default node_version列出所有可用的NodeJS版本并打印默認版本:
nvm list運行特定版本的NodeJS REPL:
nvm run node_version --version在特定版本的NodeJS中運行app:
nvm exec node_version node app.js
nrm
NPM注冊中心管理。
有助于在不同的npm注冊中心之間輕松切換。
- 列出所有注冊:
nrm ls
npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
* taobao ----- https://registry.npm.taobao.org/ (*號表示當前npm使用的地址)
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/
更改為特定的注冊表:
nrm use registry
nrm use taobao 和 nrm use npm 來互相切換顯示所有注冊表的響應時間:
nrm test添加自定義注冊中心:
nrm add registry url刪除一個注冊表:
nrm del registry
webpack
將web項目的js文件和其他資產(chǎn)打包到一個輸出文件中。
從入口點文件創(chuàng)建單個輸出文件:
webpack app.js bundle.js從js文件中加載css文件(這將css加載器用于.css文件):
webpack app.js bundle.js --module-bind 'css=css'傳遞一個配置文件。輸入腳本和輸出文件名),顯示編譯進度:
webpack --config webpack.config.js --progress對項目文件的更改自動重新編譯:
webpack --watch app.js bundle.js
http
HTTP客戶端,一個用戶友好的cUrll替代品。
將URL下載到文件:
http -d example.org發(fā)送表單編碼的數(shù)據(jù):
http -f example.org name='bob' profile_picture@'bob.png'發(fā)送JSON對象:
http example.org name='bob'指定HTTP方法:
http HEAD example.org包含額外的標題:
http example.org X-MyHeader:123為服務(wù)器身份驗證傳遞用戶名和密碼:
http -a username:password example.org通過stdin指定原始請求體:
cat data.txt | http PUT example.org
curl
從服務(wù)器或向服務(wù)器傳輸數(shù)據(jù)。
支持大多數(shù)協(xié)議,包括HTTP、FTP和POP3.
將URL的內(nèi)容下載到文件中:
curl http://example.com -o filename下載一個文件,將輸出保存在URL指示的文件名下:
curl -O http://example.com/filename下載一個文件,遵循定位重定向,并自動繼續(xù)(恢復)以前的文件傳輸:
curl -O -L -C - http://example.com/filename發(fā)送表單編碼的數(shù)據(jù)(類型為“application/x-www-form-urlencoded”的POST請求):
curl -d 'name=bob' http://example.com/form使用自定義HTTP方法發(fā)送帶有額外標頭的請求:
curl -H 'X-My-Header: 123' -X PUT http://example.com以JSON格式發(fā)送數(shù)據(jù),指定適當?shù)膬?nèi)容類型頭:
curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234為服務(wù)器身份驗證傳遞用戶名和密碼:
curl -u myusername:mypassword http://example.com通過客戶端證書和資源密鑰,跳過證書驗證:
curl --cert client.pem --key key.pem --insecure https://example.com
wget
從網(wǎng)上下載文件。
支持HTTP、HTTPS和FTP.
將URL的內(nèi)容下載到一個文件中(在本例中名為“foo”):
wget https://example.com/foo將URL的內(nèi)容下載到文件中(在本例中名為“bar”):
wget -O bar https://example.com/foo下載單個web頁面及其所有資源(腳本、樣式表、圖像等):
wget --page-requisites --convert-links https://example.com/somepage.html下載一個完整的網(wǎng)站,每個請求之間間隔3秒:
wget --mirror --page-requisites --convert-links --wait=3 https://example.com下載目錄及其子目錄中列出的所有文件(不下載嵌入的頁面元素):
wget --mirror --no-parent https://example.com/somepath/通過認證的FTP下載URL的內(nèi)容:
wget --ftp-user=username --ftp-password=password ftp://example.com繼續(xù)未完成的下載:
wget -c https://example.com啟用靜音模式來抑制輸出:
wget -q https://example.com
babel npm 全局安裝 babel-cli
一個將代碼從JavaScript ES6/ES7語法轉(zhuǎn)換為ES5語法的編譯器
將指定的輸入文件和輸出轉(zhuǎn)換為標準輸出:
babel path/to/file將指定的輸入文件和輸出轉(zhuǎn)換為特定的文件:
babel path/to/input_file --out-file path/to/output_file每次更改輸入文件時,都要轉(zhuǎn)換它:
babel path/to/input_file --watch轉(zhuǎn)換整個文件目錄:
babel path/to/input_directory忽略目錄中指定的逗號分隔的文件:
babel path/to/input_directory --ignore ignored_files轉(zhuǎn)換和輸出為縮小的
JavaScript:
babel path/to/input_file --minified為輸出格式選擇一組預置:
babel path/to/input_file --presets presets輸出所有可用選項:
babel --help
diff命令
比較文件和目錄.
比較文件:
diff file1 file2比較文件,忽略空白:
diff -w file1 file2比較文件,并排顯示差異:
diff -y file1 file2比較文件,以統(tǒng)一格式顯示差異(如“git diff”所使用的格式):
diff -u file1 file2遞歸地比較目錄:
diff -r directory1 directory2比較目錄,只顯示不同文件的名稱:
diff -rq directory1 directory2
patch 命令
用差異文件修補一個或多個文件。
注意,diff文件包含目標文件名和更改列表。
應用一個補丁:
patch < patch_file.diff對當前目錄應用補丁:
patch -p1 < patch_file.diff應用補丁的反面:
patch -R < patch_file.diff對指定文件應用補丁:
patch -p1 file patch_file.diff
fdupes
在給定的目錄集中查找重復的文件。
搜索單個目錄:
fdupes directory搜索多個目錄:
fdupes directory1 directory2遞歸搜索所有目錄:
fdupes -r directory搜索多個目錄,遞歸地搜索一個:
fdupes directory1 -R directory2
xargs命令
使用來自另一個命令、文件等的管道參數(shù)執(zhí)行命令。
輸入被視為一個單獨的文本塊,并被分割成空格、制表符、換行符和文件結(jié)束符上的單獨參數(shù)。
主要使用模式:
arguments_source | xargs commandDelete all files with a
.backupextension.-print0on find uses a null character to split the files, and-0changes the delimiter to the null character (useful if there's whitespace in filenames):
find . -name '*.backup' -print0 | xargs -0 rm -v對每個輸入行執(zhí)行一次命令,用輸入行替換任何占位符(這里標記為“_”):
arguments_source | xargs -I _ command _ optional_extra_arguments假如你有一個文件包含了很多你希望下載的 URL,你能夠使用 xargs下載所有鏈接:
cat url-list.txt | xargs wget -c
NPM注冊管理人
有助于在不同的npm注冊中心之間輕松切換。
列出所有注冊:
nrm ls更改為特定的注冊表:
nrm use registry顯示所有注冊表的響應時間:
nrm test添加自定義注冊中心:
nrm add registry url刪除注冊表:
nrm del registry
npx
從“npm”包執(zhí)行二進制文件。
從給定的npm模塊執(zhí)行二進制代碼:
npx module_name如果一個包有多個二進制文件,請指定包名和二進制文件:
npx -p package_name module_name查看幫助內(nèi)容:
npx --help
locate命令
快速找到文件名。
在數(shù)據(jù)庫中查找模式。注:數(shù)據(jù)庫定期重新計算(通常每周或每天):
locate pattern根據(jù)文件名查找文件(不包含通配符的模式被解釋為“pattern”):
locate */filename再計算數(shù)據(jù)庫。如果你想找到最近添加的文件,你需要這樣做:
sudo /usr/libexec/locate.updatedb
ripgrep 使用命令rg
一個快速的命令行搜索工具.
遞歸地在當前目錄中搜索regex模式:
rg pattern搜索包括所有。gitignored和隱藏文件的模式:
rg -uu pattern僅在特定文件類型(如html、css等)中搜索模式:
rg -t filetype pattern僅在目錄的子集中搜索模式:
rg pattern set_of_subdirs在匹配glob的文件中搜索模式(例如,' README.* '):
rg pattern -g glob只列出匹配的文件——當管道連接到其他命令時非常有用:
rg --files-with-matches pattern
fd 比find命令更快
一個簡單,快速和用戶友好的選擇找到。
查找當前目錄下與模式匹配的文件:
fd pattern查找以foo開頭的文件:
fd '^foo'查找具有特定擴展名的文件:
fd --extension .ext pattern查找特定目錄下的文件:
fd pattern path/to/dir包括忽略和隱藏的文件在搜索:
fd --hidden --no-ignore pattern
paste命令
合并文件行.
將所有的行連接成一行,使用TAB作為分隔符:
paste -s file使用指定的分隔符將所有行連接成一行:
paste -s -d delimiter file并排合并兩個文件,每個文件在其列中,使用TAB作為分隔符:
paste file1 file2使用指定的分隔符并排合并列中的兩個文件:
paste -d delimiter file1 file2合并兩個文件,交替添加行:
paste -d '\n' file1 file2
tee
從標準輸入讀取,然后寫入標準輸出和文件(或命令)。
tee指令會從標準輸入設(shè)備讀取數(shù)據(jù),將其內(nèi)容輸出到標準輸出設(shè)備,同時保存成文件。
將標準輸入復制到每個文件,也復制到標準輸出:
echo "example" | tee FILE附加到給定的文件,不要覆蓋:
echo "example" | tee -a FILE將標準輸入打印到終端,并將其輸入到另一個程序中進行進一步處理:
echo "example" | tee /dev/tty | xargs printf "[%s]"創(chuàng)建一個名為“example”的文件夾,計算“example”中的字符數(shù),并將“example”寫入終端:
echo "example" | tee >(xargs mkdir) >(wc -c)
tree命令
以樹的形式顯示當前目錄的內(nèi)容。
顯示文件和目錄到深度的“num”級別(其中1表示當前目錄):
tree -L num只顯示目錄:
tree -d也顯示隱藏文件:
tree -a打印沒有縮進的樹,顯示完整的路徑(使用' -N '來避免轉(zhuǎn)義空格和特殊字符):
tree -i -f以人類可讀的格式打印它旁邊每個節(jié)點的大小,并在文件夾中顯示它們的累積大小(如' du '命令所示):
tree -s -h --du使用通配符(glob)模式在樹層次結(jié)構(gòu)中查找文件,并刪除不包含匹配文件的目錄:
tree -P '*.txt' --prune在樹層次結(jié)構(gòu)中查找目錄,刪除非所需目錄的祖先目錄:
tree -P directory_name --matchdirs --prune
ss命令
用于研究套接字的實用程序。
顯示所有TCP/UDP/RAW/UNIX套接字:
ss -a -t|-u|-w|-x過濾TCP套接字的狀態(tài),只/排除:
ss state/exclude bucket/big/connected/synchronized/...顯示所有連接到本地HTTPS端口的TCP套接字(443):
ss -t src :443顯示所有TCP套接字以及連接到遠程ssh端口的進程:
ss -pt dst :ssh顯示所有UDP套接字連接在特定的源和目標端口:
ss -u 'sport == :source_port and dport == :destination_port'顯示在子網(wǎng)192.168.0.0/16上本地連接的所有TCP IPv4套接字:
ss -4t src 192.168/16
swapon
啟用設(shè)備或文件交換.
獲得交換信息:
swapon -s啟用給定的交換分區(qū):
swapon /dev/sdb7啟用給定的交換文件:
swapon path/to/file啟用所有交換區(qū)域:
swapon -a通過設(shè)備或文件的標簽啟用交換:
swapon -L swap1
mkswap命令 用于在一個文件或者設(shè)備上建立交換分區(qū)。在建立完之后要使用sawpon命令開始使用這個交換區(qū)。最后一個選擇性參數(shù)指定了交換區(qū)的大小,但是這個參數(shù)是為了向后兼容設(shè)置的,沒有使用的必要,一般都將整個文件或者設(shè)備作為交換區(qū)。
在設(shè)備或文件中設(shè)置Linux交換區(qū)域.
將給定的分區(qū)設(shè)置為交換區(qū):
sudo mkswap /dev/sdb7使用給定的文件作為交換區(qū)域:
sudo mkswap path/to/file在創(chuàng)建交換區(qū)域之前,檢查分區(qū)是否有壞的塊:
sudo mkswap -c /dev/sdb7為文件指定一個標簽(允許swapon使用標簽):
`sudo mkswap -L swap1 path/to/file
dd 命令
if=文件名:輸入文件名
of=文件名:輸出文件名
bs=字節(jié)大小
count=個數(shù)
轉(zhuǎn)換和復制文件.
從一個isohybrid文件(比如archlinux-xxx.iso)中創(chuàng)建一個可引導的usb驅(qū)動器,并顯示進程:
dd if=file.iso of=/dev/usb_drive status=progress克隆一個驅(qū)動器到另一個驅(qū)動器與4MB塊,忽略錯誤,并顯示進展:
dd if=/dev/source_drive of=/dev/dest_drive bs=4M conv=noerror status=progress使用內(nèi)核隨機驅(qū)動程序生成一個100個隨機字節(jié)的文件:
dd if=/dev/urandom of=random_file bs=100 count=1測試磁盤的寫性能::
dd if=/dev/zero of=/swapfile bs=1M count=1024檢查正在進行的dd操作的進度(從另一個shell運行此命令):
kill -USR1 $(pgrep ^dd)
groupdel
從系統(tǒng)中刪除現(xiàn)有的用戶組.
- 刪除現(xiàn)有組:
groupdel group_name
userdel
刪除一個用戶。
- 刪除用戶及其主目錄:
userdel -r name
lsmod
顯示linux內(nèi)核模塊的狀態(tài)。
請參見modprobe,它加載內(nèi)核模塊。
- 列出所有當前加載的內(nèi)核模塊:
lsmod
seq 命令
輸出一串數(shù)字到標準輸出。
從1到10的序列:
seq 10每3個數(shù)字從5到20:
seq 5 3 20用空格而不是換行分隔輸出:
seq -s " " 5 3 20
file命令
確定文件類型.
***如果是純字符文本則是 ASCII Text 含有中文的話則就是 unicode Text
描述指定文件的類型。適用于沒有文件擴展名的文件:
file filename查看壓縮文件的內(nèi)部,并確定其中的文件類型:
file -z foo.zip
-允許文件處理特殊文件或設(shè)備文件:
file -s filename
不要在第一個文件類型匹配時停止;一直讀到文件末尾:
file -k filename確定文件的mime編碼類型:
file -I filename
whereis命令
- 定位命令的二進制、源代碼和手動頁文件。
whatis命令
顯示手冊頁中的一行描述。.
顯示來自手冊頁的描述:
whatis command不要在一行的末尾刪去描述:
whatis --long command顯示與一個glob匹配的所有命令的描述:
whatis --wildcard net*使用正則表達式搜索手冊頁描述:
whatis --regex 'wish[0-9]\.[0-9]'
查看文件的權(quán)限
方式1: stat file
方式2:la -alh (a 顯示隱藏文件 l每行列出一個文件 h使用人類可讀單元(KB、MB、GB)顯示大小的長格式列表)
顯示內(nèi)容
drwx------ 2 root root 4.0K 4月 8 13:28 .ssh
r [r]ead 讀 w ([w]rite) 寫權(quán)限 x (e[x]ecute)可執(zhí)行權(quán)限
用戶管理
使用who命令,可以查看目前已登陸的用戶。要查看系統(tǒng)上的用戶,以 root 執(zhí)行 passwd -Sa 輸出的數(shù)據(jù)格式可以參考 passwd(1)。
使用useradd命令添加用戶:
useradd -m -g "初始組" -G "附加組" -s "登陸shell" "用戶"-
-m:創(chuàng)建用戶主目錄/home/[用戶名];在自己的主目錄內(nèi),即使不是root用戶也可以讀寫文件、安裝程序等等。(當?shù)卿?當前的用戶的時候。目錄名就是用戶名 只有在自己的主目錄才有操作權(quán)限) -
-g:設(shè)置用戶初始組的名稱或數(shù)字ID;該組必須是存在的;如果沒有設(shè)置該選項,useradd會根據(jù)/etc/login.defs文件中的USERGROUPS_ENAB環(huán)境變量進行設(shè)置。默認(USERGROUPS_ENAB yes) 會用和用戶名相同的名字創(chuàng)建群組,GID等于UID. -
-G:用戶要加入的附加組列表;使用逗號分隔多個組,不要添加空格;如果不設(shè)置,用戶僅僅加入初始組。 -
-s:用戶默認登錄shell的路徑;啟動過程結(jié)束后,默認啟動的登錄shell在此處設(shè)定;請確保使用的shell已經(jīng)安裝,默認是 Bash。
**警告: **為了登錄,登錄 shell 必須位于
/etc/shells中, 否則 PAM 的pam_shell模塊會阻止登錄請求。不要使用/usr/bin/bash替代/bin/bash, 除非這個路徑已經(jīng)在/etc/shells中正確配置.
- 有時候需要禁止某些用戶執(zhí)行登錄動作,例如用來執(zhí)行系統(tǒng)服務(wù)的用戶。將shell設(shè)置成
/usr/bin/nologin就可以禁止用戶登錄。(nologin(8)).
用戶信息存儲
本地用戶信息儲存在`/etc/passwd`文件中。要查看系統(tǒng)上所有用戶賬戶:
cat /etc/passwd
一行代表一個用戶,格式如下,每行分七個部分,用英文冒號“:”分開:
account:password:UID:GID:GECOS:directory(用戶主目錄 保存在環(huán)境變量$HOME):shell(環(huán)境變量$SHELL中)
此處:
* `account`:用戶名,不能為空,而且要符合標準的*NIX命名規(guī)則。
* `password`:加密的密碼,可以使用一個小寫的"x"(不帶括號)表示密碼保存在`/etc/shadow`文件里。
* `UID``GID`:每個用戶和組有一個對應的UID和GID(用戶ID和組ID)。Arch里面,第一個非root用戶的默認UID是1000,后續(xù)創(chuàng)建的用戶UID也應大于1000,特定用戶的GID應該屬于指定的首要組,組的ID數(shù)值列在`/etc/group`文件里。
* `GECOS`:可選的注釋字段,通常記錄用戶全名
* `directory`:用于登錄命令設(shè)置`$HOME`環(huán)境變量。某些服務(wù)的用戶主目錄設(shè)置為"/"是安全的,但不建議普通用戶設(shè)置為此目錄。
* `shell`:是用戶默認登錄的shell,通常是[Bash](https://wiki.archlinux.org/index.php/Bash_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "Bash (簡體中文)"),還可選擇其他的命令解釋器,默認是"/bin/bash"(不帶括號),如果你用的是別的shell,在這里設(shè)置其路徑,此部分是可選的,可留空。
示例:
jack:x:1001:100:Jack Smith,some comment here,,:/home/jack:/bin/bash
示例分解說明:用戶登錄名為jack,密碼保存在`/etc/shadow`,UID為1001,首要組的ID是100 (users組),全名Jack Smith并加了一些注釋,主目錄是`/home/jack`,使用Bash作為默認shell。
ssh-keygen
生成ssh密鑰用戶以進行身份驗證、無密碼登錄和其他操作.
Generate a key interactively:
ssh-keygenSpecify file in which to save the key:
ssh-keygen -f ~/.ssh/filename生成一個ed25519密鑰,包含100個密鑰派生函數(shù)輪:
ssh-keygen -t ed25519 -a 100生成一個RSA 4096位密鑰,并將您的電子郵件作為注釋:
ssh-keygen -t rsa -b 4096 -C "email"從主機檢索密鑰指紋(用于在首次通過SSH連接到主機時確認主機的真實性):
ssh-keygen -l -F remote_host檢索MD5十六進制密鑰的指紋:
ssh-keygen -l -E md5 -f ~/.ssh/filename更改密鑰的密碼:
ssh-keygen -p -f ~/.ssh/filename
service
通過運行init腳本管理服務(wù)。
應該省略完整的腳本路徑(/etc/init.d 假設(shè))。
啟動/停止/重啟/重新加載服務(wù)(啟動/停止應該總是可用的):
service init_script start|stop|restart|reload完全重新啟動(使用start和stop運行腳本兩次):
service init_script --full-restart顯示服務(wù)的當前狀態(tài):
service init_script status列出所有服務(wù)的狀態(tài):
service --status-all
useradd
創(chuàng)建一個新用戶.
創(chuàng)建新用戶:
useradd name創(chuàng)建具有默認主目錄的新用戶:
useradd --create-home name使用指定的shell創(chuàng)建新用戶:
useradd --shell /path/to/shell name創(chuàng)建屬于其他組的新用戶(注意沒有空格):
useradd --groups group1,group2 name創(chuàng)建沒有主目錄的新系統(tǒng)用戶:
useradd --no-create-home --system name
groupmod
修改系統(tǒng)中現(xiàn)有的用戶組.
- 更改組名稱:
groupmod -n new_group_name old_group_name
-更改組id:
groupmod -g new_group_id old_group_name
gpasswd
管理“/etc/group”和“/etc/gshadow”。
定義組管理員:
sudo gpasswd -A user1,user2 group設(shè)置組成員列表:
sudo gpasswd -M user1,user2 group為指定的組創(chuàng)建密碼:
gpasswd group將用戶添加到指定的組:
gpasswd -a user group從已命名組中刪除用戶:
gpasswd -d user group
groupadd
向系統(tǒng)添加用戶組.
創(chuàng)建一個新的Linux組:
groupadd group_name使用特定的groupid創(chuàng)建新組:
groupadd group_name -g group_id
id
顯示當前用戶和組標識.
顯示當前用戶id (UID)、組id (GID)和它們所屬的組:
id將當前用戶標識顯示為數(shù)字:
id -u將當前組標識顯示為數(shù)字:
id -g顯示任意用戶的id (UID)、組id (GID)和它們所屬的組:
id username
usermod user model
修改用戶帳戶。
更改用戶名:
usermod -l newname oldname將用戶加入 群組,用逗號分隔:
usermod -a -G group1,group2 user為用戶創(chuàng)建一個新的主目錄并將其文件移動到其中,更改用戶主目錄:
查看 當前用戶主目錄 在環(huán)境變量 $HOME 中
usermod -m -d /path/to/home(新的目錄) user
通過find命令查找屬于某個用戶或某個組的文件
find / -group "用戶組"
find / -user "用戶"
who
顯示登錄的用戶和相關(guān)數(shù)據(jù)(進程、啟動時間).
簡潔的方式顯示登錄用戶
whoami顯示當前登錄的所有會話的用戶名、行和時間:
who僅顯示當前終端會話的信息:
who am i顯示所有可用信息:
who -a使用表頭顯示所有可用信息:
who -a -H
stat
顯示文件和文件系統(tǒng)信息.
顯示文件屬性,如大小、權(quán)限、創(chuàng)建和訪問日期等:
stat file和上面一樣,但是更簡潔:
stat -t file顯示文件信息:
stat -f file只顯示八進制文件權(quán)限:
stat -c "%a %n" file顯示文件的所有者和組:
stat -c "%U %G" file以字節(jié)為單位顯示文件的大小:
stat -c "%s %n" file
link
創(chuàng)建到現(xiàn)有文件的硬鏈接。 (-s 是軟鏈接)
有關(guān)更多選項,請參見ln命令.
- 創(chuàng)建從新文件到現(xiàn)有文件的硬鏈接:
link path/to/existing_file path/to/new_file
unlink
從文件系統(tǒng)中刪除到文件的鏈接。
如果鏈接是文件的最后一個鏈接,則文件內(nèi)容將丟失
- 如果指定的文件是最后一個鏈接,則刪除它:
unlink path/to/file
netstat
顯示與網(wǎng)絡(luò)相關(guān)的信息,如打開的連接、打開的套接字端口等。
輸出跟nginx相關(guān)的端口信息
netstat -tnlup | grep nginx列出所有端口:
netstat -a列出所有監(jiān)聽端口:
netstat -l列出監(jiān)聽TCP端口:
netstat -t顯示特定端口的PID和程序名:
netstat -p {PROTOCOL}持續(xù)輸出:
netstat -c打印路由表:
netstat -nr
reboot
重啟系統(tǒng).
立即重新啟動:
reboot立即重啟,而不是優(yōu)雅地關(guān)閉:
reboot -f
chsh
更改用戶的登錄shell。
- 獲取當前使用的shell
echo $SEHLLorexport | grep SHELL - 改變shell:
chsh -s 新的shell的路徑 username例如zsh 需要 which zsh/bin/zsh
cut
從STDIN或文件中刪除字段.
剪掉每一行的前16個字符:
cut -c 1-16刪除給定文件每行的前16個字符:
cut -c 1-16 file把從第三個字符到每行末尾的所有內(nèi)容都剪掉:
cut -c 3-使用冒號作為字段分隔符(默認分隔符是tab),刪除每行中的第5個字段:
cut -d':' -f5使用分號作為分隔符,刪除每一行的第2和第10個字段:
cut -d';' -f2,10使用空格作為分隔符,將字段3切到每一行的末尾:
cut -d' ' -f3-
sort
對文本文件行進行排序。
按升序排列文件:
sort filename按降序排列文件:
sort -r filename以不區(qū)分大小寫的方式對文件排序:
sort --ignore-case filename使用數(shù)字而不是字母順序?qū)ξ募判?
sort -n filename按第三個字段對passwd文件進行數(shù)字排序:
sort -t: -k 3n /etc/passwd對只保留唯一行的文件進行排序: (有重復的行只保留一個)
sort -u filename對人類可讀的數(shù)字排序(在本例中是“l(fā)s -lh”的第5個字段):
(使用標準輸出取代文件 管道符連接)
ls -lh | sort -h -k 5
uniq
從給定的輸入或文件中輸出唯一的行。
因為它不會檢測重復的行,除非它們是相鄰的,所以我們需要首先對它們進行排序。
每一行顯示一次:
sort file | uniq只顯示唯一的行:
sort file | uniq -u只顯示重復的行:
sort file | uniq -d顯示每一行的出現(xiàn)次數(shù):
sort file | uniq -c顯示每行出現(xiàn)的次數(shù),按最頻繁的次數(shù)排序:
sort file | uniq -c | sort -nr
w命令
顯示誰已登錄以及他們正在做什么。
打印用戶登錄、TTY、遠程主機、登錄時間、空閑時間、當前進程。
顯示已登錄的用戶信息:
w顯示登錄的用戶信息,沒有標題:
w -h顯示登錄用戶的信息,按空閑時間排序:
w -i
watch 命令
定期執(zhí)行程序,顯示全屏輸出。.
反復運行命令并顯示結(jié)果:
watch command每60秒重新運行一個命令:
watch -n 60 command監(jiān)視目錄的內(nèi)容,在它們出現(xiàn)時突出顯示差異:
watch -d ls -l
make命令
用于Makefile中描述的目標的任務(wù)運行器。
主要用于控制從源代碼編譯可執(zhí)行文件。
調(diào)用Makefile中指定的第一個目標(通常名為“all”):
make調(diào)用特定目標:
make target調(diào)用一個特定的目標,同時執(zhí)行4個作業(yè):
make -j4 target使用特定的Makefile:
make --file file從另一個目錄執(zhí)行make:
make --directory directory強制生成目標,即使源文件沒有更改:
make --always-make target
ifconfig命令
網(wǎng)絡(luò)接口配置器.
查看以太網(wǎng)適配器的網(wǎng)絡(luò)設(shè)置:
ifconfig eth0顯示所有接口的詳細信息,包括禁用的接口:
ifconfig -a禁用eth0接口:
ifconfig eth0 down使eth0接口:
ifconfig eth0 up將IP地址分配給eth0接口:
ifconfig eth0 ip_address
chkconfig命令
管理CentOS 6上的服務(wù)運行級別。
列出帶有運行級別的服務(wù):
chkconfig --list顯示服務(wù)的運行級別:
chkconfig --list ntpd啟動時啟用服務(wù):
chkconfig sshd on在啟動時為運行級別2、3、4和5啟用服務(wù):
chkconfig --level 2345 sshd on在啟動時禁用服務(wù):
chkconfig ntpd off在啟動時禁用運行級別3的服務(wù):
chkconfig --level 3 ntpd off
systemctl命令
Linux systemctl是一個系統(tǒng)管理守護進程、工具和庫的集合,用于取代System V、service和chkconfig命令)
注意,一般先殺死nginx進程再去開啟 systemctl 管理 nginx
控制系統(tǒng)和服務(wù)管理。
列出失敗的服務(wù):
systemctl --failed啟動/停止/啟動/重新加載一個服務(wù): (這里是立刻啟動服務(wù))
systemctl start/stop/restart/reload unit顯示一個單元的狀態(tài):
systemctl status unitegsystemctl status nginx|mysqld開機啟動時(啟用)和(禁用)要啟動的模塊:
systemctl enable/disable unit屏蔽/解壓一個單元,防止它在啟動時啟動:
systemctl mask/unmask unit重新加載systemd,掃描新的或更改的模塊:
systemctl daemon-reload
adduser 命令
添加用戶命令.
創(chuàng)建一個具有默認主目錄的新用戶,并提示用戶設(shè)置密碼: (會創(chuàng)建一個主目錄)
adduser username創(chuàng)建沒有主目錄的新用戶:
adduser --no-create-home username使用指定路徑上的主目錄創(chuàng)建一個新用戶:
adduser --home path/to/home username創(chuàng)建一個新用戶,并將指定的shell設(shè)置為登錄shell:
adduser --shell path/to/shell username創(chuàng)建屬于指定組的新用戶:
adduser --ingroup group username
users 命令
顯示已登錄用戶的列表.
顯示已登錄用戶的列表:
users顯示根據(jù)特定文件登錄的用戶列表:
users /var/log/wmtp
chown 命令
更改文件和文件夾的用戶和組所有權(quán).
更改文件/文件夾的所有者用戶:
chown user path/to/file更改文件/文件夾的所有者、用戶和組:
chown user:group path/to/file遞歸地更改文件夾的所有者及其內(nèi)容:
chown -R user path/to/folder更改符號鏈接的所有者:
chown -h user path/to/symlink更改文件/文件夾的所有者以匹配引用文件:
chown --reference=path/to/reference_file path/to/file
rename命令
重命名多個文件.
直接重新命名
rename originName newName originName使用Perl公共正則表達式重命名文件(在找到的地方用bar替換foo):
rename 's/foo/bar/' \*顯示哪些重命名將在不執(zhí)行它們的情況下發(fā)生:
rename -n 's/foo/bar/' \*強制重命名,即使該操作將覆蓋現(xiàn)有文件:
rename -f 's/foo/bar/' \*將文件名轉(zhuǎn)換為小寫(在不區(qū)分大小寫的文件系統(tǒng)中使用' -f ',以防止"already exists"錯誤):
rename 'y/A-Z/a-z/' \*用下劃線替換空格:
rename 's/\s+/_/g' \*
main命令
格式化和顯示手冊頁。
顯示命令的手冊頁:
man command顯示來自第7節(jié)的命令的手冊頁:
man command.7搜索手冊頁的顯示路徑:
man --path顯示手冊頁的位置,而不是手冊頁本身:
man -w command對包含搜索字符串的手冊頁進行關(guān)鍵字搜索:
man -k keyword
dirname命令
計算給定文件或目錄路徑的父目錄.
計算給定路徑的父目錄:
dirname path/to/file_or_directory計算多個路徑的父目錄:
dirname path/to/file_a path/to/directory_b用NUL字符而不是換行符分隔輸出(在與' xargs '結(jié)合時非常有用):
dirname --zero path/to/directory_a path/to/file_b
basename
返回路徑名的非目錄部分.
只顯示路徑中的文件名:
basename path/to/file只顯示路徑中的文件名,并刪除后綴:
basename path/to/file suffix
test 命令
評估條件。
如果為真,返回0退出狀態(tài),否則返回1。
測試給定的變量是否等于給定的字符串:
test $MY_VAR == '/bin/zsh'測試給定變量是否為空:
test -z $GIT_BRANCH測試文件是否存在:
test -e filename測試目錄是否不存在:
test ! -d path/to/directoryif - else語句:
test condition && echo "true" || echo "false"
nginx命令
Nginx web服務(wù)器.
使用默認配置文件啟動服務(wù)器:
nginxpath:/etc/nginx/nginx.conf使用自定義配置文件啟動服務(wù)器:
nginx -c config_file顯示版本并配置選項,然后退出:
nginx -V使用配置文件中所有相對路徑的前綴啟動服務(wù)器:
nginx -c config_file -p prefix/for/relative/paths在不影響正在運行的服務(wù)器的情況下測試配置:
nginx -t通過發(fā)送一個沒有停機的信號來重新加載配置:
nginx -s reload通過發(fā)送一個沒有停機的信號來重新打開配置:
nginx -s reopen停止nginx:
nginx -s stop退出nginx:
nginx -s quit
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/share/nginx/)
-c filename : set configuration file (default: /etc/nginx/nginx.conf)
-g directives : 從配置文件中設(shè)置全局指令
supervisorctl
Supervisor是一個客戶機/服務(wù)器系統(tǒng),它允許用戶在類unix操作系統(tǒng)上控制多個進程。
監(jiān)督者ctl是監(jiān)督者的命令行客戶端,它提供了一個類似shell的接口.
啟動/停止/啟動一個過程:
supervisorctl start|stop|restart process_name啟動/停止/重啟組中的所有進程:
supervisorctl start|stop|restart group_name:*顯示最后100字節(jié)的流程stderr:
supervisorctl tail -100 process_name stderr保持在進程外顯示stdout:
supervisorctl tail -f process_name stdout重新加載進程配置文件,根據(jù)需要添加/刪除進程:
supervisorctl update查看進程狀態(tài)
supervisorctl status
supervisord
Supervisor是一個客戶機/服務(wù)器系統(tǒng),用于控制類unix操作系統(tǒng)上的一些進程。
監(jiān)控器是監(jiān)控器的服務(wù)器部分;它主要通過配置文件進行管理。
用指定的配置文件啟動督導員: 默認在
/etc/supervisord.conf下面
supervisord -c path/to/file在前臺運行督導員:
supervisord -n使用默認的配置文件 /etc/supervisord.conf
supervisord明確指定配置文件
supervisord -c /etc/supervisord.conf使用 user 用戶啟動 supervisord
supervisord -u user