制作 shell 脚本压缩 Android 8.0代码
制作 shell 脚本压缩 Android 8.0代码 ★ 初衷下载了Android 8.0.0r17的代码,想把代码压缩保存,并上传到百度网盘分享。 所有一级目录,一共25个,如下: art
bionic
bootable
build
cts
dalvik
developers
development
device
docs
external
frameworks
hardware
kernel
libcore
libnativehelper
packages
pdk
platform_testing
prebuilts
sdk
system
test
toolchain
tools
在Linux中,右键每个目录,然后“压缩”,也可以将每个目录都压缩保存。 ★ 目标对于给定的目录,例如framework目录,将其压缩为framework.tar.gz。执行的命令为: tar -zcvf ../android_8.0.0_r17/frameworks.tar.gz frameworks --exclude=.git
注:当前目录android8.0src为Android 8.0.0r17代码的目录。android_8.0.0_r17目录是与当前目录同一级的,是存放.tar.gz文件的目录。大致的目录结构是这样的: home
| android8.0src (用于存放 Android 8.0 代码)
| |
| framework (与 framework 目录同级的其他目录,这里没列出来)
android_8.0.0_r17 (与 android8.0src 目录同级,用于存放 .tar.gz 文件)
android8.0src 目录下一共25个子目录,目标是分别压缩这25个目录,生成对应的 .tar.gz 文件。 注: 注意:当前目录一直是: ★ 获取目录名执行 有两种获取目录名的方式:
ls -l | grep "^d" | awk -F' ' '{print $9}' > zip.sh
其中, 选择上面的两种方式的任意一种,执行之后,zip.sh中的内容如下:(所有一级目录已经在文章开始给出了,所以之后为了节省篇幅,只列出几个目录名) art
device
frameworks
hardware
kernel (其他目录 略)
再次强调:为了节省篇幅,只列出了5个目录,其他目录省略了。 ★ 将每一行改成
|
item | comment |
---|---|
%s/str1/str2/gc |
%s 是替换,对应单词substitute。用str2替换掉str1。 后面的gc,g表示全局替换,即global。c表示用户确认,即confirm。 |
(.*)$ |
这个字符串对应上面说的str1,是一个正则表达式。.* 表示任意字符,$ 表示一行的结尾。( ) 是为了后面引用,即后面的1 就是( ) 中的内容。 |
1.tar.gz 1 --exclude=.git |
1 是引用前面加括号的内容。然后加上.tar.gz ,然后加上空格,1 再引用一次。然后再加上--exclude=.git 。 |
. ,( ,) ,/ |
分别对. ,( ,) ,/ 进行转义。 |
以第一行中的art
为例,( )
中的内容就是art
,所以后面的1
的内容就是art
。
然后art
就被替换为art.tar.gz art --exclude=.git
。
现在,zip.sh中的内容,如下:
art.tar.gz art --exclude=.git
device.tar.gz device --exclude=.git
frameworks.tar.gz frameworks --exclude=.git
hardware.tar.gz hardware --exclude=.git
kernel.tar.gz kernel --exclude=.git
(略)
★ 在每一行前面加上tar -zcvf ../android_8.0.0_r17/
还是在vim中。执行以下步骤(这些步骤就是批量操作多行的固定用法):
(1)将光标放到第一行的开头
(2)Ctrl + V (注:V表示V键,不是shift + v)
(3)J键(向下)或者下方向键,直到最后一行。
(4)shift + i,进入编辑模式,这时光标回到了第一行。
(5)拷贝粘贴tar -zcvf ../android_8.0.0_r17/
到光标所在行(第一行)。
(6)Esc键,这时所有行都是以tar -zcvf ../android_8.0.0_r17/
开头了。
现在,zip.sh中的内容,如下:
tar -zcvf ../android_8.0.0_r17/art.tar.gz art --exclude=.git
tar -zcvf ../android_8.0.0_r17/device.tar.gz device --exclude=.git
tar -zcvf ../android_8.0.0_r17/frameworks.tar.gz frameworks --exclude=.git
tar -zcvf ../android_8.0.0_r17/hardware.tar.gz hardware --exclude=.git
tar -zcvf ../android_8.0.0_r17/kernel.tar.gz kernel --exclude=.git
(略)
到此,已经达成目标了。
如果使用Notepad++,也可以在每一行开头批量添加tar -zcvf ../android_8.0.0_r17
,操作是:光标放到第一行开头,按住alt键(列选择),鼠标选择每一行的开头(即每一行第一个字符前面,不选中任何字符),然后拷贝粘贴tar -zcvf ../android_8.0.0_r17
,跟上面的效果一样。
★ 结语
VIM 有很强的对文本的处理能力,本文中只是冰山一角。 掌握正则表达式,可以事半功倍。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!