Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

将shell脚本用到实处

以后所有用的shell都push到github上https://github.com/huntinux/shell


忘记bash语法,命令怎么用怎么办? man bash


1、生成有规律的下载地址。

       今天在网上搜一篇英文文章,得到一个下载地址,http://web.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf,猜想应该还有别的pdf的地址,试了试果然有几个,如lecture10_1和lecture10_2,就想着把类似的地址都生成出来,然后用wget下载,就可以实现批量下载了。


#!/bin/sh

# download links http://web.eecs.umich.edu/~silvio/teaching/EECS598/lectures/*

link_prefix="http://web.eecs.umich.edu/~silvio/teaching/EECS598/lectures/"

for lec_num in `seq 0 1 10`
do
	for pdf_num in `seq 0 1 5`
	do
		wget ${link_prefix}lecture${lec_num}_${pdf_num}.pdf
	done
done

exit 0


2、获得shell脚本所在目录的绝对路径

github: https://github.com/huntinux/shell/blob/master/readlink.sh

原文:http://www.zeali.net/entry/497

        要得到正在执行的程序/脚本自身所存放的绝对路径,在 PHP 里面可以用dirname(realpath(__FILE__)) ; C# 则有System.Windows.Forms.Application.StartupPath ; java 似乎没有什么比较直接的方法,只能利用 CodeSource 来间接获取 。而在 linux shell 脚本里面如果想得到当前脚本文件存放的绝对路径,也没有太现成的命令可以调用,不过可以通过下面的语句来获取:

baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
echo "full path to currently executed script is : ${baseDirForScriptSelf}"

虽说大部分情况下我们并不需要这样的绝对路径来完成工作;但如果要把多个脚本、数据文件等内容打包作为一个整体来交付别人使用,又希望不论用户拷贝到哪个目录下执行脚本都能够正确的找到这个包里面的其他内容的话,用这样的脚本来自动定位包的根目录应该是个比较鲁棒的做法。


3添加一个新的环境变量

原来自己的工作目录不够用了,所以想设置一个新的环境变量WORK, 然后执行 cd $WORK,就可以切换到新工作目录。

$vim ~/.bashrc

WROK=/run/media/huntinux/F/huntinux_work

保存退出关闭终端,再打开终端 (或者$source ~/.bashrc 这样不必重启终端

$echo $WORK

/run/media/huntinux/F/huntinux_work

$cd $WORK

成功。

(关于~/.bashrc ~/.bash_profile等的区别将

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: murmurhash2和djb

下一篇: Android内存管理机制详解

精华推荐