一些强大的命令

一些强大的命令

再分享一些可能你不知道的shell用法和脚本,简单&强大!

在阅读以下部分前,强烈建议读者打开一个shell实验,这些都不是shell教科书里的大路货哦:)

  • <span>!$</span><br> <code>!$&#x662F;&#x4E00;&#x4E2A;&#x7279;&#x6B8A;&#x7684;&#x73AF;&#x5883;&#x53D8;&#x91CF;&#xFF0C;&#x5B83;&#x4EE3;&#x8868;&#x4E86;&#x4E0A;&#x4E00;&#x4E2A;&#x547D;&#x4EE4;&#x7684;&#x6700;&#x540E;&#x4E00;&#x4E2A;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x5982;&#xFF1A;&#x4F60;&#x53EF;&#x80FD;&#x4F1A;&#x8FD9;&#x6837;&#xFF1A;<br> $mkdir mydir<br> $mv mydir yourdir</code><br> $cd yourdir<br> &#x53EF;&#x4EE5;&#x6539;&#x6210;&#xFF1A;<br> $mkdir mydir<br> $mv !$ yourdir<br> $cd !$

  • sudo !!
    以root的身份执行上一条命令 。
    场景举例:比如Ubuntu里用 apt-get安装软件包的时候是需要root身份的,我们经常会忘记在 apt-get前加 sudo。每次不得不加上 sudo再重新键入这行命令,这时可以很方便的用 sudo !!完事。
    (陈皓注:在shell下,有时候你会输入很长的命令,你可以使用!xxx来重复最近的一次命令,比如,你以前输入过,vi /where/the/file/is, 下次你可以使用 !vi 重得上次最近一次的vi命令。)

  • cd &#x2013;
    回到上一次的目录 。
    场景举例:当前目录为 /home/a,用 cd ../b切换到 /home/b。这时可以通过反复执行 cd &#x2013;命令在 /home/a/home/b之间来回方便的切换。
    (陈皓注:cd ~ 是回到自己的Home目录,cd ~user,是进入某个用户的Home目录)

  • ‘ALT+.’ or ‘ .’
    热建alt+. 或 esc+. 可以把上次命令行的参数给重复出来。

  • ^old^new
    替换前一条命令里的部分字符串。
    场景: echo "wanderful",其实是想输出 echo "wonderful"。只需要 ^a^o就行了,对很长的命令的错误拼写有很大的帮助。(陈皓注:也可以使用!!:gs/old/new)

  • du -s * | sort -n | tail
    列出当前目录里最大的10个文件。

  • :w !sudo tee %
    在vi中保存一个只有root可以写的文件

  • date -d@1234567890
    时间截转时间

  • file.txt
    创建一个空文件,比touch短。

  • mtr coolshell.cn
    mtr命令比traceroute要好。

  • 在命令行前加空格,该命令不会进入history里。

  • echo “ls -l” | at midnight
    在某个时间运行某个命令。

  • curl -u user:pass -d status=”Tweeting from the shell” http://twitter.com/statuses/update.xml
    命令行的方式更新twitter。

  • curl -u username –silent “https://mail.google.com/mail/feed/atom" | perl -ne ‘print “\t” if //; print “$2\n” if /< titlename>(.*)< >/;’
    检查你的gmail未读邮件

  • ps aux | sort -nk +4 | tail
    列出头十个最耗内存的进程

  • man ascii
    显示ascii码表。
    场景:忘记ascii码表的时候还需要google么?尤其在天朝网络如此”顺畅”的情况下,就更麻烦在GWF多应用一次规则了,直接用本地的 man ascii吧。

  • ctrl-x e
    快速启动你的默认编辑器(由变量$EDITOR设置)。

  • netstat &#x2013;tlnp
    列出本机进程监听的端口号。(陈皓注:netstat -anop 可以显示侦听在这个端口号的进程)

  • tail -f /path/to/file.log | sed '/^Finished: SUCCESS$/ q'
    当file.log里出现Finished: SUCCESS时候就退出tail,这个命令用于实时监控并过滤log是否出现了某条记录。

  • ssh user@server bash < /path tolocalscriptshcode> <br> &#x5728;&#x8FDC;&#x7A0B;&#x673A;&#x5668;&#x4E0A;&#x8FD0;&#x884C;&#x4E00;&#x6BB5;&#x811A;&#x672C;&#x3002;&#x8FD9;&#x6761;&#x547D;&#x4EE4;&#x6700;&#x5927;&#x7684;&#x597D;&#x5904;&#x5C31;&#x662F;&#x4E0D;&#x7528;&#x628A;&#x811A;&#x672C;&#x62F7;&#x5230;&#x8FDC;&#x7A0B;&#x673A;&#x5668;&#x4E0A;&#x3002;

  • ssh user@host cat /path/to/remotefile | diff /path/to/localfile -<br> &#x6BD4;&#x8F83;&#x4E00;&#x4E2A;&#x8FDC;&#x7A0B;&#x6587;&#x4EF6;&#x548C;&#x4E00;&#x4E2A;&#x672C;&#x5730;&#x6587;&#x4EF6;

  • net rpc shutdown -I ipAddressOfWindowsPC -U username%password<br> &#x8FDC;&#x7A0B;&#x5173;&#x95ED;&#x4E00;&#x53F0;Windows&#x7684;&#x673A;&#x5668;

  • <code>screen -d -m -S some_name ping my_router</code><br> &#x540E;&#x53F0;&#x8FD0;&#x884C;&#x4E00;&#x6BB5;&#x4E0D;&#x7EC8;&#x6B62;&#x7684;&#x7A0B;&#x5E8F;&#xFF0C;&#x5E76;&#x53EF;&#x4EE5;&#x968F;&#x65F6;&#x67E5;&#x770B;&#x5B83;&#x7684;&#x72B6;&#x6001;&#x3002;<code>-d -m</code>&#x53C2;&#x6570;&#x542F;&#x52A8;&#x201C;&#x5206;&#x79BB;&#x201D;&#x6A21;&#x5F0F;&#xFF0C;<code>-S</code>&#x6307;&#x5B9A;&#x4E86;&#x4E00;&#x4E2A;session&#x7684;&#x6807;&#x8BC6;&#x3002;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>-R</code>&#x547D;&#x4EE4;&#x6765;&#x91CD;&#x65B0;&#x201C;&#x6302;&#x8F7D;&#x201D;&#x4E00;&#x4E2A;&#x6807;&#x8BC6;&#x7684;session&#x3002;&#x66F4;&#x591A;&#x7EC6;&#x8282;&#x8BF7;&#x53C2;&#x8003;screen&#x7528;&#x6CD5;&#xA0;<code>man screen</code>&#x3002;

  • <code>wget --random-wait -r -p -e robots=off -U mozilla&#xA0;http://www.example.com</code><br> &#x4E0B;&#x8F7D;&#x6574;&#x4E2A;www.example.com&#x7F51;&#x7AD9;&#x3002;&#xFF08;&#x6CE8;&#xFF1A;&#x522B;&#x592A;&#x8FC7;&#x5206;&#xFF0C;&#x5927;&#x90E8;&#x5206;&#x7F51;&#x7AD9;&#x90FD;&#x6709;&#x9632;&#x722C;&#x529F;&#x80FD;&#x4E86;&#xFF1A;&#xFF09;&#xFF09;

  • <code>curl ifconfig.me</code><br> &#x5F53;&#x4F60;&#x7684;&#x673A;&#x5668;&#x5728;&#x5185;&#x7F51;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x8FD9;&#x4E2A;&#x547D;&#x4EE4;&#x67E5;&#x770B;&#x5916;&#x7F51;&#x7684;IP&#x3002;

  • convert input.png -gravity NorthWest -background transparent -extent 720&#xD7;200&#xA0; output.png<br> &#x6539;&#x4E00;&#x4E0B;&#x56FE;&#x7247;&#x7684;&#x5927;&#x5C0F;&#x5C3A;&#x5BF8;

  • <code>lsof &#x2013;i</code><br> &#x5B9E;&#x65F6;&#x67E5;&#x770B;&#x672C;&#x673A;&#x7F51;&#x7EDC;&#x670D;&#x52A1;&#x7684;&#x6D3B;&#x52A8;&#x72B6;&#x6001;&#x3002;

  • vim scp://username@host//path/to/somefile<br> vim&#x4E00;&#x4E2A;&#x8FDC;&#x7A0B;&#x6587;&#x4EF6;

  • <code>python -m SimpleHTTPServer</code><br> &#x4E00;&#x53E5;&#x8BDD;&#x5B9E;&#x73B0;&#x4E00;&#x4E2A;HTTP&#x670D;&#x52A1;&#xFF0C;&#x628A;&#x5F53;&#x524D;&#x76EE;&#x5F55;&#x8BBE;&#x4E3A;HTTP&#x670D;&#x52A1;&#x76EE;&#x5F55;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>http://localhost:8000</code>&#x8BBF;&#x95EE; &#x8FD9;&#x4E5F;&#x8BB8;&#x662F;&#x8FD9;&#x4E2A;&#x661F;&#x7403;&#x4E0A;&#x6700;&#x7B80;&#x5355;&#x7684;HTTP&#x670D;&#x52A1;&#x5668;&#x7684;&#x5B9E;&#x73B0;&#x4E86;&#x3002;

  • <code>history | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[a] " " CMD[a]/count*100 "% " a }' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10</code><br> (&#x9648;&#x7693;&#x6CE8;&#xFF1A;&#x6709;&#x70B9;&#x590D;&#x6742;&#x4E86;&#xFF0C;history|awk &#x2018;{print $2}&#x2019;|awk &#x2018;BEGIN {FS=&#x201D;|&#x201D;} {print $1}&#x2019;|sort|uniq -c|sort -rn|head -10)<br> &#x8FD9;&#x884C;&#x811A;&#x672C;&#x80FD;&#x8F93;&#x51FA;&#x4F60;&#x6700;&#x5E38;&#x7528;&#x7684;&#x5341;&#x6761;&#x547D;&#x4EE4;&#xFF0C;&#x7531;&#x6B64;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x6D1E;&#x5BDF;&#x4F60;&#x662F;&#x4E00;&#x4E2A;&#x4EC0;&#x4E48;&#x7C7B;&#x578B;&#x7684;&#x7A0B;&#x5E8F;&#x5458;&#x3002;

  • tr -c &#x201C;[:digit:]&#x201D; &#x201D; &#x201D; < /dev urandom dd cbs="$COLUMNS" conv="unblock" GREP_COLOR="&#x201D;1;32&#x2033;" grep color span><br> &#x60F3;&#x770B;&#x770B;Marix&#x7684;&#x5C4F;&#x5E55;&#x6548;&#x679C;&#x5417;&#xFF1F;&#xFF08;&#x4E0D;&#x662F;&#x5F88;&#x50CF;&#xFF0C;&#x4F46;&#x4E5F;&#x5F88;Cool!&#xFF09;

&#x770B;&#x4E0D;&#x61C2;&#x884C;&#x4EE3;&#x7801;&#xFF1F;&#x6CA1;&#x5173;&#x7CFB;&#xFF0C;&#x7CFB;&#x7EDF;&#x7684;&#x5B66;&#x4E60;&#x4E00;&#x4E0B;*nix shell&#x811A;&#x672C;&#x5427;&#xFF0C;&#x529B;&#x8350;<a href="http://www.ituring.com.cn/book/980" rel="noopener noreferrer">&#x300A;Linux&#x547D;&#x4EE4;&#x884C;&#x4E0E;Shell&#x811A;&#x672C;&#x7F16;&#x7A0B;&#x5927;&#x5168;&#x300B;</a>&#x3002;

&#x6700;&#x540E;&#x8FD8;&#x662F;&#x90A3;&#x53E5;Shell&#x7684;&#x81F3;&#x7406;&#x540D;&#x8A00;&#xFF1A;(&#x9648;&#x7693;&#x6CE8;&#xFF1A;&#x4E0B;&#x9762;&#x7684;&#x90A3;&#x4E2A;&#x9A6C;&#x514B;&#x676F;&#x5F88;&#x4E0D;&#x9519;&#x554A;&#xFF0C;<a href="http://404null.com/" rel="noopener noreferrer">404null.com</a>&#x633A;&#x6709;&#x610F;&#x601D;&#x7684;)

<span>&#x201C;Where there is a shell&#xFF0C;there is a way!&#x201D;</span>