11 個不多人知道但頗有用的 Linux 命令

Linux命令行吸引了大多數Linux愛好者。一個正常的Linux用戶通常掌握大約50-60個命令來處理每日的任務。Linux命令和它們的轉換對於Linux用戶Shell腳本程序員管理員來講是最有價值的寶藏。有些Linux命令不多人知道,但無論你是新手仍是高級用戶,它們都很是方便有用。html

少有人知道的Linux命令python

這篇文章的目的是介紹一些少有人知的Linux命令,它們必定會高效地幫你管理你的桌面/服務器。linux

Ley
Ley
翻譯於 1年前

1人頂程序員

 翻譯的不錯哦! 算法

1. sudo !!命令

沒有特定輸入sudo命令而運行,將給出沒有權限的錯誤。那麼,你不須要重寫整個命令,僅僅輸入'!!'就能夠抓取最後的命令。 shell

?
1
2
3
4
5
6
$ apt-get update
 
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory ( /var/lib/dpkg/ ), are you root?
?
1
2
3
4
5
6
7
8
9
$ sudo !!
 
sudo apt-get update
[ sudo ] password for server:
..
Fetched 474 kB in 16s (28.0 kB /s )
Reading package lists... Done
server@localhost:~$

2. python命令

下面的命令生產一個經過HTTP顯示文件夾結構樹的簡單網頁,能夠經過瀏覽器在端口8000訪問,直到發出中斷信號。 apache

?
1
# python -m SimpleHTTPServer
Ley
Ley
翻譯於 1年前

3人頂vim

 翻譯的不錯哦! 瀏覽器

3. mtr命令

咱們大多數都熟悉pingtraceroute。那對於把兩個命令的功能合二爲一的mtr命令呢。若是mtr沒在你的機子上安裝,apt或者yum須要的包。 服務器

?
1
$ sudo apt-get install mtr (On Debian based Systems)
?
1
# yum install mtr (On Red Hat based Systems)
如今運行mtr命令,開始查看mtr運行的主機和google.com直接的網絡鏈接。
?
1
# mtr google.com

mtr命令

Ley
Ley
翻譯於 1年前

1人頂

 翻譯的不錯哦!

4. Ctrl+x+e命令

這個命令對於管理員和開發者很是有用。爲了使天天的任務自動化,管理員須要經過輸入vivimnano等打開編輯器。

僅僅從命令行快速的敲擊「Ctrl-x-e」,就能夠在編輯器中開始工做了。

5. nl命令

nl命令」添加文件的行數。一個叫作'one.txt'的文件,其每行的內容是(FedoraDebianArchSlackSuse),給每行添加行號。首先使用cat命令顯示「one.txt」的文件內容。

?
1
2
3
4
5
6
7
# cat one.txt
 
fedora
debian
arch
slack
suse
如今運行「nl命令」,以添加行號的方式來顯示。
?
1
2
3
4
5
6
7
# nl one.txt
 
1 fedora
2 debian
3 arch
4 slack
5 suse
Ley
Ley
翻譯於 1年前

1人頂

 翻譯的不錯哦!

6. shuf命令

「Shut」命令隨機從一個文件文件夾中選擇行/文件/文件夾。首先使用ls命令來顯示文件夾的內容。

?
1
2
3
# ls
 
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
?
1
2
3
4
5
6
7
8
9
10
#  ls | shuf (shuffle Input)
 
Music
Documents
Templates
Pictures
Public
Desktop
Downloads
Videos
?
1
2
3
#  ls | shuf -n1 (pick on random selection)
 
Public
?
1
2
3
# ls | shuf -n1
 
Videos
?
1
2
3
# ls | shuf -n1
 
Templates
?
1
2
3
# ls | shuf -n1
 
Downloads
注意:你能夠把‘ n1’替換成‘ n2’來輸出兩個隨機選擇或者使用 n3n4等數字輸出其餘任意的隨機選擇。

7. ss命令

ss」表示socket統計。這個命令調查socket,顯示相似netstat命令的信息。它能夠比其餘工具顯示更多的TCP和狀態信息。

?
1
2
3
4
5
6
7
8
9
# ss
 
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port  
ESTAB      0      0           192.168.1.198:41250        *.*.*.*:http   
CLOSE-WAIT 1      0               127.0.0.1:8000             127.0.0.1:41393  
ESTAB      0      0           192.168.1.198:36239        *.*.*.*:http   
ESTAB      310    0               127.0.0.1:8000             127.0.0.1:41384  
ESTAB      0      0           192.168.1.198:41002       *.*.*.*:http   
ESTAB      0      0               127.0.0.1:41384            127.0.0.1:8000
Ley
Ley
翻譯於 1年前

1人頂

 翻譯的不錯哦!

8. last命令

last」命令顯示的是上次登陸用戶的歷史信息。這個命令經過搜索文件「/var/log/wtmp」,顯示logged-inlogged-out及其tty‘s的用戶列表。

?
1
2
3
4
5
6
7
8
9
10
11
12
#  last
server   pts /0        :0               Tue Oct 22 12:03   still logged in  
server   tty8         :0               Tue Oct 22 12:02   still logged in  
...
(unknown tty8         :0               Tue Oct 22 12:02 - 12:02  (00:00)   
server   pts /0        :0               Tue Oct 22 10:33 - 12:02  (01:29)   
server   tty7         :0               Tue Oct 22 10:05 - 12:02  (01:56)   
(unknown tty7         :0               Tue Oct 22 10:04 - 10:05  (00:00)   
reboot   system boot  3.2.0-4-686-pae  Tue Oct 22 10:04 - 12:44  (02:39)   
 
wtmp begins Fri Oct  4 14:43:17 2007

9. curl ifconfig.me

那麼如何獲得你的外部IP地址呢?使用google?那麼這個命令就在你的終端輸出你的外部IP地址。

?
1
# curl ifconfig.me
注意:你可能沒有按照curl包,你須要 apt/yum來按照包。

10. tree命令

以樹式的格式獲得當前文件夾的結構。

?
1
# tree
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.
|-- Desktop
|-- Documents
|   `-- 37.odt
|-- Downloads
|   |-- attachments.zip
 
|   |-- ttf-indic-fonts_0.5.11_all.deb
|   |-- ttf-indic-fonts_1.1_all.deb
|   `-- wheezy-nv- install .sh
|-- Music
|-- Pictures
|   |-- Screenshot from 2013-10-22 12:03:49.png
|   `-- Screenshot from 2013-10-22 12:12:38.png
|-- Public
|-- Templates
`-- Videos
 
10 directories, 23 files
Ley
Ley
翻譯於 1年前

1人頂

 翻譯的不錯哦!

11. pstree

這個命令顯示當前運行的全部進程及其相關的子進程,輸出的是相似‘tree’命令的樹狀格式。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# pstree
init─┬─NetworkManager───{NetworkManager}
      ├─accounts-daemon───{accounts-daemon}
      ├─acpi_fakekeyd
      ├─acpid
      ├─apache2───10*[apache2]
      ├─at-spi-bus-laun───2*[{at-spi-bus-laun}]
      ├─atd
      ├─avahi-daemon───avahi-daemon
      ├─bluetoothd
      ├─colord───{colord}
      ├─colord-sane───2*[{colord-sane}]
      ├─console-kit-dae───64*[{console-kit-dae}]
      ├─ cron
      ├─cupsd
      ├─2*[dbus-daemon]
      ├─dbus-launch
      ├─dconf-service───2*[{dconf-service}]
      ├─dovecot─┬─anvil
      │         ├─config
      │         └─log
      ├─exim4
      ├─gconfd-2
      ├─gdm3─┬─gdm-simple-slav─┬─Xorg
      │      │                 ├─gdm-session-wor─┬─x-session-manag─┬─evolution-a+
      │      │                 │                 │                 ├─gdu-notific+
      │      │                 │                 │                 ├─gnome-scree+
      │      │                 │                 │                 ├─gnome-setti+
      │      │                 │                 │                 ├─gnome-shell+++
      │      │                 │                 │                 ├─nm-applet──+++
      │      │                 │                 │                 ├─ ssh -agent
      │      │                 │                 │                 ├─tracker-min+
      │      │                 │                 │                 ├─tracker-sto+
      │      │                 │                 │                 └─3*[{x-sessi+
      │      │                 │                 └─2*[{gdm-session-wor}]
      │      │                 └─{gdm-simple-slav}
      │      └─{gdm3}
      ├─6*[getty]
      ├─gnome-keyring-d───9*[{gnome-keyring-d}]
      ├─gnome-shell- cal ───2*[{gnome-shell- cal }]
      ├─goa-daemon───{goa-daemon}
      ├─gsd-printer───{gsd-printer}
      ├─gvfs-afc-volume───{gvfs-afc-volume}
目前爲止就這麼多。在下篇文章中,我將涉及一些其餘不多有人知道的有趣的Linux命令。到那時鏈接 Tecmint保持收看。喜歡和分享將有助於咱們傳播。
 
 
 
 
有一篇文章:像黑客同樣使用Linux命令行 , 至關不錯,值得一看。
 
 
 
 
 
1. 命令行平常系快捷鍵
以下的快捷方式很是有用,可以極大的提高你的工做效率:
·     CTRL + U - 剪切光標前的內容
·     CTRL + K - 剪切光標至行末的內容
·     CTRL + Y - 粘貼
·     CTRL + E - 移動光標到行末
·     CTRL + A - 移動光標到行首
·     ALT + F - 跳向下一個空格
·     ALT + B - 跳回上一個空格
·     ALT + Backspace - 刪除前一個單詞
·     CTRL + W - 剪切光標後一個單詞
·     Shift + Insert - 向終端內粘貼文本
那麼爲了讓上述內容更易理解來看下面的這行命令。
1.     sudo apt-get intall programname
如你所見,命令中存在拼寫錯誤,爲了正常執行須要把「intall」替換成「install」。
想象如今光標正在行末,咱們有不少的方法將她退回單詞install並替換它。
我能夠按兩次ALT+B這樣光標就會在以下的位置(這裏用指代光標的位置)。
1.     sudo apt-get^intall programname
如今你能夠按兩下方向鍵並將「s」插入到install中去了。
若是你想將瀏覽器中的文本複製到終端,可使用快捷鍵"shift + insert"。
 

2. SUDO !!
若是你還不知道這個命令,我以爲你應該好好感謝我,由於若是你不知道的話,那每次你在輸入長串命令後看到「permission denied」後必定會痛苦不堪。
·     sudo !!
如何使用sudo !!?很簡單。試想你剛輸入了以下命令:
1.     apt-get install ranger
必定會出現「Permission denied」,除非你已經登陸了足夠高權限的帳戶。
sudo !! 就會用 sudo 的形式運行上一條命令。因此上一條命令就變成了這樣:
1.     sudo apt-get install ranger
若是你不知道什麼是sudo,戳這裏。
 

3. 暫停並在後臺運行命令
我曾經寫過一篇如何在終端後臺運行命令的指南。
·     CTRL + Z - 暫停應用程序
·     fg - 從新將程序喚到前臺
如何使用這個技巧呢?
試想你正用nano編輯一個文件:
1.     sudo nano abc.txt
文件編輯到一半你意識到你須要立刻在終端輸入些命令,可是nano在前臺運行讓你不能輸入。
你可能以爲惟一的方法就是保存文件,退出 nano,運行命令之後在從新打開nano。
其實你只要按CTRL + Z,前臺的命令就會暫停,畫面就切回到命令行了。而後你就能運行你想要運行命令,等命令運行完後在終端窗口輸入「fg」就能夠回到先前暫停的任務。
有一個嘗試很是有趣就是用nano打開文件,輸入一些東西而後暫停會話。再用nano打開另外一個文件,輸入一些什麼後再暫停會話。若是你輸入「fg」你將回到第二個用nano打開的文件。只有退出nano再輸入「fg」,你纔會回到第一個用nano打開的文件。
 

4. 使用nohup在登出SSH會話後仍運行命令
若是你用ssh登陸別的機器時,nohup命令真的很是有用。
那麼怎麼使用nohup呢?
想象一下你使用ssh遠程登陸到另外一臺電腦上,你運行了一條很是耗時的命令而後退出了ssh會話,不過命令仍在執行。而nohup能夠將這一場景變成現實。
舉個例子,由於測試的須要,我用個人樹莓派來下載發行版。我絕對不會給個人樹莓派外接顯示器、鍵盤或鼠標。
通常我老是用SSH從筆記本電腦鏈接到樹莓派。若是我在不用nohup的狀況下使用樹莓派下載大型文件,那我就必須等待到下載完成後,才能登出ssh會話關掉筆記本。可若是是這樣,那我爲何要使用樹莓派下文件呢?
使用nohup的方法也很簡單,只需以下例中在nohup後輸入要執行的命令便可:
1.     nohup wget http://mirror.is.co.za/mirrors/linuxmint.com/iso//stable/17.1/linuxmint-17.1-cinnamon-64bit.iso &
 

5. ‘在’特定的時間運行Linux命令
‘nohup’命令在你用SSH鏈接到服務器,並在上面保持執行SSH登出前任務的時候十分有用。
想一下若是你須要在特定的時間執行相同的命令,這種狀況該怎麼辦呢?
命令‘at’就能妥善解決這一狀況。如下是‘at’使用示例。黑客攻擊防範於未然,定時自動備份 wordpress 的N種方法。
1.     at 10:38 PM Fri
2.     at> cowsay 'hello'
3.     at> CTRL + D
上面的命令能在週五下午10時38分運行程序cowsay。
使用的語法就是‘at’後追加日期時間。當at>提示符出現後就能夠輸入你想在那個時間運行的命令了。 營銷型網站建設應該從哪幾點着手。
CTRL + D 返回終端。
還有許多日期和時間的格式,都須要你好好翻一翻‘at’的man手冊來找到更多的使用方式。
 

6. Man手冊
Man手冊會爲你列出命令和參數的使用大綱,教你如何使用她們。Man手冊看起來沉悶呆板。(我思忖她們也不是被設計來娛樂咱們的)。
不過這不表明你不能作些什麼來使她們變得漂亮些。
1.     export PAGER=most
你須要安裝 ‘most’;她會使你的你的man手冊的色彩更加絢麗。 怎麼進Blos設置usb啓動項順利進行裝機
你能夠用如下命令給man手冊設定指定的行長:
1.     export MANWIDTH=80
最後,若是你有一個可用的瀏覽器,你可使用-H在默認瀏覽器中打開任意的man頁。
1.     man -H <command>
注意啦,以上的命令只有在你將默認的瀏覽器設置到環境變量$BROWSER中了以後才效果喲。
 

7. 使用htop查看和管理進程
你用哪一個命令找出電腦上正在運行的進程的呢?我敢打賭是‘ps’並在其後加不一樣的參數來獲得你所想要的不一樣輸出。
安裝‘htop’吧!絕對讓你相見恨晚。
htop在終端中將進程以列表的方式呈現,有點相似於Windows中的任務管理器。你可使用功能鍵的組合來切換排列的方式和展現出來的項。你也能夠在htop中直接殺死進程。
在終端中簡單的輸入htop便可運行。
1.     htop
 

8. 使用ranger瀏覽文件系統
若是說htop是命令行進程控制的好幫手,那麼ranger就是命令行瀏覽文件系統的好幫手。
你在用以前可能須要先安裝,不過一旦安裝了之後就能夠在命令行輸入如下命令啓動她:
1.     ranger
在命令行窗口中ranger和一些別的文件管理器很像,可是相比上下結構佈局,她是左右結構的,這意味着你按左方向鍵你將前進到上一個文件夾,而右方向鍵則會切換到下一個。
在使用前ranger的man手冊仍是值得一讀的,這樣你就能夠用快捷鍵操做ranger了。
 

9. 取消關機
不管是在命令行仍是圖形用戶界面關機後,才發現本身不是真的想要關機。
1.     shutdown -c
須要注意的是,若是關機已經開始則有可能來不及中止關機。
如下是另外一個能夠嘗試命令:
·     pkill shutdown
 

10. 殺死掛起進程的簡單方法
想象一下,你正在運行的應用程序不明緣由的僵死了。
你可使用‘ps -ef’來找到該進程後殺掉或者使用‘htop’。
有一個更快、更容易的命令叫作xkill。
簡單的在終端中輸入如下命令並在窗口中點擊你想殺死的應用程序。
1.     xkill
那若是整個系統掛掉了怎麼辦呢?
按住鍵盤上的‘alt’和‘sysrq’不放,而後慢慢輸入如下鍵:
·     REISUB
這樣不按電源鍵你的計算機也能重啓了。
 

11. 下載Youtube視頻
通常來講咱們大多數人都喜歡看Youtube的視頻,也會經過鍾愛的播放器播放Youtube的流媒體。
若是你須要離線一段時間(好比:從蘇格蘭南部坐飛機到英格蘭南部旅遊的這段時間)那麼你可能但願下載一些視頻到存儲設備中,到閒暇時觀看。
你所要作的就是從包管理器中安裝youtube-dl。
你能夠用如下命令使用youtube-dl:
1.     youtube-dl url-to-video
你能夠在Youtubu視頻頁面點擊分享連接獲得視頻的url。只要簡單的複製連接在粘帖到命令行就好了(要用shift + insert快捷鍵喲)。
 
 
 

使用 tmux 複用控制檯窗口

高效使用命令行的首要原則就是要儘可能避免非命令行的干擾,什麼意思呢?就是說一但開啓了一個控制檯窗口,就儘可能不要再在桌面上切換來切換去了,不要一下子 被別的窗口擋住控制檯,一下子又讓別的窗口破壞了控制檯的背景,最好是把控制檯最大化或全屏,最好連鼠標都不要用。只有這樣,才能達到比較高的效率。可是 在實際工做中,咱們又常常須要同時在多個控制檯中進行工做,例如:在一個控制檯中運行錄製屏幕的命令,在另一個控制檯中工做,或者在一個控制檯中工做, 在另一個控制檯中閱讀文檔。若是既想在多個控制檯中工做,又不想一大堆窗口擋來擋去、換來換去的話,就能夠考慮試試 tmux 了。以下圖:

tmux 的功能不少,什麼 Session 啊、Detach 啊、Atach 啊什麼的咱們暫時不用去關心,只用好它的控制檯窗口複用功能就好了。tmux 中有 window 和 pane 的概念,tmux 能夠建立多個 window,這些 window 是不會互相遮擋的,每次只顯示一個 window,其它的 window 會自動隱藏,可使用快捷鍵在 window 之間切換。同時,能夠把一個 window 切分紅多個 pane,這些 pane 同時顯示在屏幕上,可使用快捷鍵在 pane 之間切換。

  tmux 的快捷鍵不少,要想全面瞭解 tmux 的最好辦法固然是閱讀 tmux 的文檔了,使用命令 man tmux 就能夠了。可是咱們只須要記住少數幾個重要的快捷鍵就能夠了,以下表:

快捷鍵 功能
Ctrl+B c 建立一個 window
Ctrl+B [n][p] 切換到下一個窗口或上一個窗口
Ctrl+B & 關閉當前窗口
Ctrl+B " 將當前 window 或 pane 切分紅兩個 pane,上下排列
Ctrl+B % 將當前 window 或 pane 切分紅兩個 pane,左右排列
Ctrl+B x 關閉當前 pane
Ctrl+B [↑][↓][←][→] 在 pane 之間移動
Ctrl+[↑][↓][←][→] 調整當前 pane 的大小,一次調整一格
Alt+[↑][↓][←][→] 調整當前 pane 的大小,一次調整五格

  tmux 的快捷鍵比較特殊,除了調整 pane 大小的快捷鍵以外,其它的都是先按 Ctrl+B,再按一個字符。先按 Ctrl+B,再按 c,就會建立一個 window,這裏 c 就是 create window。先按 Ctrl+B,再按 n 或者 p,就能夠在窗口之間切換,它們是 next window 和 previous window 的意思。關閉窗口是先按 Ctrl+B,再按 &,這個只能死記。先按 Ctrl+B,再按 " ,表示上下拆分窗口,能夠想象成單引號和雙引號在鍵盤上是上下鋪關係。先按 Ctrl+B,再按 % 表示左右拆分窗口,大概是由於百分數都是左右書寫的吧。至於在 pane 之間移動和調整 pane 大小的方向鍵,就不用多說了吧。

 

快速引用和修飾歷史命令

除了查看和搜索歷史記錄,咱們還能夠以更靈活的方式引用歷史記錄中的命令。常見的簡單的例子有 !! 表明引用上一條命令,!$表明引用上一條命令的最後一個參數,^oldstring^newstring^代 表將上一條命令中的 oldstring 替換成 newstring。這些操做是咱們平時使用命令行的時候的一些經常使用技巧,其實它們的本質,是由 history 庫提供的 history expansion 功能。Bash 使用了 history 庫,因此也能使用這些功能。其完整的文檔能夠查看 man history 手冊頁。知道了 history expansion 的理論,咱們還能夠作一些更加複雜的操做,以下圖:

引用和修飾歷史命令的完整格式是這樣的:

![!|[?]string|[-]number]:[n|x-y|^|$|*|n*|%]:[h|t|r|e|p|s|g]

  能夠看到,一個對歷史命令的引用被 : 分爲了三個部分,第一個部分決定了引用哪一條歷史命令;第二部分決定了選取該歷史命令中的第幾個單詞,單詞是從0開始編號的,也就是說第0個單詞表明命令自己,第1個到最後一個單詞表明命令的參數;第三部分決定了對選取的單詞如何修飾。下面我列出完整表格:

  表格1、引用哪一條歷史命令:

操做符 功能
! 全部對歷史命令的引用都以 ! 開始,除了 ^oldstring^newstring^ 形式的快速替換
!n 引用第 n 條歷史命令
!-n 引用倒數第 n 條歷史命令
!! 引用上一條命令,等於 !-1
!string 逆向搜索歷史記錄,第一條以 string 開頭的命令
!?string[?] 逆向搜索歷史記錄,第一條包含 string 的命令
^oldstring^newstring^ 對上一條命令進行快速替換,將 oldstring 替換爲 newstring
!# 引用當前輸入的命令

  表格2、選取哪個單詞:

操做符 功能
0 第0個單詞,在 shell 中就是命令自己
n 第n個單詞
^ 第1個單詞,使用 ^ 時能夠省略前面的冒號
$ 最後一個單詞,使用 $ 是能夠省略前面的冒號
% 和 ?string? 匹配的單詞,能夠省略前面的冒號
x-y 從第 x 個單詞到第 y 個單詞,-y 表明 0-y
* 除第 0 個單詞外的全部單詞,等於 1-$
x* 從第 x 個單詞到最後一個單詞,等於 x-$,能夠省略前面的冒號
x- 從第 x 個單詞到倒數第二個單詞

  表格3、對選取的單詞作什麼修飾:

操做符 功能
h 選取路徑開頭,不要文件名
t 選取路徑結尾,只要文件名
r 選取文件名,不要擴展名
e 選取擴展名,不要文件名
s/oldstring/newstring/ 將 oldstring 替換爲 newstring
g 全局替換,和 s 配合使用
p 只打印修飾後的命令,不執行

  這幾個命令其實挺好記的,h 表明 head,只要路徑開頭不要文件名,t 表明 tail,只要路徑結尾的文件名,r 表明 realname,只要文件名不要擴展名,e 表明 extension,只要擴展名不要文件名,s 表明 substitute,執行替換功能,g 表明 global,全局替換,p 表明 print,只打印不執行。有時候光使用 :p 還不夠,咱們還能夠把這個通過引用修飾後的命令直接在當前命令行上展開而不當即執行,它的快捷鍵是:

操做符 功能
Ctrl + Alt + E 在當前命令行上展開歷史命令引用,展開後不當即執行,能夠修改,按 Enter 後纔會執行
Alt + ^ 和上面的功能同樣

  這兩個快捷鍵,記住一個就行。這樣,當咱們對歷史命令的引用修飾完成後,能夠先展開來看一看,若是正確再執行。眼見爲實嘛,反正我是每次都展開看看才放心。

 

 

錄製屏幕並轉換爲gif動畫圖片

最後,給你們展現我作 gif 動畫圖片的過程。我用到的軟件有 recordmydesktopmplayerconvert。使用 recordmydesktop 時須要一個單獨的控制檯來運行錄像功能,錄像完成後須要在該控制檯中輸入 Ctrl+C 終止錄像。因此我用到了 tmux 。首先,我啓動 tmux,而後運行 recordmydesktop --full-shots -fps 2 --no-sound --no-frame -delay 5 -o ~圖片/record_to_gif.ogv命令開始錄像。因爲 recordmydesktop 運行後不會立刻退出,錄像開始後,這個 window 就被佔用了,因此我按 Ctrl+B c 讓 tmux 再建立一個 window,而後在這個 window 中作的任何操做都會被錄製下來。被錄製的操做完成後,按 Ctrl+B n 切換到 recordmydesktop 命令運行的窗口,按 Ctrl+C 終止錄像。而後,使用 mplayer -ao null record_to_gif.ogv -vo jpeg:outdir=./record_to_gif 將錄製的視頻提取爲圖片。固然,這時的圖片比較多,爲了縮減最後製做成的 gif 文件的大小,咱們能夠刪掉其中可有可無的幀,只留下關鍵幀。最後使用命令 convert -delay 100 record_to_gif/* record_to_gif.gif 生成 gif 動畫。整個過程以下圖:

最後生成的 gif 圖片通常都比較大,每每超過 20M,若是時間長一點,超過 60M 也是常事兒。而製做成 gif 以前每一幀圖片也就 200k 左右而已。我想多是由於 gif 沒有像 jpeg 或 png 這麼好的壓縮算法吧。gif 對付向量圖效果很不錯,對付照片和我這樣的截圖,壓縮就有點力不從心了。博客園容許上傳的圖片每張不能超過 10M,因此,爲了減少 gif 文件的體積,我只有用 convert -resize 1024x576 record_to_gif.gif record_to_gif_small.gif 命令將圖片變小後再上傳了。

相關文章
相關標籤/搜索