自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

天外飛仙級別的Linux Shell命令(第二彈)

系統(tǒng) Linux
Linux Shell命令實在是太多了,平時進行系統(tǒng)應用和管理的時候,我們只要掌握很少幾條便可以達到高效工作的效果。本文編譯自commandlinefu.com的系列文章,這系列文章從數(shù)以萬計的Linux Shell命令中選出了一些最常用、最高效的命令。

上一篇文章中介紹的8條天外飛仙級別的Linux Shell命令只是眾多命令中節(jié)選的一小部分,本文將繼續(xù)介紹這些非常簡短而又非常有用的命令。所有的命令編譯自commandlinefu.com ( 應該是 Catonmat ) 的系列文章 Top Ten One-Liners from CommandLineFu Explained,這個系列文章從其中數(shù)以萬計的命令中選出了這些長度只有一行的精簡命令。

1.用你最喜歡的編輯器來敲命令

command <CTRL-x CTRL-e>

在已經(jīng)敲完的命令后按 <CTRL-x CTRL-e> ,會打開一個你指定的編輯器(比如vim,通過環(huán)境變量$EDITOR指定),里面就是你剛輸入的命令,然后愛怎么編輯就怎么編輯吧,特別是那些參數(shù)異常復雜的程序,比如mencoder/ffmpeg,一個命令動輒3、4行的,要修改其中的參數(shù),這個方法最合適不過了,保存退出后自動執(zhí)行這個程序。

實際上這是readline庫的功能,在默認情況下,bash使用的是emacs模式的命令行操作方式, <CTRL-x CTRL-e>是調(diào)用這個功能的一個綁定。如果你習慣使用vi模式,按 <ESC v> 可以實現(xiàn)同樣功能。

如果你喜歡別的編輯器,可以在~/.bashrc里面放上比如export EDITOR=nano的命令。

另外一個修改命令的方法是使用fc命令(Fix Command),在編輯器里面打開上一句命令。我們的第一輯連載提過一個^foo^bar^命令可以用fc來實現(xiàn):fc -s foo=bar。

2.清空或創(chuàng)建一個文件

> file.txt

>在shell里面是標準輸出重定向符,即把(前部個命令的)命令行輸出轉(zhuǎn)往一個文件內(nèi),但這里沒有”前部命令”,輸出為空,于是就覆蓋(或創(chuàng)建)成一個空文件了。

有些腳本的寫法是:>file.txt,因為:是bash默認存在的空函數(shù)。

單純創(chuàng)建文件也可以用$touch file.txt,touch本來是用作修改文件的時間戳,但如果文件不存在,就自動創(chuàng)建了。

3.用SSH創(chuàng)建端口轉(zhuǎn)發(fā)通道

ssh -N -L2001:remotehost:80 user@somemachine

這個命令在本機打開了2001端口,對本機2001端口的請求通過somemachine作為跳板,轉(zhuǎn)到remotehost的80端口上。

實現(xiàn)效果跟術(shù)語反向代理是相似的,實際上就是端口轉(zhuǎn)發(fā),注意上面的描述涉及了3臺主機,但當然somemachine可以變成localhost。

這個命令比較抽象,但有時候是很有用的,比如因為眾所周知的原因國內(nèi)的IP的80端口無法使用,又或者公司的防火墻只給外網(wǎng)開了ssh端口,需要訪問內(nèi)部服務器一個web應用,以及需要訪問某些限定了來源IP的服務,就可以用上這個方法了。

舉一個具體例子,運行:

ssh -f -N -L 0.0.0.0:443:twitter.com:443 shell.cjb.net
ssh -f -N -L 0.0.0.0:80:twitter.com:80 shell.cjb.net

然后在/etc/hosts里面添加127.0.0.1 twitter.com,好吧剩下的你懂的。

當然通常做這個功能的反向代理,應該要用squid、nginx之類,ssh就算是輕量級的嘗試吧!

4.重置終端

reset

如果你試過不小心cat了某個二進制文件,很可能整個終端就傻掉了,可能不會換行,沒法回顯,大堆亂碼之類的,這時候敲入reset回車,不管命令有沒有顯示,就能回復正常了。

實際上reset命令只是輸出了一些特殊字符,我們看BusyBox里面最簡單的reset程序的實現(xiàn):

printf(“\033c\033(K\033[J\033[0m\033[?25h”);

輸出的這些字符對Shell是有特殊意義的:

\033c: “ESC c” – 發(fā)送重置命令;

\033(K: “ESC ( K” – 重載終端的字符映射;

\033[J: “ESC [ J” – 清空終端內(nèi)容;

\033[0m: “ESC [ 0 m” – 初始化字符顯示屬性;

\033[?25h: “ESC [ ? 25 h” – 讓光標可見;

其中字符顯示屬性經(jīng)常用來設定打印字符的顏色等,可參考這個博文

5.在午夜的時候執(zhí)行某命令

echo cmd | at midnight

說的就是at這個組件,通常跟cron相提并論,不過at主要用于定時一次性任務,而cron定時周期性任務。

at的參數(shù)比較人性化,跟英語語法一樣,可以tomorrow, next week之類的,詳細的查看手冊man at。

6.遠程傳送麥克風語音

dd if=/dev/dsp | ssh username@host dd of=/dev/dsp

沒錯就是實現(xiàn)一個喊話器的功能。

/dev/dsp是Linux下聲卡的文件映射(Digital Signal Proccessor),從其中讀數(shù)據(jù)就是錄音,往里面寫數(shù)據(jù)就是播放,相當簡單!

dd是常用的數(shù)據(jù)拷貝程序,如果不同時指定if、of,就直接使用stdin/stdout來傳輸。

如果你沒有遠程主機,可以試試這樣:

dd if=/dev/dsp of=/dev/dsp

直接回放麥克風的聲音,只是有一點延時。

但是如果有別的程序正在使用聲卡,這個方法就不湊效了,因為一般的聲卡都不允許多個音頻流同時處理,可以借用alsa組件的工具,arecord跟aplay:

arecord | ssh username@host aplay

本地回放就是:

arecord | aplay

如果你想嚇嚇別人:

cat /dev/urandom | ssh username@host aplay

7.映射一個內(nèi)存目錄

mount -t tmpfs -o size=1024m tmpfs /mnt/ram

這個命令開了一塊1G內(nèi)存來當目錄用。不過放心,如果里面沒文件,是不會占用內(nèi)存的,用多少占多少。

不過一般來說沒必要手動掛載,因為多數(shù)發(fā)行版都會在fstab內(nèi)預留了一個內(nèi)存目錄,掛載在/dev/shm,直接使用即可;

最常見的用途是用內(nèi)存空間來放Firefox的配置,可以讓慢吞吞的FF快很多,參見Shellex的博文:用tmpfs讓Firefox在內(nèi)存中飛馳,以及后來的改進:用tmpfs讓Firefox在內(nèi)存中飛馳II,其中提到的腳本來自speeding up firefox with tmpfs and automatic rsync

那個破爛LinuxQQ也可以用這個方法,減少因為大量磁盤IO導致的問題。

8.用DIFF對比遠程文件跟本地文件

ssh user@host cat /path/to/remotefile | diff /path/to/localfile -

diff通常的用法是從參數(shù)讀入兩個文件,而命令里面的-則是指從stdin讀入了。

善用ssh可以讓web開發(fā)減少很多繁瑣,還有比如sshfs,可以從編輯-上傳-編輯-上傳的人工循環(huán)里面解脫出來。

9.查看系統(tǒng)中占用端口的進程

netstat -tulnp

Netstat是很常用的用來查看Linux網(wǎng)絡系統(tǒng)的工具之一,這個參數(shù)可以背下來:

-t: 顯示TCP鏈接信息

-u: 顯示UDP鏈接信息

-l: 顯示監(jiān)聽狀態(tài)的端口

-n: 直接顯示ip,不做名稱轉(zhuǎn)換

-p: 顯示相應的進程PID以及名稱(要root權(quán)限)

如果要查看關(guān)于sockets更詳細占用信息等,可以使用lsof工具。

原文鏈接:最牛B的Linux Shell命令 系列連載(二) 作者: @boypt

【編輯推薦】

  1. 天外飛仙級別的Linux Shell命令
  2. 十個你所不知道的Linux命令盤點
  3. 超實用的Linux/Unix快捷鍵大匯總(開發(fā)、管理)

 

責任編輯:yangsai 來源: wowubuntu.com
相關(guān)推薦

2010-08-27 18:01:17

Linux Shell

2010-10-14 14:58:36

SUSE Linux

2017-01-15 15:20:47

Linux編程log

2020-04-29 21:54:46

操作系統(tǒng)核心概念

2019-12-01 22:59:43

Linux shell命令進程

2021-07-11 06:43:29

服務端Node路由

2011-07-18 17:39:31

ORACLE操作系統(tǒng)

2018-03-05 16:36:18

戴爾

2010-06-23 17:34:03

Linux Bash

2010-06-23 17:37:14

Linux Bash

2013-09-10 10:20:12

數(shù)據(jù)大數(shù)據(jù)大數(shù)據(jù)應用

2012-10-16 09:33:18

iOS最年輕開發(fā)者

2016-11-02 16:50:59

安騎士、web應用防火

2010-06-23 17:16:33

Linux Bash

2020-03-24 08:32:24

vue作用域前端

2010-06-23 16:31:10

Linux Bash

2010-06-23 17:29:07

Linux Bash

2019-12-04 08:44:59

前后端分離開發(fā)

2024-07-22 11:48:42

2025-02-27 09:40:00

點贊
收藏

51CTO技術(shù)棧公眾號