牛B的Linux shell命令

wowubuntu.com的“最牛B的 Linux Shell 命令 系列连载”介绍了许多牛B的命令,下面我又从中整理了一些牛B中的牛B的命令:

1.以SUDO运行上条命令
$ sudo !!

2. 以HTTP方式共享当前文件夹的文件
$ python -m SimpleHTTPServer

3. 快速备份一个文件
$ cp filename{,.bak}
这道命令把filename文件拷贝成filename.bak,大家应该在一些比较复杂的安装教程里面见过这样的用法。其原理就在于bash对大括号的展开操作,filename{,.bak}这一段会被展开成filename filename.bak再传给cp,于是就有了备份的命令了。
大括号在bash里面是一个排列的意义,可以试试这个:
$ echo {a,b,c}{a,b,c}{a,b,c}
将输出三个集合的全排列:
aaa aab aac aba abb abc aca acb acc
baa bab bac bba bbb bbc bca bcb bcc
caa cab cac cba cbb cbc cca ccb ccc

4. 免密码SSH登录主机
$ ssh-copy-id remote-machine
这个命令把当前用户的公钥串写入到远程主机的~/.ssh/authorized_keys内,这样下次使用ssh登录的时候,远程主机就直接根据这串密钥完成身份校验,不再询问密码了。前提是你当前用户有生成了公钥,默认是没有的,先执行ssh-keygen试试吧!
这个命令如果用手工完成,是这样的:
your-machine$ scp ~/.ssh/identity.pub remote-machine:
your-machine$ ssh remote-machine
remote-machine$ cat identity.pub >> ~/.ssh/authorized_keys
如果你想删掉远程主机上的密钥,直接打开authorized_keys,搜索你的用户名,删除那行,即可。

5. 抓取LINUX桌面的视频
$ ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
我们在一些视频网站上看到别人的3D桌面怎么怎么酷的视频,通常就是这么来的,ffmpeg可以直接解码X11的图形,并转换到相应输出格式。
ffmpeg的通常用法是,根据一堆参数,输出一个文件,输出文件通常放最后,下面解析下几个参数:
-f x11grab 指定输入类型。因为x11的缓冲区不是普通的视频文件可以侦测格式,必须指定后ffmpeg才知道如何获得输入。
-s wxga 设置抓取区域的大小。wxga是1366*768的标准说法,也可以换成-s 800×600的写法。
-r 25 设置帧率,即每秒抓取的画面数。
-i :0.0 设置输入源,本地X默认在0.0
-sameq 保持跟输入流一样的图像质量,以用来后期处理。

6. 实时某个目录下查看最新改动过的文件
      watch -d -n 1 'df; ls -FlAt /path'
  
在使用这条命令时你需要替换其中的 /path 部分,watch 是实时监控工具,-d 参数会高亮显示变化的区域,-n 1 参数表示刷新间隔为 1 秒。
df; ls -FlAt /path 运行了两条命令,df 是输出磁盘使用情况,ls -FlAt 则列出 /path 下面的所有文件。
ls -FlAt 的参数详解:
-F 在文件后面加一个文件符号表示文件类型,共有 */=>@| 这几种类型,* 表示可执行文件,/ 表示目录,= 表示接口( sockets) ,> 表示门, @ 表示符号链接, | 表示管道。
-l 以列表方式显示
-A 显示 . 和 ..
-t 根据时间排序文件

7. 通过 SSH 挂载远程主机上的文件夹
sshfs name@server:/path/to/folder /path/to/mount/point
这条命令可以让你通过 SSH 加载远程主机上的文件系统为本地磁盘,前提是你需要安装 FUSE 及 sshfs 这两个软件。
译者注:关于 sshfs 实际上我之前写过一篇文章介绍过,详见”在 Ubuntu 上使用 sshfs 映射远程 ssh 文件系统为本地磁盘“。
卸载的话使用 fusermount 命令:
fusermount -u /path/to/mount/point

8. 显示当前目录中所有子目录的大小
      du -h --max-depth=1

9. 查看ASCII码表
man 7 ascii
很多人初学编程都会接触到ascii码的概念,有时候为了查某个符号的ascii值,可能还得翻箱倒柜找出当年的课本?Linux Manpage里面其实包含了很多类似的实用资料,上述命令就能很详细的方式解释ascii编码,当然这里还有在线版。
man命令的第二个参数是区域码,用来区分索引词的范围,比如printf,在C标准库里面的printf跟bash当中的printf是不同的,前者的查询是man 3 printf,后者是man 1 printf。如果这个区域码省略,就会从1开始搜索,直到找到为止。
命令man man可以看到详细的解释。
manpages里面还有一些有趣而且实用的资料,可能鲜为人知:
man 1 intro – 一篇对从未接触过Linux的用户的简明教程。
man 2 syscalls – 内核系统请求的列表,按内核版本注释分类,系统编程必备。
man 2 select_tut – 关于select()系统请求的教程。
man 3 string – 在头文件内的所有函数。
man 3 stdio – 关于头文件的使用,标准输入/输出库的说明。
man 3 errno – 所有errorno的取值及说明。(C语言内类似其他语言的异常告知机制) 
man 4 console_codes – Linux的终端控制码及其使用解释。
man 4 full – 介绍/dev/full这个总是处于”满”状态的磁盘。(对应/dev/null这个总是空的设备) 
man 5 proc – 介绍/proc下的文件系统。
man 5 filesystems – 各种Linux文件系统。
第7区里面的资料通常最酷:
man 7 bootparam – 详细解释内核启动参数。
man 7 charsets – 解释各种语言的编码集。(gbk,gb2312等) 
man 7 glob – 解释glob文件名管理机制的工作过程。
man 7 hier – 解释Linux文件系统结构各个部分的作用。
man 7 operator – C语言的运算符的列表。
man 7 regex – 介绍正则表达式。
man 7 suffixes – 常见文件后缀名的列表跟解释。
man 7 time – Linux的时钟机制解释。
man 7 units – 数值单位及其数值的解释。
man 7 utf8 – 描述UTF-8编码。
man 7 url – 解释URL、URI、URN等的标准。

10. 远程关掉一台WINDOWS机器
net rpc shutdown -I IP_ADDRESS -U username%password
Windows平台上的net命令是比较强大的,因为其后台是一个RPC类的系统服务,大家应该看过win下用net use file:///C|/ip/ipc%24 *这样一个命令建立IPC空连接,入侵主机的事情。
Linux下的net命令是samba组件的程序,通常包含在smbclient内,可以跟windows主机的文件、打印机共享等服务进行通讯,但是也支持rpc命令。
上述命令就是在远程Windows主机上执行了shutdown命令。当然这不一定成功,关系到win主机上面的安全设置。net命令能够控制到win主机就是了。


11. 利用中间管道嵌套使用SSH
ssh -t host_A ssh host_B
如果目标机器host_B处于比较复杂的网络环境,本机无法直接访问,但另外一台host_A能够访问到host_B,而且也能被本机访问到,那上述命令就解决了方便登录host_B的问题。
但理论上这个过程是可以无限嵌套的,比如:
ssh -t host1 ssh -t host2 ssh -t host3 ssh -t host4 …

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值