一行命令引發的一系列討論
一、事由
前段時間 在 go語言中文網 上看到一個螞蟻金服的招聘帖子,給出了幾個簡單的關鍵字 和 一個 base64 加密的簡歷投遞郵箱的還原命令,非常簡單直接,能考察一些基礎命令的使用,還顯得很有檔次。
# 加密郵箱還原命令
echo Y2hlbnhpYW5nLmxqYyNhbGliYWJhLWluYy5jb20K | base64 -D | sed 's/#/@/'
然後就出現了一些質疑命令錯誤的回覆和解釋分析…
討論現場見文末附圖
二、分析
1. 原命令行分析
原命令爲三條指令的管道拼接;
- 第一條:
echo Y2hlbnhpYW5nLmxqYyNhbGliYWJhLWluYy5jb20K
,
echo
命令,直接輸出 一個 base64 加密的字符串Y2hlbnhpYW5nLmxqYyNhbGliYWJhLWluYy5jb20K
; - 第二條:
base64 -D
,
base64
命令,接收第一條命令的結果字符串,根據-D
參數選擇並執行 base64 解碼,得到第二步的結果:chenxiang.ljc#alibaba-inc.com
; - 第三條:
sed 's/#/@/'
,
sed
命令,接收第二步的結果,替換字符串中的#
爲@
,輸出最終結果:[email protected]
。
2. 問題分析
由於各個平臺對 base64
的具體實現都不太一樣,導致參數有一定的差別是不可避免的,就像各種智能設備對 Linux
、Android
系統定製裁剪一樣,取吾所需,量身定製,裁掉不需要的部分,保持精簡,雖然會因爲有時太任性而導致一些問題,但這纔是 Linux
開源軟件的魅力;
針對帖子正文中的命令 -D
,如果從未使用過此命令的話,直接在自己系統上實驗的非 mac
用戶就要開始報錯了;如果此時對 base64
認識停留在全世界 base64
命令只有一種 的話,就會開始質疑作者了;
再者如果作者使用 -d 參數就會保持各個平臺下都能保持命令兼容了。。。
3. 收穫
命令行就是我們日常開發、操作的百寶箱,幫助我們完成各種任務,方便、快捷、通用工具一定要掌握好;
對待計算機程序世界保持好奇心,發散思維,終有所獲…
(12月是一個讓人焦慮、忙碌的月份,開始焦慮一整年稀裏糊塗就要結束了,開始焦慮明年該如何如何 ,開始焦慮光陰易逝、世事無常;開始忙碌着做年終總結,開始忙碌着立明年的 Flag,開始忙碌着繼續焦慮…)
—2019-12-01—
附圖: