1. 以sudo运行上条命令 sudo !!(两个感叹号其实是bash的一个特性,称为时间引用符,引用前一个命令,参考history命令) 输入命令后发现忘记sudo后可以使用Ctrl+p和Ctrl+a快速输入sudo命令
  2. 以HTTp方式共享当前文件夹的文件: python -m SimpleHTTPServer(启用Python的SimpleHTTPServer模块,简单的跨平台传文件的方法,命令执行后将在本机8000端口开放HTTP服务,打开http://ip:8000即打开一个目录列表,点击即可下载)
  1. 在以普通用户打开的VIM当中保存一个ROOT用户文件 :w !sudo tee %(命令:w!{cmd},让vim执行一个外部命令{cmd},然后把当前缓冲区的内容从stdin传入) #tee是一个把stdin保存到文件的小工具;%是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径

  2. 切换回上一个目录 cd -(cd $OLDPWD命令的缩写,bash的固定变量$OLDPWD总保存着之前一个目录的路径)

  3. 替换上一个命令中的一个短语 \^foo\^bar\^(又是一个事件引用符(even designator),提高效率,但在脚本中用这个方法可能花间很多;原始命令:!!:s/foo/bar/)

  4. 快速备份一个文件 cp filename{,.bak} #大括号在bash里面是一个排列的意义

  5. 免密码SSH登录主机

    1
    2
    3
    4
    5
    6
    
    ssh-copy-id remote-machine(这个命令将当前用户的公钥写入到远程主机的~/.ssh/authorized_keys内;前提是你当前用户有生成的公钥,默认是没有的,先执行ssh-keygen生成当前用户公钥)
    #ssh-keygen生成公钥:
    (1)your-machine$scp ~/.ssh/identity.pub remote-machine:
    (2)your-machine$ssh remote machine
    (3)remote-machine$cat identity.pub >> ~/.ssh/authorized_keys
    #如果想删除远程主机上的密钥,直接打开authorized_keys,搜索你的用户名,删除就可。
    
  6. 抓取linux桌面的视频 ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

  7. command (会打开一个指定的编辑器,里面是你刚刚输入的命令) #如果你喜欢别的编辑器,可以在~/.bashrc里面放上比如export EDICTOR=nano的命令;另外一个修改命令的方法是使用fc命令(Fix Command)

  8. 清空或创建一个文件 \>file.txt

  9. 用ssh创建端口转发通道

    1
    2
    3
    
    ssh -N -L2001:remotehost:80 user@somemachine(开启2001端口,对本机2001端口的请求通过some machine作为跳板,转到remote host的80端口上,在使用时注意对象的转换,比较抽象)
    e.g.:ssh -f -N -L 0.0.0.0:443:twitter.com:443 shell.cjb.net
    ssh -f -N -L 0.0.0.0:twitter.com:80 shell.cjb.net
    
  10. 重置终端 reset

  11. 在午夜的时候执行某命令 echo cmd | at midnighe(at这个组件,通常跟cron相提并论,不过at主要用于定时一次性任务,而core定时周期性任务,at的参数比较人性化)

  12. 远程传送麦克风语音 dd if=/dev/dsp | ssh username@host dd of=/dev/dsp(事项一个喊话器的功能) #/dev/dsp是linux下声卡的文件映射(Digital Signal Proccessor)

  13. 映射一个内存目录 mount -t tmpfs -o size=1024m tmpfs /mnt/ram(这个命令开了一块1G内存来当前目录用)

  14. 用DIFF对比远程文件跟本地文件 ssh user@host cat /path/to/remotefile | diff /path/to/localfile -(-指从stdin读入)

  15. 查看系统中占用端口的进程 netstat -thlnp -t:显示tcp连接信息 -u:显示udp连接信息 -l:显示监听状态的端口 -n:直接显示ip,不做名称转换 -p:显示相应进程pid及名称

  16. 运行前一个shell命令,同时用“bar”替换掉命令行中的每一个“foo” !!:gs/foo/bar(gs表示执行)***

  17. 实时某个目录下查看最新改动过的文件 watch -d -n 1 'df; ls -FIAt/path'(watch是实时监控工具)

  18. 通过ssh挂载远程主机上的文件夹 sshfs name@server:/path/to/folder /path/to/mount/point #(SSH 是一个强大且安全的工具,我们除了可以用它来远程管理主机外,还可以通过它建立 SSH tunnel 作 Proxy 用,远程传输文件等等。而这里我想要介绍另外一个功能,那就是结合 sshfs 这个工具可以把远程主机的文件系统映射到本地主机上,透过 SSH 把远程文件系统挂载到本机上,这样我们可以不必使用 scp 工具就可以做到直接复制及删除远程主机的文件了,就像操作本地磁盘一样方便。) 前提是你需要安装fuse及sshfs这两个软件。 卸载的话使用fusermount命令 fusermount -u /path/to/mount/point

  19. 通过dns来读取wikipedia的词条: ***:dig +short txt <keyword>.wp.dg.cx

  20. 用 wget的递归方式下载整个网站

  21. 清屏 ctrl+l

  22. 用telnet看片 telnet towel.blinkenlights.nl

  23. 显示消耗内存最多的10个运行中的进程,以内存使用量排序 ps aux | sort -nk +4 | tail

  24. 执行一条命令但不保存到history中 <space> command

  25. 赋值最后使用的命令中的参数 alt + . (or ESC + .) (只能用于工作中于shell的emacs编辑模式)