Linux 和 Mac 也是就OS X 的命令非常相似,在开发过程中会经常用到,命令忘记用法就使用
# 命令[command]的帮助信息,显示在当前命令行内
[command] --help
# 显示命令[command]完整帮助文档
man [command]
使用超级管理员身份
# 使用超级管理员身份执行命令 [command]
sudo [command]
文件类
查找文件
快速查找
# 根据名称查找/目录下的[file full name]文件
find / -name [file full name]
# 递归查找 [.] 也就是所有 后缀为 [suffix] 的文件
find . -name "*.[suffix]"
# 查找当前目录中的所有 [jar]文件
ls -l | grep '[jar]'
递归查找
# 递归查找所有文件内容中,前提这是一个可以被读取并识别的,包含[search key]的 xml 文件
find . -name "*.xml" |xargs grep "[search key]"
内容查找
# 查找所有的包含 [context] 后缀为 [suffix] 的文件
grep -H '[context]' *.[suffix]
# 显示所有以 [head] 开头的文件中包含 [test]的行
grep '[test]' [head]*
# 显示在aa,bb,cc文件中匹配[context]的行
grep '[context]' aa bb cc
# 显示aa中所有包含每个字符串至少有[number]个连续小写字符的字符串的行
grep '[a-z]\{[number]\}' aa
查看文件头[number]行
# [filename] 文件名
head -n [number] [filename]
查看文件尾[number]行
# [filename] 文件名
tail -n [number] [filename]
查看日志类型文件
# 日志文件 [logfile.log]
tail -f [logfile.log]
# 这个命令会自动显示新增内容,屏幕只显示10行内容的(可设置)[linenumber]
tail -f -n [linenumber] [logfile.log]
文件操作
显示当前目录
pwd
以树状图列出目录的内容
# 以树状图显示目录 [folder] 内容,如果没有请安装 tree 工具
tree [folder]
# OS X 请安装 tree或者使用下面的命令
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
# 递归变量文件夹内的结构,忽略 [build] 的子文件夹,并输出到文件 FileTree.md
tree -d -I [build] > FileTree.md
文件权限
# [file]的权限进行 options 操作
chmod [options] [file]
# 第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限
# 4,执行时设置用户ID
# 2,执行时设置用户组ID
# 1,设置粘着位
# 如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限
# -rwxrwxrwx,r表示读、w表示写、x表示可执行 options 为777
Option
option
Full option
Desc
-c
--changes
只输出被改变文件的信息
-f
--silent --quiet
当chmod不能改变文件模式时,不通知文件的用户
-R
--recursive
可递归遍历子目录,把修改应到目录下所有文件和子目录
-v
--verbose
无论修改是否成功,输出每个文件的信息
--reference=filename
参照filename的权限来设置权限
Option Code
code
Desc
+
增加权限
-
删除权限
=
重新分配权限
Who
who
Desc
u
用户
g
组
o
其它
a
所有用户(默认)
permission
Permison
Desc
r
读
w
写
x
执行
s
设置用户(或组)的ID号
t
设置粘着位(sticky bit),防止文件或目录被非属主删除
u
用户的当前权限
g
组的当前权限
o
其他用户的当前权限
实例
Dome
Desc
chmod 751 file
给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod u=rwx,g=rx,o=x file
上例的另一种形式
chmod u+x file
给file的属主增加执行权限
chmod 4755
设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限
chmod =r file
为所有用户分配读权限
chmod 444 file
同上
chmod a-wx,a+r file
同上
chmod -R u+r directory
递归地给directory目录下所有文件和子目录的属主分配读的权限
显示当前文件夹详情
ls -al
复制文件
# 复制文件 [source] 到 [dest]
cp [source] [dest]
# 递归复制整个文件夹 [sourceFolder] 到 [targetFolder]
cp -r [sourceFolder] [targetFolder]
# 远程拷贝 [sourecFile] 到 [romoteUserName@remoteIp:remoteAddr]
scp [sourecFile] [romoteUserName@remoteIp:remoteAddr] 远程拷贝
移动文件
# 移动文件 [movefile] 到 [targetFolder]
mv [movefile] [targetFolder]
重命名
# 将 [oldNameFile] 重命名为 [newNameFile]
mv [oldNameFile] [newNameFile]
压缩文件
# 保存为 [tarFileName.tar.gz] , 从[fromFolder]压缩到[targetFolder]
tar -czf [tarFileName.tar.gz] [fromFolder] [targetFolder]
# 列出压缩文件 [tarFileName] 的内容文件列表
tar -tzf [tarFileName.tar.gz]
解压文件
# 解压 [tarFileName.tar.gz] 的文件
tar -xvzf [tarFileName.tar.gz]
删除文件大小为零的文件
find ./ -size 0 | xargs rm -f &
目录操作
创建目录
# 创建 [newfolder] 目录
mkdir [newfolder]
删除目录
# 删除空目录 [emptyFolder]
rmdir [emptyFolder]
# 安全删除目录 [folder] 中所有内容
\rm -r [folder]
# 递归删除目录 [folder] 中所有内容 这样容易误删除
rm -rf [folder]
网络类
查看端口占用情况
# 查看端口号 [port] 的使用情况
netstat -tln | grep [port]
查看端口属于哪个程序
# 查看端口号 [port] 属于哪个程序
lsof -i :[port]
网络检测
# 检查网卡
ping 127.0.0.1
# 检查网络 [host or ip address]
ping [host or ip address]
# 路由跟踪 到 [host] 的路由
traceroute [host]
进程类
查看进程
# 查看所有有关[progress name]的进程
ps –ef | grep [progress name]
# 查看所有进程
ps aux
# 查看 [progress] 进程
ps aux |grep [progress]
查看Java运行进程
# 查看java进程
jps
# 查看java进程号
jps -q
# java 应用程序main class的完整package名或者应用程序的jar文件完整路径名
jps -l
# 查看java进程号 输出传递给main 方法的参数
jps -m
# 查看java进程传递给JVM的参数
jps -v
终止进程
# 终止线程号为[pid]的线程
kill -9 [pid]
用户类
显示用户
# 显示当前用户名
whoami
切换用户
# 切换到 username
su -username
配置 信息类
打印信息
# 打印java home环境变量的值
echo $JAVA_HOME
# 读取环境变量更你使用的bash有关,如果是 bash 是读取 ~/.bash_profile 中
远程管理
远程登录
# 使用ssh登录 [userName] [ip]
ssh [userName]@[ip]