[TOC]
Linux 和 Mac 也是就OS X 的命令非常相似倍奢,在開發(fā)過程中會經(jīng)常用到,命令忘記用法就使用
# 命令[command]的幫助信息痪枫,顯示在當前命令行內(nèi)
[command] --help
# 顯示命令[command]完整幫助文檔
man [command]
Linux 命令行工具操作快捷鍵
# Ctrl + C - 取消操作
# Ctrl + D - 退出內(nèi)嵌終端
# Ctrl + L - 清屏
# Ctrl + R - 歷史命令,可以查找近期的命令,重復(fù)近期的命令
# Ctrl + A - 光標移到行首
# Ctrl + E - 光標移到行尾
# Ctrl + W - 清除光標之前一個單詞
# Ctrl + K - 清除光標到行尾的字符
# Ctrl + T - 交換光標前兩個字符
# Ctrl + V - 輸入控制字符 如Ctrl+v ,會輸入^M
# Ctrl + F - 光標后移一個字符
# Ctrl + B - 光標前移一個字符
# Ctrl + H - 刪除光標前一個字符
# Esc+f - 光標后移一個單詞
# Esc+b - 光標前移個單詞
# Esc+N+[單詞] - 光標輸入N個單詞[單詞],N為不可省略
# Esc-c - 使下一個單詞首字母大寫, 同時光標前進一個單詞, 如光標停留在單詞的某個字母上則為這個光標位置
# Esc-u - 使下一個單詞所有字母變大寫, 同時光標前進一個單詞, 同上
# Esc-l 同Esc-U, 但使之全變?yōu)樾?
命令行復(fù)制粘貼快捷鍵
- 在控制臺下(也就是本臺電腦的圖形化界面下的允瞧,那個命令行)
復(fù)制命令:Ctrl + Shift + C
組合鍵.
粘貼命令:Ctrl + Shift + V
組合鍵.
- 在終端下 :(這個是遠程登陸的命令行,也就是你要操作的電腦在遠程)
一般用的是這個但是這個insert鍵蛮拔,如果是筆記本的話必須借助功能件組合才能打出來述暂,我電腦是聯(lián)想的功能鍵是Fn
復(fù)制命令:Ctrl + Insert
組合鍵 或 用鼠標選中即是復(fù)制。
粘貼命令:Shift + Insert
組合鍵 或 單擊鼠標滾輪即為粘貼建炫。
使用超級管理員身份
# 使用超級管理員身份執(zhí)行命令 [command]
sudo [command]
命令行窗口
清空歷史信息
clear
系統(tǒng)類
查看內(nèi)存占用
free -m
以(-/+ buffers/cache)的free和used為主
查看磁盤占用
df -h
查看內(nèi)核/操作系統(tǒng)/CPU信息
uname -a
cat /proc/version
查看操作系統(tǒng)版本
head -n 1 /etc/issue
查看CPU信息
cat /proc/cpuinfo
文件類
查找文件
快速查找
# 根據(jù)名稱查找/目錄下的[file full name]文件
find / -name [file full name]
# 遞歸查找 [.] 也就是所有 后綴為 [suffix] 的文件
find . -name "*.[suffix]"
# 查找當前目錄中的所有 [jar]文件
ls -l | grep '[jar]'
遞歸查找
# 遞歸查找所有文件內(nèi)容中畦韭,前提這是一個可以被讀取并識別的,包含[search key]的 xml 文件
find . -name "*.xml" |xargs grep "[search key]"
內(nèi)容查找
# 查找所有的包含 [context] 后綴為 [suffix] 的文件
grep -H '[context]' *.[suffix]
# 顯示所有以 [head] 開頭的文件中包含 [test]的行
grep '[test]' [head]*
# 顯示在aa肛跌,bb艺配,cc文件中匹配[context]的行
grep '[context]' aa bb cc
# 顯示aa中所有包含每個字符串至少有[number]個連續(xù)小寫字符的字符串的行
grep '[a-z]\{[number]\}' aa
查看文件頭[number]行
# [filename] 文件名
head -n [number] [filename]
查看文件尾[number]行
# [filename] 文件名
tail -n [number] [filename]
查看日志類型文件
# 日志文件 [logfile.log]
tail -f [logfile.log]
# 這個命令會自動顯示新增內(nèi)容,屏幕只顯示10行內(nèi)容的(可設(shè)置)[linenumber]
tail -f -n [linenumber] [logfile.log]
文件操作
顯示當前目錄
pwd
顯示當前目錄文件占用空間
# -h標識為人類好看的結(jié)果 -d 標識遞歸層數(shù)
du -h -d 1
# -c 最終還會返回統(tǒng)計的所有文件的數(shù)量
du -h -c
# 找出當前目錄下面的文件多少個
find . -type f | wc -l
以樹狀圖列出目錄的內(nèi)容
# 以樹狀圖顯示目錄 [folder] 內(nèi)容惋砂,如果沒有請安裝 tree 工具
tree [folder]
# OS X 請安裝 tree或者使用下面的命令
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
# 遞歸變量文件夾內(nèi)的結(jié)構(gòu)妒挎,忽略 [build] 的子文件夾,并輸出到文件 FileTree.md
tree -d -I [build] > FileTree.md
# 如果想忽略更多文件夾這樣寫
tree -d -I "build|gradle|output"
文件權(quán)限
# [file]的權(quán)限進行 options 操作
chmod [options] [file]
# 第一位指定屬主的權(quán)限西饵,第二位指定組權(quán)限,第三位指定其他用戶的權(quán)限
# 4鳞芙,執(zhí)行時設(shè)置用戶ID
# 2眷柔,執(zhí)行時設(shè)置用戶組ID
# 1,設(shè)置粘著位
# 如6(4+2)代表有讀寫權(quán)原朝,7(4+2+1)有讀驯嘱、寫和執(zhí)行的權(quán)限
# -rwxrwxrwx,r表示讀喳坠、w表示寫鞠评、x表示可執(zhí)行 options 為777
- Option
option | Full option | Desc |
---|---|---|
-c | --changes | 只輸出被改變文件的信息 |
-f | --silent --quiet | 當chmod不能改變文件模式時,不通知文件的用戶 |
-R | --recursive | 可遞歸遍歷子目錄壕鹉,把修改應(yīng)到目錄下所有文件和子目錄 |
-v | --verbose | 無論修改是否成功剃幌,輸出每個文件的信息 |
--reference=filename | 參照filename的權(quán)限來設(shè)置權(quán)限 |
- Option Code
code | Desc |
---|---|
+ | 增加權(quán)限 |
- | 刪除權(quán)限 |
= | 重新分配權(quán)限 |
- Who
who | Desc |
---|---|
u | 用戶 |
g | 組 |
o | 其它 |
a | 所有用戶(默認) |
- permission
Permison | Desc |
---|---|
r | 讀 |
w | 寫 |
x | 執(zhí)行 |
s | 設(shè)置用戶(或組)的ID號 |
t | 設(shè)置粘著位(sticky bit),防止文件或目錄被非屬主刪除 |
u | 用戶的當前權(quán)限 |
g | 組的當前權(quán)限 |
o | 其他用戶的當前權(quán)限 |
- 實例
Dome | Desc |
---|---|
chmod 751 file | 給file的屬主分配讀晾浴、寫、執(zhí)行(7)的權(quán)限脊凰,給file的所在組分配讀抖棘、執(zhí)行(5)的權(quán)限,給其他用戶分配執(zhí)行(1)的權(quán)限 |
chmod u=rwx,g=rx,o=x file | 上例的另一種形式 |
chmod u+x file | 給file的屬主增加執(zhí)行權(quán)限 |
chmod 4755 | 設(shè)置用ID,給屬主分配讀切省、寫和執(zhí)行權(quán)限最岗,給組和其他用戶分配讀、執(zhí)行的權(quán)限 |
chmod =r file | 為所有用戶分配讀權(quán)限 |
chmod 444 file | 同上 |
chmod a-wx,a+r file | 同上 |
chmod -R u+r directory | 遞歸地給directory目錄下所有文件和子目錄的屬主分配讀的權(quán)限 |
顯示當前文件夾詳情
ls -al
復(fù)制文件
# 復(fù)制文件 [source] 到 [dest]
cp [source] [dest]
# 遞歸復(fù)制整個文件夾 [sourceFolder] 到 [targetFolder]
cp -r [sourceFolder] [targetFolder]
# 遠程拷貝 [sourecFile] 到 [romoteUserName@remoteIp:remoteAddr]
scp [sourecFile] [romoteUserName@remoteIp:remoteAddr] 遠程拷貝
移動文件
# 移動文件 [movefile] 到 [targetFolder]
mv [movefile] [targetFolder]
重命名
# rename [oldNameFile] 重命名為 [newNameFile]
rename [oldNameFile] [newNameFile]
# rename 正則表達式做批量命令
# 先man rename 在手冊頁的最后一行看正則的版本朝捆,然后使用對應(yīng)的正則表達式仑性,如Perl版本
rename 's/^oldName/newName/' oldName.xx
# 或者 C 的正則版本
rename 'oldNmae' 'newName' oldName.xx
# 將 [oldNameFile] 重命名為 [newNameFile] 不建議使用,會導(dǎo)致誤操作
mv [oldNameFile] [newNameFile]
壓縮文件
# 保存為 [tarFileName.tar.gz] 右蹦, 從[fromFolder]壓縮到[targetFolder]
tar -czf [tarFileName.tar.gz] [fromFolder] [targetFolder]
# 列出壓縮文件 [tarFileName] 的內(nèi)容文件列表
tar -tzf [tarFileName.tar.gz]
# 壓縮 文件
zip [zipOutName] [File]
# 壓縮文件夾
zip -r [zipOutName] [Folder]
解壓文件
# 解壓 [tarFileName.tar.gz] 的文件
tar -xvzf [tarFileName.tar.gz]
# zip解壓
unzip [zipFile] -d [outFolder]
對于.rar
要在linux下處理.rar文件诊杆,需要安裝RAR for Linux,可以從網(wǎng)上下載何陆,但要記住晨汹,RAR for Linux 不是免費的;
可從 http://www.rarsoft.com/download.htm 下載RARfor Linux 3.2. 0贷盲,然后安裝:
tar -xzpvf rarlinux-3.2.0.tar.gz
cd rar
make
這樣就安裝好了淘这,安裝后就有了rar和unrar這兩個程序,rar是壓縮程序巩剖,unrar 是解壓程序
刪除文件大小為零的文件
find ./ -size 0 | xargs rm -f &
目錄操作
創(chuàng)建目錄
# 創(chuàng)建 [newfolder] 目錄
mkdir [newfolder]
刪除目錄
# 刪除空目錄 [emptyFolder]
rmdir [emptyFolder]
# 安全刪除目錄 [folder] 中所有內(nèi)容
\rm -r [folder]
# 遞歸刪除目錄 [folder] 中所有內(nèi)容 這樣容易誤刪除
rm -rf [folder]
網(wǎng)絡(luò)類
查看端口占用情況
# 查看端口號 [port] 的使用情況
netstat -tln | grep [port]
查看端口屬于哪個程序
# 查看端口號 [port] 屬于哪個程序
lsof -i :[port]
網(wǎng)絡(luò)檢測
# 檢查網(wǎng)卡
ping 127.0.0.1
# 檢查網(wǎng)絡(luò) [host or ip address]
ping [host or ip address]
# 路由跟蹤 到 [host] 的路由
traceroute [host]
進程類
查看進程
# 查看所有有關(guān)[progress name]的進程
ps –ef | grep [progress name]
# 查看所有進程
ps aux
# 查看 [progress] 進程
ps aux |grep [progress]
查看Java運行進程
# 查看java進程
jps
# 查看java進程號
jps -q
# java 應(yīng)用程序main class的完整package名或者應(yīng)用程序的jar文件完整路徑名
jps -l
# 查看java進程號 輸出傳遞給main 方法的參數(shù)
jps -m
# 查看java進程傳遞給JVM的參數(shù)
jps -v
終止進程
# 終止線程號為[pid]的線程
kill -9 [pid]
用戶類
顯示用戶
# 顯示當前用戶名
whoami
切換用戶
# 切換到 username
su -username
配置 信息類
查看系統(tǒng)版本
more /proc/version
打印信息
# 打印java home環(huán)境變量的值
echo $JAVA_HOME
# 讀取環(huán)境變量更你使用的bash有關(guān)铝穷,如果是 bash 是讀取 ~/.bash_profile 中
遠程管理
遠程登錄
# 使用ssh登錄 [userName] [ip]
ssh [userName]@[ip]