在 Ubuntu 下編譯安裝 OpenCV 4.1.1

本篇 ShengYu 將介紹如何在 Ubuntu 下編譯安裝 OpenCV 4.1.1,
這版 OpenCV 4.1.1 釋出日期是 2019/07/26,開始動手編譯原始碼安裝吧!

以下為我的系統環境:
作業系統:Ubuntu 16.04
GCC:5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
G++:5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
使用版本:OpenCV 4.1.1 下載處 / zip

安裝編譯所需的套件

安裝編譯 opencv 所需要的套件,gcc / g++ / make / libc6-dev 都已包含在 build-essential 裡了,
所以不計較空間的話安裝 build-essential 算是相當的簡單省事。

1
sudo apt-get install build-essential cmake

下載原始碼

使用 wget 指令下載原始碼,並且解壓縮。

1
2
wget https://github.com/opencv/opencv/archive/4.1.1.zip
unzip 4.1.1.zip

編譯安裝

切換到剛剛解壓縮出來的目錄開始進行編譯,
最後 make 時,就看你電腦 CPU 有幾個核心,帶不同的參數,有助於加快整個編譯時間。

1
2
3
4
cd opencv-4.1.1
mkdir -p build && cd build
cmake ..
make -j4

安裝,

1
sudo make install

重新載入動態連結,

1
sudo ldconfig -v

查詢已安裝的 opencv 版本

使用 opencv_version 指令查詢已安裝 opencv 的版本。

1
2
$ opencv_version
4.1.1

或者使用 pkg-config 查詢已安裝的 opencv 版本

1
2
$ pkg-config --modversion opencv
4.1.1

到這裡就完成 opencv 的安裝了,下篇將會介紹 如何寫第一支 OpenCV 程式

相關主題
在 Ubuntu 下寫第一支 OpenCV 程式
怎麼查詢 OpenCV 的版本

在 Ubuntu 下寫第一支 OpenCV 程式

本篇 ShengYu 來介紹如何在 Ubuntu 下用 C/C++ 寫第一支 OpenCV 的程式,並且最後透過 g++ 指令編譯與執行起來。

第一支 OpenCV 讀取圖片並顯示程式範例說明

第一支 OpenCV 程式就示範如何讀取圖片,並且把圖片顯示出來吧!範例如下,

opencv-read-picture.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// g++ opencv-read-picture.cpp `pkg-config --cflags --libs opencv`
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
Mat image;
image = imread("lena.jpg", IMREAD_COLOR);

namedWindow("view", WINDOW_AUTOSIZE);
imshow("view", image);

waitKey(0);

return 0;
}

在這個範例裡,我們要使用的圖片就是大名鼎鼎的 lena 小姐,
透過 cv::imread 函式將圖片讀取到一個 cv::Mat 裡存放,
再使用 cv::imshow 把這張圖片給顯示出來,最後加上 cv::waitKey 讓程式等待鍵盤輸入才結束程式。

補充說明:
cv::namedWindow 是宣告一個視窗,視窗名稱叫做 view
cv::waitKey 帶入的參數表示程式需要等待 n 毫秒,如果過了 n 毫秒什麼按鍵也沒發生,就會繼續往下執行,帶入 0 表示無限等待。

使用 g++ 指令編譯

使用 g++ 編譯 OpenCV 程式時,g++ 加上 -o 選項是指定輸出的檔名,也就是執行檔的名城,沒有指定的話預設是 a.out,另外這邊還需要帶入 OpenCV header 檔的位置以及最後要連結哪些函式庫,
這邊使用 pkg-config 來方便地取得這些參數,詳細的說明請看這篇 pkg-config 章節

1
g++ opencv-read-picture.cpp -o read-picture `pkg-config --cflags --libs opencv`

執行程式與顯示圖片

執行下列指令就可以將 read-picture 執行檔執行起來,

1
./read-picture

另外還需要 lena.jpg 這張圖片,lena.jpg 這張圖片可以在 opencv/samples/data/lena.jpg 下目錄找到,
或者可以從這裡下載,
下圖為最後看到的畫面。

以上就是第一支 OpenCV 程式,接下來看 OpenCV 怎麼寫彩色轉灰階的程式。

OpenCV 圖片彩色轉灰階

OpenCV 圖片彩色轉灰階的範例如下,分為兩種方式,第一種是 imread 讀取彩色圖片進來後利用 cvtColor 將 彩色轉換成灰階,第二種方式則是直接用 imread 將讀片讀取成灰階圖片進來,

opencv-rgb-to-gray.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// g++ opencv-rgb-to-gray.cpp `pkg-config --cflags --libs opencv`
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
Mat image;
Mat gray;
// method 1
image = imread("lena.jpg", IMREAD_COLOR);
cvtColor(image, gray, COLOR_BGR2GRAY);
// method 2
//gray = imread("lena.jpg", IMREAD_GRAYSCALE);

imshow("Input", image);
imshow("Result", gray);

waitKey(0);

return 0;
}

編譯與執行指令如下,

1
2
$ g++ opencv-rgb-to-gray.cpp `pkg-config --cflags --libs opencv`
$ ./a.out

執行結果畫面如下,

接下來我們來看看怎麼用 OpenCV 寫入圖片。

OpenCV 寫入圖片

OpenCV 寫入圖片的範例如下,承上例我們將讀取進來的圖片經過 cvtColor 轉換成灰階圖片後,最後再用 imwrite 將這張灰階圖片寫入儲存下來。

opencv-write-picture.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// g++ opencv-write-picture.cpp `pkg-config --cflags --libs opencv`
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
Mat image;
image = imread("lena.jpg", IMREAD_COLOR);

Mat gray;
cvtColor(image, gray, COLOR_BGR2GRAY);
imshow("view", gray);
imwrite("output.jpg", gray);

waitKey(0);

return 0;
}

編譯與執行指令如下,

1
2
$ g++ opencv-write-picture.cpp -o write-picture `pkg-config --cflags --libs opencv`
$ ./write-picture

今天就這樣了,往後會在陸續介紹其他常用範例。

以上就是在 Ubuntu 下寫第一支 OpenCV 程式介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

相關主題
在 Ubuntu 下編譯安裝 OpenCV 4.1.1
在 Ubuntu 下編譯安裝 OpenCV 3.4.7
使用 gcc / g++ 編譯 opencv 程式

在 Ubuntu 下編譯安裝 OpenCV 3.4.7

本篇 ShengYu 將介紹如何在 Ubuntu 下編譯安裝 OpenCV 3.4.7,
這版 OpenCV 3.4.7 釋出日期是 2019/07/26,開始動手編譯原始碼安裝吧!

以下為我的系統環境:
作業系統:Ubuntu 16.04
GCC:5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
G++:5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
使用版本:OpenCV 3.4.7 下載處 / zip

安裝編譯所需的套件

安裝編譯 opencv 所需要的套件,gcc / g++ / make / libc6-dev 都已包含在 build-essential 裡了,
所以不計較空間的話安裝 build-essential 算是相當的簡單省事。

1
sudo apt-get install build-essential cmake

下載原始碼

使用 wget 指令下載原始碼,並且解壓縮。

1
2
wget https://github.com/opencv/opencv/archive/3.4.7.zip
unzip 3.4.7.zip

編譯安裝

切換到剛剛解壓縮出來的目錄開始進行編譯,
最後 make 時,就看你電腦 CPU 有幾個核心,帶不同的參數,有助於加快整個編譯時間。

1
2
3
4
cd opencv-3.4.7
mkdir -p build && cd build
cmake ..
make -j4

安裝,

1
sudo make install

重新載入動態連結,

1
sudo ldconfig -v

查詢已安裝的 opencv 版本

使用 opencv_version 指令查詢已安裝 opencv 的版本。

1
2
$ opencv_version
3.4.7

或者使用 pkg-config 查詢已安裝的 opencv 版本

1
2
$ pkg-config --modversion opencv
3.4.7

到這裡就完成 opencv 的安裝了,下篇將會介紹 如何寫第一支 OpenCV 程式

相關主題
在 Ubuntu 下寫第一支 OpenCV 程式
怎麼查詢 OpenCV 的版本

Github 如何更新已經 fork 的專案與原專案紀錄同步

本篇介紹一下怎麼樣更新你在 Github 上已經 fork 過的專案 repository,
與原專案紀錄同步更新並且推上你的 Github。
更新 Github 上已經 fork 的 repository 方法有兩種,分別為

  • 使用 git 指令操作
  • 使用 github 網頁操作

使用 git 指令操作

首先,先切換到 repository 目錄下,
下面已貢獻 linux 專案為例,使用者名稱為 shengyu
git remote -v 查看遠端來源,
輸出 (一般會有兩個):

1
2
origin  git@github.com:shengyu/linux.git (fetch)
origin git@github.com:shengyu/linux.git (push)

加入原來 linux 官方的 upstream

1
git remote add upstream https://github.com/torvalds/linux.git

再用 git remote -v 查看遠端來源, 應該會有四個

1
2
3
4
origin  git@github.com:shengyu/linux.git (fetch)
origin git@github.com:shengyu/linux.git (push)
upstream https://github.com/torvalds/linux (fetch)
upstream https://github.com/torvalds/linux (push)

把 upstream/master 更新到本地的 master (從 torvalds/linux upstream 拉更新下來)

1
2
git checkout master
git pull upstream master

如果本地有自己的 commit, 使用 rebase 方式更新 (避免不必要的 merge),
沒有的話跳過這步驟。

1
git pull --rebase upstream master

更新到遠端的 origin 上 (就是推到自己的 https://github.com/shengyu/linux 上)

1
git push origin master

使用 github 網頁操作

在 github 的網頁上可以看到 Fetch upstream 的下拉式選單,接著按下 Fetch and merge 按鈕就可以完成了。

其它參考
更新從 GitHub 上 fork 出來的 repository (或是同步兩個不同 server 端的 repository)
https://www.peterdavehello.org/2014/02/update_forked_repository/

其它相關文章推薦
Github 提交你的修改貢獻到開源專案
Github 如何更新 pull request
Git 顯示某個檔案的歷史修改記錄
Git 顯示整個repository的歷史修改記錄

在 Ubuntu 下寫第一支 Boost 程式

本篇 ShengYu 將介紹如何在 Ubuntu 下寫第一支 Boost 程式,
Ubuntu 怎麼編譯安裝 boost 請看這篇,確定系統有安裝 boost 後,就開始動手寫程式吧!

以下 boost_example.cpp 範例示範如何使用 boost::lambda 的寫法,
簡單地將使用者輸入的整數乘 3 再印出來,
使用時先宣告引用 boost/lambda/lambda.hpp 標頭檔,

boost_example.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
using namespace boost::lambda;
typedef std::istream_iterator<int> in;

std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
}

使用 g++ 編譯,由於 boost::lambda 是 header-only,所以不用連結函式庫

1
c++ -I /usr/local/include/boost/ boost_example.cpp -o boost_example

執行程式

1
echo 1 2 3 | ./boost_example

結果輸出如下:

1
3 6 9

相關主題
在 Ubuntu 下編譯安裝 Boost 1.71.0

在 Ubuntu 下編譯安裝 Boost 1.71.0

本篇 ShengYu 將介紹如何在 Ubuntu 下編譯安裝 Boost 1.71.0,
這版 boost 1.71.0 釋出日期是 2019/08/19,開始動手編譯原始碼安裝吧!

以下為我的系統環境:
作業系統:Ubuntu 16.04
GCC:5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
G++:5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
使用版本:boost 1.71.0 下載處 / 7z / tar.gz

使用 wget 指令下載原始碼

1
2
3
wget https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.gz
tar xvf boost_1_71_0.tar.gz
cd boost_1_71_0

Read More

Linux sed 字串取代用法與範例

本篇 ShengYu 將介紹如何使用 Linux 下的 sed 指令來取代/替換字串,相同地 sed 指令也可以在 macOS 下做字串取代,但有些情形需要一些改動詳見下面內容,平時在寫 Shell Script 時經常會使用到 sed 取代字串,由於 sed 這強大指令博大精深,又很容易忘記,所以在這邊會記錄一下我常用到的功能。

以下的 Linux sed 用法與範例將分為這幾部分,

  • Linux sed 基本用法
  • Linux sed 常用範例
  • find 指令找到檔案後 pipe 給 sed 取代文字
  • grep 指令搜尋內容符合的檔案 pipe 給 sed 取代文字
  • shell script 中 find 找檔案後傳給 sed 指令
  • shell script 中傳變數給 sed 指令
  • sed 刪除符合特定字樣的那些行
  • sed 轉換 hex string 成 byte string

那我們開始吧!

Linux sed 基本用法

這邊介紹 Linux sed 基本用法,假設我們要將設定檔裡某變數 : 冒號之後的任意字串取代掉,
今天有份 settings.conf 設定檔如下,

settings.conf
1
2
name: Alan
age: 18

情況1. 希望將裡面的在 settings.conf 裡取代所有的 Alan 字串, 替換成 Barry,sed 指令如下,g 表示全部取代,沒有 g 的話只會取代一次,

1
$ sed -i 's/Alan/Barry/g' settings.conf

情況2. 將 name: 後面的任何字元取代成 name: Duke

1
$ sed -i 's/name:.*/name: Duke/g' settings.conf

同樣的指令在 macOS 下要修改一下,在 -i 後面多加一個內容為空 "" 的參數,
否則會出現 unterminated substitute pattern。

1
$ sed -i "" 's/name:.*/name: Duke/g' settings.conf

但是如果沒有使用 -i 的參數的話 Linux 與 macOS 使用的指令則相同,例如 sed 's/name:.*/name: Duke/g' settings.conf ,但是使用 -i 才會將結果寫回原本的檔案。

Linux sed 常用範例

以下為 Linux sed 常用範例,搜尋的字串如果內含空白的話,則空白前要加反斜線 \

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 單檔取代, oldtext取代成newtext
$ sed -i 's/oldtext/newtext/g' <filename>

# 對當前目錄下所有的txt副檔名, oldtext取代成newtext
$ sed -i 's/oldtext/newtext/g' *.txt

# 取代有含空白的字串,abc d取代成a bcd
$ sed -i 's/abc\ d/a\ bcd/g' <filename>

# 取代 `http` 開頭的
# http://xxx.com/index.html -> https://xxx.com/index.html
$ sed -i 's/^http/https/g' <filename> # 將所有在行首的http字串替換成https,如果http不是在行首的字串,則不會被取代掉

# 取代 com. 結尾的
# https://xxx.com/index.html -> https://xxx.edu
$ sed -i 's/com.*/edu/g' <filename> # 將所有 "com.後面接任意字元任意長度" 的字串替換成 edu

# 刪除行首空格
$ sed 's/^[ \t]*//g'

# 刪除行末空格
$ sed 's/[ \t]*$//g'

find 指令找到檔案後 pipe 給 sed 取代文字

find 指令找到檔案後 pipe 給 sed 取代文字的方式如下,範例內容是假設我要找的檔案類型是 txt 副檔名,用 find 把所有 txt 副檔名找出來後將這些檔案名稱 pipe 給 sed 取代文字,將這些檔案裡的 http 全部取代成 https,

1
2
3
4
# Linux
find ./ -iname "*.txt" -type f | xargs sed -i 's/http/https/g'
# macOS
find ./ -iname "*.txt" -type f | xargs sed -i "" 's/http/https/g'

grep 指令搜尋內容符合的檔案 pipe 給 sed 取代文字

grep 指令搜尋內容符合的檔案 pipe 給 sed 取代文字的方式如下,範例內容是假設我要搜尋檔案內容有 http 的字串找出來後將這些檔案名稱 pipe 給 sed 取代文字,將這些檔案裡的 http 全部取代成 https,

1
2
3
4
# Linux
grep -ri "http" * -l | xargs sed -i 's/http/https/g'
# macOS
grep -ri "http" * -l | xargs sed -i "" 's/http/https/g'

如果 grep 換成 ag 的話,

1
2
3
4
# Linux
ag "http" -l | xargs sed -i 's/http/https/g'
# macOS
ag "http" -l | xargs sed -i "" 's/http/https/g'

shell script 中 find 找檔案後傳給 sed 指令

假如寫成 shell script 時,想要將變數帶進 sed 的參數裡的話,會發現剛剛上述的例子的 's/$1/$2/g' 單引號(single quotes)方式會失效,無法將 shell script 變數取值出來,這是因為要用雙引號(double quotes)的方式才能將 shell script 變數取值,所以就要改成 "s/$1/$2/g" 這樣的方式,如下範例中的 replace_http 函式,

1
2
3
4
5
function replace_http() {
find ./ -iname "*.txt" -type f | xargs sed -i "s/$1/$2/g"
}

replace_http "http" "https"

shell script 中傳變數給 sed 指令

在 shell script 要傳變數給 sed 處理的話,可以這樣寫,
以下範例是用 sed 將 abcabc 字串裡的 a 換成 z,

1
2
STR=abcabc
echo $STR | sed 's/a/z/g'

結果為

1
zbczbc

sed 刪除符合特定字樣的那些行

以下範例是刪除 settings.conf 中符合 text 字樣的那些行,所以 settings.conf 裡有 3 行都符合的話就會刪除那 3 行,

1
sed -i '/text/d' settings.conf

在 shell script 中寫成變數的話 sed 就要改用雙引號才能取得變數的字串數值,

1
2
PATTERN="text"
sed -i "/$PATTERN/d" settings.conf

PATTERN 中出現特殊字元的話,我自己的經驗是 sed 在遇到左中括號 [ 會需要跳脫字元否則有機率會出錯,解決方式為在 PATTERN 裡的所有左中括號 [ 前插入跳脫字元,

1
2
3
PATTERN="[2020-12-11]"
PATTERN2=`echo "$PATTERN" | sed 's/\[/\\\[/g'`
sed -i "/$PATTERN2/d" settings.conf

在 stackexchange 這篇有一些討論左中括號 [ 會需要跳脫字元的討論。

sed 轉換 hex string 成 byte string

如果想要將 00123a4b 的 hex 字串 \x00\x12\x3a\x4b 轉成 byte 字串的話,可以透過 sed 來達成,sed 指令如下,

1
2
$ echo "00123a4b" | sed 's/../\\x&/g'
\x00\x12\x3a\x4b

如果是要將 00123a4b 的 hex 字串 0x00, 0x12, 0x3a, 0x4b, 轉成逗號間隔的話,就這樣使用,

1
2
$ echo "00123a4b" | sed 's/../0x&, /g'
0x00, 0x12, 0x3a, 0x4b,

參考
sed @ 工作筆記 :: 隨意窩 Xuite日誌
http://blog.xuite.net/yctseng/notes/24568350-sed
bash - How do I use variables in a sed command? - Ask Ubuntu
https://askubuntu.com/questions/76808/how-do-i-use-variables-in-a-sed-command

其它相關文章推薦
Linux 常用指令教學懶人包
Linux cut 字串處理用法與範例
Linux find 尋找檔案/尋找資料夾用法與範例
Linux grep/ack/ag 搜尋字串用法與範例
Linux grep 搜尋字串用法與範例
Linux ag 搜尋字串用法與範例(比 grep 還快)
Linux tee 同時螢幕標準輸出和輸出到檔案用法與範例
Linux xargs 參數列表轉換用法與範例
Linux tail 持續監看檔案輸出用法與範例
Linux du 查詢硬碟剩餘空間/資料夾容量用法與範例
Linux wget 下載檔案用法與範例

Linux cut 字串處理用法與範例

本篇介紹 Linux 下的 cut 指令來處理(切割)字串,cut 在 linux shell script 字串處理中是個常用的指令,學會 cut 指令將會令 shell script 字串切割功力提昇不少,就更能夠從檔案裡擷取出想要的欄位資訊。

以下的 Linux cut 用法與範例將分為這幾部分,

  • Linux cut 基本用法
  • cut 實用範例. 取得 wlan0 ip
  • cut 指令常用選項

那我們開始吧!

Linux cut 基本用法

假設今天有一份 log.txt 文字檔如下,我們透過簡單的 shell script 腳本語言來作字串處理,就能夠從檔案裡取得我們想要的欄位資訊,以下示範用 linux cut 指令將 x y z 字串切割取出來。

1
2
3
INFO w=1 x=2 y=1 z=0.1
INFO w=1 x=2 y=2 z=0.2
INFO w=1 x=2 y=3 z=0.3

在 linux 環境裡我們可以先用 cat 指令先將內容印出來,再結合 cut 指令作字串切割,
使用 cut 時用空格作切割條件,取出結果的第2欄 與 第3欄到第5欄,
指令如下:

1
$ cat log.txt | cut -d ' ' -f2,3-5

可以得到下列輸入:

1
2
3
w=1 x=2 y=1 z=0.1
w=1 x=2 y=2 z=0.2
w=1 x=2 y=3 z=0.3

cut 實用範例. 取得 wlan0 ip

使用 cut -f 取得切割完的字串,-f1 表示取得切割完的第一個字串,-f2 表示取得切割完的第一個字串,以此類推。

1
$ ifconfig | grep wlan0 -A 1 | grep inet | cut -d ':' -f2 | cut -d ' ' -f1

輸出結果如下:

1
192.168.1.2

cut 指令常用選項

以下為常用的 cut 指令,有想到在陸續增加吧!
cut -f: -f1 為取得切割完的第一個字串,-f2 為取得切割完的第二個字串,以此類推,-f3- 是從第3個字串直到最後,-f-3- 從最前到第3個字串。
cut -d: 使用指定的分隔符號
cut -b: select only these bytes

其它相關文章推薦
Linux 常用指令教學懶人包
Linux sed 字串取代用法與範例
Linux find 尋找檔案/尋找資料夾用法與範例
Linux grep/ack/ag 搜尋字串用法與範例
Linux tee 同時螢幕標準輸出和輸出到檔案用法與範例
Linux xargs 參數列表轉換用法與範例
Linux tail 持續監看檔案輸出用法與範例
Linux du 查詢硬碟剩餘空間/資料夾容量用法與範例
Linux wget 下載檔案用法與範例

Git 顯示整個repository的歷史修改記錄

本篇 ShengYu 將介紹如何使用 Git 查看整個 repository 的歷史記錄,歷史補丁patch (就是顯示修改內容+++—的那些啦!)。

針對單檔看歷史修改已經會了,git log -p <filename>
如果是想看整個 repository 的歷史記錄的話使用下列指令:

1
git log --patch-with-raw

其它相關文章推薦
Git 顯示某個檔案的歷史修改記錄

Linux 7z 壓縮/解壓縮指令用法與範例

本篇紀錄 Linux 7z 壓縮/解壓縮指令用法與範例,Windows 跟 Ubuntu 的 7z 視窗軟體工具都做不錯使用,目前 macOS 下沒有很好的視窗工具,所以有時還需要用 7z 指令來壓縮跟解壓縮,
Ubuntu 找不到指令的話可以安裝下列套件:

1
sudo apt-get install p7zip-full

Linux 7z 壓縮指令如下:

1
7z a <filename.7z> <file_to_be_compressed/directory_to_be_compressed>

Linux 7z 解壓縮指令如下:

1
7z x <filename.7z>

7z 如果要壓縮並加上密碼的話,壓縮指令如下:

1
2
3
7z a <filename.7z> <file_to_be_compressed/directory_to_be_compressed> -p

7z -p a <filename.7z> <file_to_be_compressed/directory_to_be_compressed>

然後會要求你輸入密碼以及確認密碼。
解開加密的壓縮檔跟一般 7z 解壓縮指令一樣。

選項說明:
a: 將檔名列中的檔案加入壓縮檔
x: 以完整路徑的格式解出檔案

以上就是 Linux 7z 壓縮/解壓縮指令用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
Linux 7z 檔案分割
Linux 常用指令教學懶人包
Linux sed 字串取代用法與範例
Linux find 尋找檔案/尋找資料夾用法與範例
Linux cut 字串處理用法與範例
Linux tail 持續監看檔案輸出用法與範例
Linux grep/ack/ag 搜尋字串用法與範例
Linux tee 同時螢幕標準輸出和輸出到檔案用法與範例
Linux xargs 參數列表轉換用法與範例
Linux du 查詢硬碟剩餘空間/資料夾容量用法與範例
Linux wget 下載檔案用法與範例