Linux_Shell腳本學習第二章-命令之樂(上)

一、用cat 進行拼接

1.1 讀取文件內容

1.1.1 打印單個文件的內容

$ cat file.txt
This is a line inside file.txt
This is the second line inside file.txt

1.1.2 打印多個文件的內容

$ cat one.txt two.txt
This line is from one.txt
This line is from two.txt

1.2 從標準輸入中讀取數據

管道操作符可以將數據作爲cat命令的標準輸入:

OUTPUT_FROM_SOME COMMANDS | cat

1.3 將文件內容與終端輸入拼接在一起

下面的命令將stdin和另一個文件中的數據組合在一起,-被作爲stdin文本的文件名:

$ echo 'Text through stdin' | cat - file.txt
Text throught stdin
This is file.txt

1.3 去除多餘的空白行

有時候文本文件中可能包含多處連續的空白行。如果你想刪除這些額外的空白行,可以這樣做:

$ cat -s file

例如:

$ cat multi_blanks.txt
line1

line2

line3

line4
$ cat -s multi_blanks.txt #壓縮相鄰的空白行
line 1
line 2
line 3
line 4

1.4 將製表符顯示爲^I

用cat命令的-T選項能夠將製表符標記成^I。例如:

$ cat file.py
def function():
var = 5
next = 6
third = 7
$ cat -T file.py
def function():
^Ivar = 5
^I^Inext = 6
^Ithird = 7^I

1.5 顯示行號

cat命令的-n選項會在輸出的每一行內容之前加上行號。例如:

$ cat lines.txt
line
line
line
$ cat -n lines.txt
1 line
2 line
3 line

二、查找並列出文件

2.1 預備知識

find命令的工作方式如下:沿着文件層次結構向下遍歷,匹配符合條件的文件,執行相應的操作。默認的操作是打印出文件和目錄,這也可以使用-print選項來指定。

2.2 實戰演練

2.2.1 列出給定目錄下所有的文件和子目錄

$ find base_path

bash_path可以是任意位置(例如/home/slynux),find會從該位置開始向下查找。例如:

$ find . -print
.history
Downloads
Downloads/tcl.fossil
Downloads/chapter2.doc
…

print選項使用\n(換行符)分隔輸出的每個文件或目錄名。而-print0選項則使用空字符’\0’來分隔。

2.2.2 根據文件名或正則表達式進行搜索

-name選項指定了待查找文件名的模式。這個模式可以是通配符,也可以是正則表達式。在下面的例子中,’*.txt’能夠匹配所有名字以.txt結尾的文件或目錄。

$ find /home/slynux -name '*.txt' -print

注意*.txt兩邊的單引號。shell會擴展沒有引號或是出現在雙引號(")中的通配符。單引號能夠阻止shell擴展*.txt,使得該字符串能夠原封不動地傳給find命令。
find命令有一個選項-iname(忽略字母大小寫),該選項的作用和-name類似,只不過在匹配名字時會忽略大小寫。例如:

$ ls
example.txt EXAMPLE.txt file.txt
$ find . -iname "example*" -print
./example.txt
./EXAMPLE.txt

find命令支持邏輯操作符。-a和-and選項可以執行邏輯與(AND)操作,-o和-or選項可以執行邏輯或(OR)操作。

$ ls
new.txt some.jpg text.pdf stuff.png
$ find . \( -name '*.txt' -o -name '*.pdf' \) -print
./text.pdf
./new.txt

上面的命令會打印出所有的.txt和.pdf文件,因爲這個find命令能夠匹配所有這兩類文件。\(以及\)用於將 -name '.txt’ -o -name '.pdf’視爲一個整體。

下面的命令演示瞭如何使用-and操作符選擇名字以s開頭且其中包含e的文件:

$ find . \( -name '*e*' -and -name 's*' \)
./some.jpg

-path選項可以限制所匹配文件的路徑及名稱。

$ find /home/users -path '*/slynux/*' -name '*.txt' –print

2.2.3 否定參數

find也可以用!排除匹配到的模式

$ find . ! -name "*.txt" -print

上面的find命令能夠匹配所有不以.txt結尾的文件。該命令的運行結果如下:

$ ls
list.txt new.PY new.txt next.jpg test.py
$ find . ! -name "*.txt" -print
.
./next.jpg
./test.py
./new.PY

2.2.4 基於目錄深度的搜索

find命令在查找時會遍歷完所有的子目錄。默認情況下,find命令不會跟隨符號鏈接。-L選項可以強制其改變這種行爲。但如果碰上了指向自身的鏈接,find命令就會陷入死循環中。

-maxdepth和–mindepth選項可以限制find命令遍歷的目錄深度。這可以避免find命令沒完沒了地查找。

/proc文件系統中包含了系統與當前執行任務的信息。特定任務的目錄層次相當深,其中還有一些繞回到自身(loop back on themselves)的符號鏈接。系統中運行的每個進程在proc中都有對應的子目錄,其名稱就是該進程的進程ID。這個目錄下有一個叫作cwd的鏈接,指向進程的當前工作目錄。
下面的例子展示瞭如何列出運行在含有文件bundlemaker.def的目錄下的所有任務:

$ find -L /proc -maxdepth 1 -name 'bundlemaker.def' 2>/dev/null

-L選項告訴find命令跟隨符號鏈接
從/proc目錄開始查找
-maxdepth 1將搜索範圍僅限制在當前目錄
-name 'bundlemaker.def’指定待查找的文件
2>/dev/null將有關循環鏈接的錯誤信息發送到空設備中

2.2.5 根據文件類型搜索

類Unix系統將一切都視爲文件。文件具有不同的類型,例如普通文件、目錄、字符設備、塊設備、符號鏈接、硬鏈接、套接字以及FIFO等。

find命令可以使用-type選項對文件搜索進行過濾。藉助這個選項,我們可以告訴find命令只匹配指定類型的文件。

只列出所有的目錄(包括子目錄):

$ find . -type d -print

只列出普通文件:

$ find . -type f -print

只列出符號鏈接:

$ find . -type l -print

find能夠識別出的類型與參數在這裏插入圖片描述

2.2.6 根據文件的時間戳進行搜索

Unix/Linux文件系統中的每一個文件都有3種時間戳,如下所示。

訪問時間(-atime):用戶最近一次訪問文件的時間。
修改時間(-mtime):文件內容最後一次被修改的時間。
變化時間(-ctime):文件元數據(例如權限或所有權)最後一次改變的時間。

打印出在最近7天內被訪問過的所有文件:

$ find . -type f -atime -7 -print

打印出恰好在7天前被訪問過的所有文件:

$ find . -type f -atime 7 -print

打印出訪問時間超過7天的所有文件。

$ find . -type f -atime +7 -print

-mtime選項會根據修改時間展開搜索,-ctime會根據變化時間展開搜索。

-atime、-mtime以及-ctime都是以“天”爲單位來計時的。find命令還支持以“分鐘”爲計時單位的選項。這些選項包括:
-amin(訪問時間);
-mmin(修改時間);
-cmin(變化時間)。

打印出7分鐘之前訪問的所有文件:

$ find . -type f -amin +7 -print

–newer選項可以指定一個用於比較修改時間的參考文件,然後找出比參考文件更新的(更近的修改時間)所有文件。

–newer選項可以指定一個用於比較修改時間的參考文件,然後找出比參考文件更新的(更近的修改時間)所有文件。
例如,找出比file.txt修改時間更近的所有文件:

$ find . -type f -newer file.txt -print

2.2.7 基於文件大小的搜索

可以根據文件的大小展開搜索:

# 大於2KB的文件
$ find . -type f -size +2k
# 小於2KB的文件
$ find . -type f -size -2k
# 大小等於2KB的文件
$ find . -type f -size 2k

除了k之外,還可以用其他文件大小單位。
 b:塊(512字節)。
 c:字節。
 w:字(2字節)。
 k:千字節(1024字節)。
 M:兆字節(1024K字節)。
 G:吉字節(1024M字節)。

2.2.8 基於文件權限和所有權的匹配

根據文件權限進行文件匹配。列出具有特定權限的文件。
-perm選項指明find應該只匹配具有特定權限值的文件。

$ find . -type f -perm 644 -print
# 打印出權限爲644的文件

也可以根據文件的所有權進行搜索。用選項 -user USER就能夠找出由某個特定用戶所擁有的文件。參數USER可以是用戶名或UID。

例如,可以使用下面的命令打印出用戶slynux擁有的所有文件:

$ find . -type f -user slynux -print

2.2.9 利用find執行相應操作

a. 刪除匹配的文件

find命令的-delete選項可以刪除所匹配到的文件。下面的命令能夠從當前目錄中刪除.swp文件:

$ find . -type f -name "*.swp" -delete
b. 執行命令

利用-exec選項,find命令可以結合其他命令使用。

find命令使用一對花括號{}代表文件名。在下面的例子中,對於每一個匹配的文件,find命令會將{}替換成相應的文件名並更改該文件的所有權。如果find命令找到了root所擁有的兩個文件,那麼它會將其所有者改爲slynux:

# find . -type f -user root -exec chown slynux {} \;

注意該命令結尾的;。必須對分號進行轉義,否則shell會將其視爲find命
令的結束,而非chown命令的結束。

另一個例子是將給定目錄中的所有C程序文件拼接起來寫入單個文件all_c_files.txt。各種實現方法如下:

$ find . -type f -name '*.c' -exec cat {} \;>all_c_files.txt
$ find . -type f -name '*.c' -exec cat {} > all_c_files.txt \;
$ fine . -type f -name '*.c' -exec cat {} >all_c_files.txt +

我們使用 > 操作符將來自find的數據重定向到all_c_files.txt文件,沒有使用>>(追加)的原因是find命令的全部輸出就只有一個數據流(stdin),而只有當多個數據流被追加到單個文件中時纔有必要使用>>。

2.2.10 讓find跳過特定的目錄

在搜索時排除某些文件或目錄的技巧叫作修剪。下面的例子演示瞭如何使用-prune選項排
除某些符合條件的文件:

$ find devel/source_path -name '.git' -prune -o -type f -print

-name “.git” –prune是命令中負責進行修剪的部分,它指明瞭.git目錄應該被排除在外。
-type f –print描述了要執行的操作。

三、玩轉xargs

3.1 預備知識

xargs命令從stdin處讀取一系列參數,然後使用這些參數來執行指定命令。它能將單行或
多行輸入文本轉換成其他格式,例如單行變多行或是多行變單行。
xargs命令應該緊跟在管道操作符之後。它使用標準輸入作爲主要的數據源,將從stdin中
讀取的數據作爲指定命令的參數並執行該命令。下面的命令將在一組C語言源碼文件中搜索字符串main:

ls *.c | xargs grep main

3.2 實戰演練

3.2.1 將多行輸入轉換成單行輸出

xargs默認的echo命令可以用來將多行輸入轉換成單行輸出:

$ cat example.txt # 樣例文件
1 2 3 4 5 6
7 8 9 10
11 12
$ cat example.txt | xargs
1 2 3 4 5 6 7 8 9 10 11 12

3.2.1 將單行輸入轉換成多行輸出

xargs的-n選項可以限制每次調用命令時用到的參數個數。下面的命令將輸入分割成多
行,每行N個元素:

$ cat example.txt | xargs -n 3
1 2 3
4 5 6
7 8 9
10 11 12

3.3 工作原理

xargs命令接受來自stdin的輸入,將數據解析成單個元素,然後調用指定命令並將這些元素作爲該命令的參數。xargs默認使用空白字符分割輸入並執行/bin/echo。

我們可以定義一個用來分隔參數的分隔符。-d選項可以爲輸入數據指定自定義的分隔符:

$ echo "splitXsplit2Xsplit3Xsplit4" | xargs -d X
Split1 split2 split3 split4

xargs命令可以同find命令很好地結合在一起。find的輸出可以通過管道傳給xargs,由後
者執行-exec選項所無法處理的複雜操作。**如果文件系統的有些文件名中包含空格,find命令的-print0選項可以使用0(NULL)來分隔查找到的元素,然後再用xargs對應的-0選項進行解析。**下面的例子在Samba掛載的文件系統中搜索.docx文件,這些文件名中通常會包含大寫字母和空格。其中使用了grep找出內容中不包含image的文件:

$ find /smbMount -iname '*.docx' -print0 | xargs -0 grep -L image

3.4 在命令行中格式化數據

3.4.1 讀取stdin,爲命令傳入格式化參數

下面是一個短小的腳本cecho,可以用來更好地理解xargs是如何提供命令行參數的:

#!/bin/bash
#文件名: cecho.sh
echo $*'#

當參數被傳遞給文件cecho.sh後,它會打印這些參數並以 #字符作爲結尾。例如:

$ ./cecho.sh arg1 arg2
arg1 arg2 #
'

這裏有一個常見的問題。
有一個包含着參數列表的文件(每行一個參數)要提供給某個命令(比如cecho.sh)。我
需要以不同的形式來應用這些參數。在第一種形式中,每次調用提供一個參數。

./cecho.sh arg1
./cecho.sh arg2
./cecho.sh arg3

使用xargs時

$ cat args.txt | xargs -n 1 ./cecho.sh
arg1 #
arg2 #
arg3 #

接下來,每次調用提供一到兩個參數。

./cecho.sh arg1 arg2
./cecho.sh arg3

使用xargs時

$ cat args.txt | xargs -n 2 ./cecho.sh
arg1 arg2 #
arg3 #

最後,在單次調用中提供所有參數。

./cecho.sh arg1 arg2 arg3

使用xargs時

$ cat args.txt | xargs ./cecho.sh
arg1 arg2 arg3 #

xargs命令可以格式化參數,滿足各種需求。

在上面的例子中,由xargs添加的參數都被放置在指定命令的尾部。但我們可能需要在命令末尾有一個固定的參數,並希望xargs能夠替換居於中間位置的參數,就像這樣:

./cecho.sh -p arg1 -l

在命令執行過程中,**arg1是唯一的可變內容,其餘部分都保持不變。**args.txt中的參數是像
這樣提供給命令的:

./cecho.sh -p arg1 -l
./cecho.sh -p arg2 -l
./cecho.sh -p arg3 -l

xargs有一個選項-I,可以用於指定替換字符串,這個字符串會在xargs解析輸入時被參
數替換掉。如果將-I與xargs結合使用,對於每一個參數,指定命令只會執行一次。來看看解決方法:

$ cat args.txt | xargs -I {} ./cecho.sh -p {} -l
-p arg1 -l #
-p arg2 -l #
-p arg3 -l #

-I {}指定了替換字符串。爲該命令提供的各個參數會通過stdin讀取並依次替換掉字符
串{}。使用-I的時候,命令以循環的方式執行。如果有3個參數,那麼命令就會連
同{}一起被執行3次。{}會在每次執行中被替換爲相應的參數。

3.4.2 結合find使用xargs

xargs和find可以配合完成任務。不過在結合使用的時候需要留心。考慮下面的例子:

$ find . -type f -name "*.txt" -print | xargs rm -f

這樣做很危險,有可能會誤刪文件。我們無法預測find命令輸出的分隔符究竟是什麼(究
竟是’\n’還是’ ‘)。如果有文件名中包含空格符(’ '),xargs會將其誤認爲是分隔符。例如,bashrc text.txt會被視爲bashrc和text.txt。因此上面的命令不會刪除bashrc text.txt,而是會把bashrc刪除。

使用find命令的-print0選項生成以空字符(’\0’)作爲分隔符的輸出,然後將其作爲
xargs命令的輸入。
下列命令會查找並刪除所有的.txt文件:

$ find . -type f -name "*.txt" -print0 | xargs -0 rm -f

3.4.3 統計源代碼目錄中所有C程序文件的行數

$ find source_code_dir_path -type f -name "*.c" -print0 | xargs -0 wc –l

四、用tr 進行轉換

4.1 預備知識

tr只能通過stdin(標準輸入)接收輸入(無法通過命令行參數接收)。其調用格式如下:

tr [options] set1 set2

來自stdin的輸入字符會按照位置從set1映射到set2(set1中的第一個字符映射到set2
中的第一個字符,以此類推),然後將輸出寫入stdout(標準輸出)。set1和set2是字符類或字符組。如果兩個字符組的長度不相等,那麼set2會不斷複製其最後一個字符,直到長度與set1相同。如果set2的長度大於set1,那麼在set2中超出set1長度的那部分字符則全部被忽略。

4.2 實戰演練

要將輸入中的字符由大寫轉換成小寫,可以使用下面的命令:

$ echo "HELLO WHO IS THIS" | tr 'A-Z' 'a-z'
hello who is this

‘A-Z’和’a-z’都是字符組。我們可以按照需要追加字符或字符類來構造自己的字符組。
‘ABD-}’、‘aA.,’、‘a-ce-x’以及’a-c0-9’等均是合法的集合。定義集合也很簡單,不
需要書寫一長串連續的字符序列,只需要使用“起始字符-終止字符”這種格式就行了。這種寫法也可以和其他字符或字符類結合使用。如果“起始字符-終止字符”不是有效的連續字序列,那麼它就會被視爲含有3個元素的集合(起始字符、-和終止字符)。你也可以使用像’\t’、’\n’這種特殊字符或其他ASCII字符。

4.3 加密與解密

在tr中利用集合的概念,可以輕鬆地將字符從一個集合映射到另一個集合中。下面來看一個用tr進行數字加密和解密的例子:

$ echo 12345 | tr '0-9' '9876543210'
87654 # 已加密
$ echo 87654 | tr '9876543210' '0-9'
12345 # 已解密

tr命令可以用來加密。ROT13是一個著名的加密算法。在ROT13算法中,字符會被移動13
個位置,因此文本加密和解密都使用同一個函數:

$ echo "tr came, tr saw, tr conquered." | tr 'a-zA-Z' 'n-za-mN-ZA-M'

輸出如下:

ge pnzr, ge fnj, ge pbadhrerq.

對加密後的密文再次使用同樣的ROT13函數,我們可以採用:

$ echo ge pnzr, ge fnj, ge pbadhrerq. | tr 'a-zA-Z' 'n-za-mN-ZA-M'

輸出如下:

tr came, tr saw, tr conquered.

4.4 用tr刪除字符

tr有一個選項-d,可以通過指定需要被刪除的字符集合,將出現在stdin中的特定字符清
除掉:

$ cat file.txt | tr -d '[set1]'
#只使用set1,不使用set2

例如:

$ echo "Hello 123 world 456" | tr -d '0-9'
Hello world
# 將stdin中的數字刪除並打印刪除後的結果

4.5 字符組補集

我們可以利用選項-c來使用set1的補集。下面的命令中,set2是可選的:

tr -c [set1] [set2]

如果只給出了set1,那麼tr會刪除所有不在set1中的字符。如果也給出了set2,tr會將不
在set1中的字符轉換成set2中的字符。如果使用了-c選項,set1和set2必須都給出。如果-c與-d選項同時出現,你只能使用set1,其他所有的字符都會被刪除。

下面的例子會從輸入文本中刪除不在補集中的所有字符:

$ echo hello 1 char 2 next 4 | tr -d -c '0-9 \n'
124

接下來的例子會將不在set1中的字符替換成空格:

$ echo hello 1 char 2 next 4 | tr -c '0-9' ' '
1 2 4

4.6 用tr壓縮字符

tr命令能夠完成很多文本處理任務。例如,它可以刪除字符串中重複出現的字符。基本實現形式如下:

tr -s '[需要被壓縮的一組字符]'
$ echo "GNU is not UNIX. Recursive right ?" | tr -s ' '
GNU is not UNIX. Recursive right ?

tr命令還可以用來刪除多餘的換行符:

$ cat multi_blanks.txt | tr -s '\n'
line 1
line 2
line 3
line 4

將文件中的數字列表進行相加:

$ cat sum.txt
1
2
3
4
5
$ cat sum.txt | echo $[ $(tr '\n' '+' ) 0 ]
15

在命令中,tr命令將’\n’替換成了’+’,我們因此得到了字符串1+2+3+…5+,但是在字符
串的尾部多了一個操作符+。爲了抵消這個多出來的操作符,我們再追加一個0。
$[ operation ]執行算術運算,因此就形成了以下命令:

echo $[ 1+2+3+4+5+0 ]

如果有一個包含字母和數字的文件,我們想計算其中的數字之和,這需要更強的技巧性:

$ cat test.txt
first 1
second 2
third 3

利用tr的-d選項刪除文件中的字母,然後將空格替換成+:

$ cat test.txt | tr -d [a-z] | echo "total: $[$(tr ' ' '+')]"
total: 6

$[$(tr ' ' '+')]被替換爲 $[+1+2+3]

4.7 字符類

tr可以將不同的字符類作爲集合使用,所支持的字符類如下所示。
 alnum:字母和數字。
 alpha:字母。
 cntrl:控制(非打印)字符。
 digit:數字。
 graph:圖形字符。
 lower:小寫字母。
 print:可打印字符。
 punct:標點符號。
 space:空白字符。
 upper:大寫字母。
 xdigit:十六進制字符。
可以按照下面的方式選擇所需的字符類:

tr [:class:] [:class:]

例如:

$ echo "hello world" | tr '[:lower:]' '[:upper:]'
HELLO WORLD

五、校驗與覈實

5.1 MD5校驗和算法

5.1.1 實戰演練

md5sum校驗和計算的方法如下:

$ md5sum file1 file2 file3 ..

當使用多個文件時,輸出中會在每行中包含單個文件的校驗和:

[checksum1] file1
[checksum1] file2
[checksum1] file3

使用下列命令計算md5sum:

$ md5sum filename
68b329da9893e34099c7d8ad5cb9c940 filename

如上所示,md5sum是一個長度爲32個字符的十六進制串。我們可以將輸出的校驗和重定向到一個文件中,以備後用:

$ md5sum filename > file_sum.md5

可以按照下面的方法用生成的文件覈實數據完整性:

$ md5sum -c file_sum.md5
test.txt: OK
# 這個命令會輸出校驗和是否匹配的信息

5.2 對目錄進行校驗

校驗和是從文件中計算得來的。對目錄計算校驗和意味着需要對目錄中的所有文件以遞歸的方式進行計算。

md5deep或sha1deep命令可以遍歷目錄樹,計算其中所有文件的校驗和。你的系統中可能並沒有安裝這兩個程序。可以使用apt-get或yum來安裝md5deep軟件包。該命令的用法如下:

$ md5deep -rl directory_path > directory.md5
# -r使用遞歸遍歷
# -l使用相對路徑。默認情況下,md5deep會輸出文件的絕對路徑

或者也可以結合find來遞歸計算校驗和:

$ find directory_path -type f –print0 | xargs -0 md5sum >> directory.md5

用下面的命令進行覈實:

$ md5sum -c directory.md5

5.3 shadow-like散列(加鹽散列)

在Linux中,用戶密碼是以散列值形式存儲在文件/etc/shadow中的。該文件中典型的一行內容類似於下面這樣:

test:$6$fG4eWdUi$ohTKOlEUzNk77.4S8MrYe07NTRV4M3LrJnZP9p.qc1bR5c.
EcOruzPXfEu1uloBFUa18ENRH7F70zhodas3cR.:14790:0:99999:7:::

該行中的

$6$fG4eWdUi$ohTKOlEUzNk77.4S8MrYe07NTRV4M3LrJnZP9p.qc1bR5c.
EcOruzPXfEu1uloBFUa18ENRH7F70zhodas3cR

是密碼對應的散列值。
有時候,我們編寫的一些腳本需要編輯密碼或是添加用戶。在這種情況下,我們必鬚生
成shadow密碼字符串,向shadow文件中寫入類似於上面的文本行。可以使用openssl來
生成shadow密碼。shadow密碼通常都是加鹽密碼(salted password)。所謂的“鹽”(SALT)就是一個額外的字符串,起混淆的作用,使加密更加難以破解。鹽是由一些隨機位組成的,它們作爲密鑰生成函數的輸入之一,產生密碼的加鹽散列。

$ openssl passwd -1 -salt SALT_STRING PASSWORD
$1$SALT_STRING$323VkWkSLHuhbt1zkSsUG.

將SALT_STRING替換爲隨機字符串並將PASSWORD替換成你想要使用的密碼。

六、加密工具與散列

6.1 crypt

crypt命令通常並沒有安裝在Linux系統中。它是一個簡單的加密工具,相對而言不是那
麼安全。該命令從stdin接受輸入,要求用戶創建口令,然後將加密數據輸出到 stdout:

$ crypt <input_file >output_file
Enter passphrase:

我們在命令行上提供口令:

$ crypt PASSPHRASE <input_file >encrypted_file

如果需要解密文件,可以使用:

$ crypt PASSPHRASE -d <encrypted_file >output_file

6.2 gpg(GNU privacy guard,GNU隱私保護)

用gpg加密文件:

$ gpg -c filename

命令會採用交互方式讀取口令並生成filename.gpg。使用以下命令解密gpg文件:

$ gpg filename.gpg

上述命令讀取口令並解密文件。

6.3 base64

Base64是一組相似的編碼方案,它將二進制數據轉換成以64爲基數的形式(radix-64
representation),以可讀的ASCII字符串進行描述。這類編碼程序可用於通過E-mail傳輸二進制數據。base64命令能夠編碼/解碼Base64字符串。要將文件編碼爲Base64格式,可以使用:

$ base64 filename > outputfile

或者

$ cat file | base64 > outputfile

base64命令可以從stdin中讀取。
解碼Base64數據:

$ base64 -d file > outputfile

或者

$ cat base64_file | base64 -d > outputfile
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章