开发必会的 Linux & Mac 命令 及 命令行快捷键

[TOC]
Linux 和 Mac 也是就OS X 的命令非常相似,在开发过程中会经常用到,命令忘记用法就使用

# 命令[command]的帮助信息,显示在当前命令行内
[command]  --help
# 显示命令[command]完整帮助文档
man [command]

Linux 命令行工具操作快捷键

# Ctrl + C - 取消操作
# Ctrl + D - 退出内嵌终端
# Ctrl + L - 清屏
# Ctrl + R - 历史命令,可以查找近期的命令,重复近期的命令
# 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, 但使之全变为小写

命令行复制粘贴快捷键

  • 在控制台下(也就是本台电脑的图形化界面下的,那个命令行)

复制命令:Ctrl + Shift + C 组合键.

粘贴命令:Ctrl + Shift + V 组合键.

  • 在终端下 :(这个是远程登陆的命令行,也就是你要操作的电脑在远程)
    一般用的是这个但是这个insert键,如果是笔记本的话必须借助功能件组合才能打出来,我电脑是联想的功能键是Fn

复制命令:Ctrl + Insert 组合键  或  用鼠标选中即是复制。

粘贴命令:Shift + Insert 组合键  或  单击鼠标滚轮即为粘贴。

使用超级管理员身份

# 使用超级管理员身份执行命令 [command]
sudo [command]

命令行窗口

清空历史信息

clear

系统类

查看内存占用

free -m

以(-/+ buffers/cache)的free和used为主

查看磁盘占用

df -h

查看内核/操作系统/CPU信息

uname -a
cat /proc/version

查看操作系统版本

head -n 1 /etc/issue

查看CPU信息

cat /proc/cpuinfo

文件类

查找文件

快速查找

# 根据名称查找/目录下的[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

显示当前目录文件占用空间

# -h标识为人类好看的结果 -d 标识递归层数
du -h -d 1
# -c 最终还会返回统计的所有文件的数量
du -h -c
# 找出当前目录下面的文件多少个
find . -type f | wc -l

以树状图列出目录的内容

# 以树状图显示目录 [folder] 内容,如果没有请安装 tree 工具
tree [folder]
# OS X 请安装 tree或者使用下面的命令
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
# 递归变量文件夹内的结构,忽略 [build] 的子文件夹,并输出到文件 FileTree.md
tree -d -I [build] > FileTree.md
# 如果想忽略更多文件夹这样写
tree -d -I "build|gradle|output"

文件权限

# [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]

重命名

# rename [oldNameFile] 重命名为 [newNameFile]
rename [oldNameFile] [newNameFile]
# rename 正则表达式做批量命令
# 先man rename 在手册页的最后一行看正则的版本,然后使用对应的正则表达式,如Perl版本
rename 's/^oldName/newName/' oldName.xx 
# 或者 C 的正则版本
rename 'oldNmae' 'newName' oldName.xx
# 将 [oldNameFile] 重命名为 [newNameFile] 不建议使用,会导致误操作
mv [oldNameFile] [newNameFile]

压缩文件

# 保存为 [tarFileName.tar.gz] , 从[fromFolder]压缩到[targetFolder]
tar -czf [tarFileName.tar.gz] [fromFolder] [targetFolder]

# 列出压缩文件 [tarFileName] 的内容文件列表
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,可以从网上下载,但要记住,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 &

目录操作

创建目录

# 创建 [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

配置 信息类

查看系统版本

more /proc/version

打印信息

# 打印java home环境变量的值
echo $JAVA_HOME
# 读取环境变量更你使用的bash有关,如果是 bash 是读取 ~/.bash_profile 中

远程管理

远程登录

# 使用ssh登录 [userName] [ip]
ssh [userName]@[ip]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,478评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,825评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,482评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,726评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,633评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,018评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,168评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,320评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,264评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,288评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,995评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,587评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,909评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,284评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,862评论 2 339

推荐阅读更多精彩内容