linux命令使用小记1


bash的快捷键

现在碰到的服务器上的用户的默认shell都是bash,所以主要讲下bash的一些快捷键。
删除整行命令:Ctrl + u,对不回显的密码输入同样有效
向前删除单个单词:Ctrl + w,在vim里面同样有效
运行最近一条命令:!! 就是两个感叹号,个人是从sbt(scala下的一个构建工具)里面学来的
搜索最近的命令;Ctrl + r,输入关键字,比如你最近输入了vim /path/to/file,那么Ctrl + r,再输入vim,那么就可以显示出这条命令,回车就直接执行了
在搜索最近的命令的基础上,!vim 可以执行最近这条vim的命名。这个用在什么地方最好呢?如果你最近tail了某个文件,输入!tail就可以直接执行tail了,不用输入文件名
清屏命令:Ctrl + l,效果和clear一样
上一条命令和下一条命令:Ctrl + p,Ctrl + n,个人不是很喜欢用上下键,因为要移动右手,而且有些键盘需要按FN才有上下,比如hhkb-pro,不过这个仁者见仁,智者见智
暂停屏幕输出:Ctrl + s,恢复屏幕输入Ctrl + q,这个用来干嘛呢?类似tail时scroll lock
更多bash快捷键,请google

alias

命令的别名,比如ll很多情况下被映射到ls –l上。
查看所有alias:alias
临时禁用alias的方法
全路径方式: /usr/bin/svn commit –m “some message”
禁用alias方式: \svn commit –m “some message”

vim

vim的东西比较多,这里只是挑着讲。
从某一行开始编辑:未进入vim时,vim +line_number /path/to/file,比如vim +100 antx.properties;进入vim了,命令模式lineNumberG,比如100G
跳到最后一行:命令模式GG
跳到第一行:命令模式1G
显示行号:命令模式set number
自动缩进:命令模式set ai,这个用在你在服务器上修改代码文件的时候有用,理论上set开头的可以放到~/.vimrc中去
搜索:/keyword,下一个为n,上一个为N,
开启/关闭搜索高亮:命令模式set hlsearch!
删除整行:命令模式dd
删除多行:命令模式lineCountdd,比如3dd是删除三行
替换单词:命令模式cw,比如替换foo bar中的foo,移动到f上按下cw即可替换
删除单词:命令模式dw
删除当前位置到行末:命令模式D,比如foo = bar,baz,要删除,baz,移动到,上按D
编辑当前位置到行末:命令模式C,类似Di(删除当前位置到行末在进入编辑模式)
其他还有很多,建议google。

find

给一条可能有用的命令,在文件夹中递归搜索字符串。
find –type f –name “*.java” –exec grep –Hn {} \;
Hn代表输出文件名和行号
名字可以改成*.xml等通配符格式

screen

先说下场景,你既要编辑某个配置文件,又需要build,这种情况很多人貌似会用securecrt的clone功能。
第二个场景,你在部署某个非常耗时的系统,比如需要10分钟,中间不能断线。假如断线了就需要重来(我以前编译内核ext4的时候就出现过这种情况……)。
这个时候,可以用screen或者tmux。
个人查了下,服务器上有screen,没有tmux。个人习惯于用tmux,不过screen也会一点,因为两者基本功能是共同的。
针对第二个场景,输入screen进入screen,输入非常耗时的命令,按下Ctrl + a d回到主session,这时你可以exit退出了,之后想要再看的话,输入screen –r重新attach。
针对第一个场景,进入screen,Ctrl + a c开启一个新窗口,用Ctrl + a p和Ctrl + a n切换窗口,两个窗口可以同时做不同的事情。当然screen提供了横向分屏,只是个人不知道怎么用……竖向分屏在4.1后提供,现在服务器上的是4.0所以不支持。Ctrl + a w可以看到有哪些窗口。Ctrl + a A重命名当前窗口。
更多的快捷键请google。

luit, sshpass, ssh-copy-id & ssh_config

假如服务器的编码是GBK,宿主机是UTF-8的linux或者MacOSx的时候使用ssh访问可能会乱码,这个时候可以使用luit,命令为luit –encoding GBK ssh username@server,这样就可以连接GBK编码的服务器了。
sshpass是用来输入密码的,比如sshpass –f /path/to/file_which_contains_password_at_first_line ssh username@server
ssh-copy-id是用来做publickey验证的,首先在你本机生成publickey,然后ssh-copy-id到远程服务器,之后就不用输入密码了。
ssh_config是一个提高访问效率的工具,个人主要是用于简化服务器域名,具体配置这里就不列出来的,用法有很多,可以google。

最后合并这些ssh命令,演示一下如何到服务器上查看负载后退出。

luit –encoding GBK sshpass –f server-password ssh my-server “free -m && uptime && exit”