Linux/Mac OS 个人惯用Terminal技巧整理

Linux/Mac OS 个人常用Terminal技巧整理

刚开始接触linux有些不适应,走了不少弯路,一直没有系统的学过linux应用,基本都是零零散散Google出来的知识,在这里做个整理:

 

Vi/Vim 基本操作:

刚开始接触linux时,不懂vi吃了不少亏.在命令行状态下,一旦用vi打开了文本只能通过重启来退出.

 

vi/vim 分三种模式: 指令模式,编辑模式,选择模式. 只有在编辑模式下才能进行输入(不是绝对).

默认是"指令模式", 这个模式只支持vi/vim的指令, 在敲键盘时只会滴滴响. 不知道有多少人被这种方式搞晕过(晕不晕由你,反正我是晕了.如果你没晕,恭喜你,那真是个奇迹)

ok~ 关于vi/vim的操作不打算在这里过多整理,能满足基本操作就行:

 

1. 在默认的"指令模式"下按 i 进入编辑模式

2. 在非指令模式下按 ESC 返回指令模式

3. 在"指令模式"下输入:

:w 保存当前文件

:q  退出编辑,如果文件为保存需要用强制模式

:q! 强制退出不保存修改

:wq 组合指令, 保存并退出

4. 在"指令模式"下移动:

h

j

k

l

#翻页

Shift + f(front) 下一页

Shift + b(back) 上一页

关于vi/vim整理到这里,知道上面这些基本可以避免我刚接触linux时的那些傻x问题

 

关于Vim need more?

简明VIM练级攻略 - http://coolshell.cn/articles/5426.html

在线教程+Web版VIM - http://www.openvim.com/index.html

Terminal基本指令

#权限相关

sudo 提升当前操作权限

passwd [username] 修改用户密码, 一般用来激活root用户(管理员)

chown [target] [user] 修改制定目标的拥有者

chmod 755 [command] 提高指定文件的执行权限

#chown/chmod这两个指令没有深究过

 

#查看/帮助

man [command] 查看指令的帮助,一般使用vim打开txt帮助文件,按q退出(重点)

cat [file name] 输出指定文件的内容

which  [command] 查看指令的位置: which ruby 这样可以检查环境

 

#基本文件操作

ls -a  [path] 查看当前目录下所有文件, 包括隐藏文件

ls -l [path] 查看文件的完整信息,包括拥有者,读写权限

rm -rf [path] 删除文件夹

mv [source path] [target] 移动文件/重命名

cp  [source path] [target] 复制文件

 

Terminal中实用工具

tail -f $CATALINA_HOME/logs/catalina.out 查看tomcat日志

tree -L 3 . 用树状结构查看目录, -L制定查看深度

grep  正则表达式工具,可以用来过滤结果

ls -a | grep .ba 可以找到包含ba的隐藏文件, 有时候用来找 .bash_profile文件

svn st | grep ^? 查看当前办本库中未添加的文件

ping -c 3 10.2.1.18 ping 3次指定目标,不指定次数会一直ping下去(这点和windows不一样)

Terminal操作技巧

Ctrl + a 光标移动到行首

Ctrl + e ......移动到行尾

Double Tab 可以列出代选命令/代选文件

 

Ctrl + c 强制推出当前操作

 

 

Mac OS 下

Command + K 清屏

Command + T 新建标签

Command + {} x向左/向右切换标签

mac os 使用iterm来代替自带Terminal

 

使~/.bash_profile立即生效的3中方式

1. .  .bash_profile

2. source .bash_profile(用过这个方法)

3.  exec bash --login

 

 

进程操作:

ps -A | grep [process name regex] : 查看制定进程,

e.g: ps -A | grep eclipse 查看eclipse进程

 

kill [PID] : 强制kill掉制定进程

 

sudo lsof -i -P | grep 9092

查看指定端口的PID, 非常有用

 

SSH操作:

ssh lvjian@192.168.1.6    #server端需要架设OpenSSH服务器

 

scp ./lib/*.jar lvjian@192.168.1.6:jeespace/biandan/war/WEB-INF/lib      #向SSH Server远程copy文件