Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)
- lsof: 列出所有打开的文件。举例:'lsof -p 456,123' 列出进程456和123所有打开的文件。'lsof -i 6' 列出所有IPv6协议的网络文件。
- nl: 将输出的每一行加上行号。例如:'cat 1.txt | nl',输出1.txt的文件并加上行号
- CTRL+a 和 CTRL+e: 到命令行首(ctrl+a)和行末(ctrl+e),在小键盘上特别有用,不用费心思找HOME和END键
- ALT+.:列出上一个命令的最后一个参数。这个命令我最常用。例如'mkdir mydir',然后'cd ALT+.'。很好用
- CTRL+R: 这个也很常用,搜索命令历史相当方便。
- grep/sed/cut/tr/: 这几个命令的组合能够很方便的解析很多文件,就不一一举例了。个人不常用awk,觉得'sed'就够用了。
- find/xargs: 这个我也很常用,在一堆文件中查找某个特定字符串。这个常常和6中列出命令组合使用。
- ls -d */: 这个命令仅列出当前目录下所有的一级子目录,不包括'.'开头的隐藏目录,如果想列出隐藏目录,使用'ls -d .*'。'find -type d -maxdepth 1'也有类似的效果。
- id: 列出本用户所属的所有用户组。
- Brace Expansion:已经有人说过了,我补充完整一点。"ls /usr/{,local}/bin",列出"/usr/bin"和"/usr/local/bin"下所有文件。这个机制称为"Brace Expansion",再举个例子:"diff .bashrc{,.backup}",显示.bashrc和.bashrc.backup两个文件之间的差异。
- column: 也有人提过,放在这里算总结吧,一个常用的语法是'mount | column -t',或者 'df | column -t',让输出更加容易阅读。
- ssh/sshfs/scp: 善用ssh相关工具让你的远程工作起来更加方便。'ssh -X'打开X-forward功能。'ssh-keygen'和'ssh-copy-id'让你省去每次输入密码的麻烦。ssh root@10.1.1.1 “远程命令"让你的命令远程执行。'sshfs root@10.1.1.1:/var/ /home/root/var' 将远程目录直接mount到本地目录。"scp root@10.1.1.1:.vimrc ."将远程服务器中root用户HOME目录下的.vimrc文件拷贝到本地。
- 使用'<'号读取文件到标准输入:对于所有接受标准输入的命令,使用'<文件名'可以将某个文件送入标准输入,并且可以出现在命令的任何位置,例如:
"cat filename"
"<filename cat"
"cat <filename"
上面三个命令的效果是一模一样的。
----更新----- 这里补充说明一下,上面的几个技巧中所有命令行编辑的快捷键(CTRL+r CTR+a, CTRL+e)是由GNU readline库定义的,'man readline'可以得到更详细的说明以及更多的快捷键定义。但是由于和你使用的TERMINAL类型可能发生各种冲突,所以不是所有的快捷键都能够很好的工作。
-----更新2--- 类似问题的链接 有哪些不常见但很有用处的 Unix 命令?
-----更新3---- Top Ten One-Liners from CommandLineFu Explained 上面这篇文章总结了不少有用的命令。这个链接是四篇文章组成的一个系列,值得一看。
另外,readline的模式问题,BASH缺省的是emac模式(set -o emacs),通过'set -o vi'可以切换到vi模式,同一个网站上也有两篇很好的文章介绍操作技巧,值得一看。 BASH VI 模式 Working Productively in Bash's Vi Command Line Editing Mode (with Cheat Sheet) BASH EMAC 模式 Bash Emacs Editing Mode Cheat Sheet
---更新4---- 碰巧看见All commands上有一个使用lsof的实用技巧(Keep a copy of the raw Youtube FLV,MP4,etc stored in /tmp/),借这个地方记录一下:
现在浏览器的flash插件在播放在线视频的时候,常常将下载的视频放在/tmp目录下,然后执行unlink删除文件,但实际上文件并没有删除,这些被unlink的文件其实可以通过/proc找到。通过lsof找出插件的进程号,然后在/proc/插件进程号/fd/下找到当前打开文件的链接,然后就可以直接拷贝出来,在我的ArchLinux下firefox是这样的:
首先保证firefox正在播放flash视频,例如打开youku,随便播放一个视频,按暂停,执行下面的步骤:
- lsof -n -P | grep FlashXX:输出当前flash插件打开的所有文件,例如:"plugin-co 30427 30428 dsun 15u REG 0,17 8790980 163285 /tmp/FlashXXRxAIDF (deleted)"
- 30427即flash插件进程号,执行‘ls -l /proc/30427/fd/ | grep /tmp/FlashXXRxAIDF',输出 "lrwx------ 1 dsun dsun 64 Mar 27 13:31 15-> /tmp/FlashXXRxAIDF (deleted)"
- 拷贝文件:'cp /proc/30427/fd/15 15.flv'。
不过,根据上面commandlinfu中的另一个说法,可以直接这样做:
for h in `find /proc/*/fd -ilname "/tmp/Flash*" 2>/dev/null`; do cp $h `basename $h`.flv; done
---更新5----
又看到一个我之前不知道的用法,用backslash执行命令,可以取消alias的效果. http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/general-shell-tips.html
\ (backslash)
The backslash escape character can be used before a shell command to override any aliases.
For example if rm was made into an alias for rm -i then typing “rm” would actually run rm -i.
However, typing \rm lets the shell ignore the alias and just run rm (its runs exactly what you type), this way it won't confirm if you want to delete things.
nc,可以在没有ssh的情况下传输文件,配合tar真心好用
Quartz Lee,Do anything for fun.
显示全部
find xxx -print0 xargs -0 或 xargs --null 如果你被find和xargs坑过,-print0和--null你定会让你感到亲切的。
read -a 将读取到的元素存入数组 或在循环里逐个地存入数组:
musics=()
while read -r -d $'\0'; do
musics+=("$REPLY")
done < <(find $HOME/Music -type f -print0)
上例中的 -r 和 -d 选项以及REPLY变量都很有趣。
引号,很容易被忽略,但是对于Shell来说是极其重要的部分。单引号用于阻止Shell解释其中的内容,双引号用于保护空格。
传统的UNIX管道模式是“一个输入,一个输出”。用函数的观点来看就是只允许一个参数的函数调用,其弊端王垠也提到过。不过现代的Shell已经有了变通的方法了。 例如: 使awk获取多个输入:
awk '...' <(generate_data) <(another_generate_data) ...
将数据传给多个命令处理:
generate_data | tee >(sort | uniq > sorted_data) >(nl > with_line_number) > raw_data
变量$-: [ "$-" = "*i*" ] 可以判断是否以交互式运行程序
变量$_: 类似于Python交互式环境中的 _(下划线),但没有你想象的好用。
内建命令trap: 可以捕捉信号,Google+上有人贴过使用trap恶搞的脚本,不过它的正式用处应该是清理临时文件,例如:
trap 'rm -f $temp_file' EXIT
显示全部
显示全部
$ sudo !!
2. 在以普通用户打开的 VIM 当中保存一个 ROOT 用户文件:
:w !sudo tee %
3. 切换回上一个目录:
$ cd -
4. 替换上一条命令中的一个短语(仅替换第一个):
$ ^foo^bar^
5. 快速备份一个文件:
$ cp filename{,.bak}
引自: Top Ten One-Liners from CommandLineFu Explained http://www.catonmat.net/blog/top-ten-one-liners-from-commandlinefu-explained/
牛杰,阿里云专家、资深域名行业从业者、技术工…
- 很酷
- 很冷门
- 很少用
- 很有用-这个。。。自己判断吧
赞同

显示全部




显示全部
- ctr+a回到首->你记忆成a是字母开始
- ctr+e回到末->e是end的意思。
- ctr+r历史命令检索->research.[ctrl+shift+r也可以试试]
- 另外还有诸如:
- ctrl+shift+v,黏贴,这样可以避免很多人使用鼠标右键~
- ctr+p返回上一条命令->pre
- ctr+n返回下一条命令->next
- ctrl+l->类似clear命令的 效果
- 其他ctr+d/c/z什么的不用提及吧?
以上只是因为上面看到别人的原因,就补充了我平时使用的ctrl开始的快捷键. 接下来一!开始的快捷键
- 使用 !! 执行上一条命令,常用的时候就是sudo !!
- 使用 !foo 执行以 foo 开头的命令
- 使用 !?foo 执行包含 foo 的命令
- 通过 !$ 得到上一条命令的最后一位参数[Alt +.]
- !^ 得到上一条命令的第一个参数[Ctrl + Alt + y]
- 使用 !n 执行第 n 个命令,这个一般是在我ctlr+r没检索到,会用history来看.然后就.
- 使用 !-n 执行倒数第 n 个命令,同上.
- 使用 !# 引用当前行,这个我基本不用,但是讲到!了,我就顺便说说.比如cp,mv的时候就容易用到它,mv fuck !#:1.bak 这里的1是一个word specifier.我不常用,因为一般我都直接tab补全的.有兴趣的可以网上看看资料
- !:[n-m] 得到上一条命令第 n -m个参数.这么说把,当!:N表示你要第n个,当你冒号之后给的是2个数字范围,那么就是去一个范围的参数,当给出!:n*的时候,就是第n个到最后一个,当!*这种就是所有参数.
- 在!#我提到过word specifier,现在补充比如:!$:h->选取参数的开头部分.这个我也比较常用.
- 还有:h:e:t等等,自己看吧.写的太多了.
然后是其他使用命令行的技巧:
- alias这种命令属于常用的.$()和``[反引号]这些,大家都懂撒.
比如我在ubuntu下使用龙井qq的时候因为qq经常异常退出,但是还有进程在,所以我每次都要kill掉,大概我写的就是sudo kill -9 `ps axu|grep qq|grep -v grep |awk '{print $2}'` 里面用到了这个``.
- 使用^ 删除错误.比如当你执行ls -l 的时候,你输入lsss -l,这时候可以执行^ss,删除2个s,删除是从左边开始寻找然后删除,比如lsds ->你^s的时候,命令就换成了lds了.
- 使用 ^old^new 替换. 不解释
至于要说好玩的功能.我推荐google 检索一下Ascii Art 哦.楼上说的什么cowsay,sl,toitlet,tpp这些都是属于此类. 补充: Home · rvoicilas/inotify-tools Wiki · GitHub Asciinema - Record and share your terminal sessions, the right way 这种都好玩呢.
网站推荐的话:explainshell.com
mike deng,哈哈!
显示全部
watch : 每隔一段时间监视某个命令的输出 split : 分割文件 comm : 得到两个文件中相同的行 join : 像 sql 的 join 语句一样操作文本 cut : 以某个分隔符提取某一列
参考: http://www.ibm.com/developerworks/aix/library/au-unixtext/index.html
显示全部
题叶,Ubutnu12.04 && Gnome3
赞同
$ bc
高精度计算器
Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)的更多相关文章
- Cygwin 是一个用于 Windows 的类 UNIX shell 环境
cygwin的安装使用 Cygwin 是一个用于 Windows 的类 UNIX shell 环境. 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性:以及 ...
- Unix及类Unix系统文本编辑器的介绍
概述 Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是纯粹的自由软件. Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Em ...
- Linux和类Unix系统上5个最佳开源备份工具
一个好的备份最基本的目的就是为了能够从一些错误中恢复: 人为的失误 磁盘阵列或是硬盘故障 文件系统崩溃 数据中心被破坏等等. 所以,我为大家罗列了一些开源的软件备份工具. 当为一个企业选择备份工具的时 ...
- 类Unix上5个最佳开源备份工具 Bacula/Amanda/Backupninja/Backuppc/UrBackup
当为一个企业选择备份工具的时候,你都考虑什么呢? 确定你正在部署的软件具有下面的特性 开源软件 – 你务必要选择那些源码可以免费获得,并且可以修改的软件.确信可以恢复你的数据,即使是软件供应商/项目停 ...
- Linux 和类 Unix 系统上5个最佳开源备份工具
转载:http://linux.cn/article-4623-weixin.html#rd?sukey=cbbc36a2500a2e6cb7678c4d38b691a9fa7403b259f898e ...
- Vi (Unix及Linux系统下标准的编辑器)VIM (Unix及类Unix系统文本编辑器)
Vi是Unix及Linux系统下标准的编辑器.学会它后,您将在Linux的世界里畅行无阻.基本上vi可以分为三种状态,分别是命令模式.插入模式,和底行模式. vi编辑器是所有Unix及Linux系统下 ...
- smash:一个类unix内核
前言 每一个蹩脚的C++程序员都有一颗做操作系统内核的心.我从大学毕业开始就对操作系统内核感兴趣,将其看作是术之尽头,可惜那时候一直在无忧无虑的忙着玩网游,也就搁置了.随着时间的推移,逐渐就将其淡忘了 ...
- Linux与其它类Unix内核的比较
单块结构的内核:由几个逻辑上独立的成分构成,单块结构,大多数据商用Unix变体也是单块结构: 编译并静态连接的传统Unix内核:Linux能自动按需动态地装载和卸载部分内核代码(模块),而传统Unix ...
- 【Linux】类Unix 操作系统进程监控控制工具 Supervisor
Supervisor 是一个客户端服务器系统,允许用户监控和控制类 Unix 操作系统上的进程数. 官网 http://supervisord.org 安装1. easy_install superv ...
随机推荐
- 【Linux探索之旅】第二部分第四课:文件操纵,鼓掌之中
内容简介 1.第二部分第四课:文件操纵,鼓掌之中 2.第二部分第五课预告:用户和权限 文件操纵,鼓掌之中 既然上一课我们学习了Linux中的文件组织方式,那么现在就该是玩弄,啊不,是操纵它们的时候了. ...
- JAVA字符串比较equals()和equalsIgnoreCase()差异
.用equals( )方法比較两个字符串是否相等.它具有例如以下的一般形式: boolean equals(Object str) 这里str是一个用来与调用字符串(String)对象做比較的字符串( ...
- js 加载初始化日期
//初始化加载时间 $(function(){ var now = new Date(); var year = now.getFullYear(); //年 ...
- can't connect to mysql server on localhost <10061>
需要启动MySQL服务.它可以通过两种方式来启动使用MySQL: 1.命令行模式. Win+R,进入cmd然后按Enter键.在命令行形式的输入: net start mysql56 mysql56是 ...
- 如何更改IE查看源代码菜单使用的HTML编辑器
一:打开注册表。 二:打开"HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/INTERNET EXPLORER"或"HKEY_LOCAL_MAC ...
- sizeof运营商
sizeof它是C语言的关键字,它计算对象所占用的字节数.采用sizeof通过计算对象的大小,占用的对象是一个良好的编程习惯二手. ★你得到的内置型尺寸 一些内置类型的大小会随着体系结构的不同而不同, ...
- sqlserver 无法初始化via支持库[QLVIPL.DLL]
安装数据库后,在sqlserver configuration manager, sqlserver的网络配置,有将协议 shared memory,named pipes,tcp/ip,via全部启 ...
- 单元测试React
React单元测试——十八般兵器齐上阵,环境构建篇 一个完整.优秀的项目往往离不开单元测试的环节,就 github 上的主流前端项目而言,基本都有相应的单元测试模块. 就 React 的项目来说,一套 ...
- quick-cocos2d-x游戏开发【3】——display.newSprite创建向导
游戏嘛.没有图片没有图片可以称为你的游戏,所以,我们看一下使用quick如何创建精灵的方式. quick的api精灵族的创造仍然是非常具体的解释.因此,建立非常easy. display.newSpr ...
- Jeditable 点击编辑文字插件
Jeditable - jQuery就地编辑插件使用 jeditable是一个jquery插件,它的优点是可以就地编辑,并且提交到服务器处理,是一个不可多得的就地编辑插件.(注: 就地编辑,也有称 ...