linux下乙個好玩的自解壓指令碼

2021-05-22 08:12:15 字數 1839 閱讀 8007

周海漢 /文

2010.4.22

seti@home的客戶端 boinc 軟體 ,linux下是乙個sh指令碼。有意思的是該指令碼有4m多。我想什麼指令碼這麼大啊?

下下來執行一下,居然在目錄下生成一堆東西。原來該指令碼是個自解壓指令碼。

分析了一下,自己並仿做了乙個。

指令碼前三行:

先建乙個目錄test,並塞入一些要打包的東西

zhouhh@zhh64:~/test$ ls

sendmail.py  test.c  testfor.sh

zhouhh@zhh64:~/test$ vi test.sh

輸入:#!/bin/sh

( read l; read l; read l ;exec cat ) < "$0" | gunzip | tar xf - && ls -l

exit

儲存,並改為可執行屬性。

該指令碼的意思,三個read l,隨後乙個cat,其實是讀取test.sh的前三行,並丟棄。即將該指令碼的三行不做處理。從第四行開始,送給gunzip,再送給tar解壓,最後顯示解壓的結果。

zhouhh@zhh64:~/test$ tar -zcvf data.tar.gz *

sendmail.py

test.c

testfor.sh

test.sh

zhouhh@zhh64:~/test$ ls

data.tar.gz  sendmail.py  test.c  testfor.sh  test.sh

此時看到有乙個tar.gz檔案。

將其放到test.sh中:

zhouhh@zhh64:~/test$ cat data.tar.gz >> test.sh

zhouhh@zhh64:~/test$ ls -lh test.sh

-rwxr-xr-x 1 zhouhh zhouhh 1.4k 2010-04-22 17:04 test.sh

此時指令碼有1.4k了。

新建個目錄去做實驗:

zhouhh@zhh64:~/test$ mkdir data

zhouhh@zhh64:~/test$ mv test.sh data

zhouhh@zhh64:~/test$ cd data

zhouhh@zhh64:~/test/data$ ls

test.sh

zhouhh@zhh64:~/test/data$ ./test.sh

總用量 16

-rwxr-xr-x 1 zhouhh zhouhh 975 2010-04-12 16:50 sendmail.py

-rw-r--r-- 1 zhouhh zhouhh  92 2010-04-22 12:06 test.c

-rwxr-xr-x 1 zhouhh zhouhh 558 2010-03-25 11:20 testfor.sh

-rwxr-xr-x 1 zhouhh zhouhh  88 2010-04-22 16:49 test.sh

zhouhh@zhh64:~/test/data$ ls

sendmail.py  test.c  testfor.sh  test.sh

zhouhh@zhh64:~/test/data$ cat test.sh

#!/bin/sh

( read l; read l; read l ;exec cat ) < "$0" | gunzip | tar xf - && ls -l

exit

此時data目錄下已經自解壓了原來test目錄下壓縮到data.tar.gz中的檔案。

該指令碼複雜一點可以繼續完成安裝等工作,有點類似於windows下winzip做的exe自解壓安裝檔案。

Android會是下乙個Linux?

近年來,智慧型手機終端市場的快速增長成為了大勢所趨。國外手機市場調研機構的 顯示,2010 年的全球手機市場整體出貨量將相較去年增長11.3 但其中智慧型手機整體出貨量和去年同比增長率卻高達35.5 的智慧型手機霸主諾基亞依然以接近40 的銷售份額領跑市場,市場佔比相當於第二名的rim 黑莓和第三名...

下乙個天亮

用起伏的背影 擋住哭泣的心 有些故事 不必說給 每個人聽 許多眼睛 看的太淺太近 錯過我沒被看見 那個自己 用簡單的言語 解開超載的心 有些情緒 是該說給 懂的人聽 你的熱淚 比我激動憐惜 我發誓要更努力 更有勇氣 等下乙個天亮 去上次牽手賞花那裡散步好嗎 有些積雪會自己融化 你的肩膀是我豁達的天堂...

下乙個排列

給定乙個若干整數的排列,給出按正數大小進行字典序從小到大排序後的下乙個排列。如果沒有下乙個排列,則輸出字典序最小的序列。樣例 左邊是原始排列,右邊是對應的下乙個排列。1,2,3 1,3,2 3,2,1 1,2,3 1,1,5 1,5,1 思路 1 先從右到左找到第乙個不屬於非最大字典序排列的元素l,...