`
zang232
  • 浏览: 10159 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

01:如何获取当前脚本的路径

阅读更多

个现实的问题是:脚本中经常需要写一些路径,比如文件夹,文件名等;

我们可以简单的把所有路径写成绝对路径,但这为之后迁移、升级挖下了“坑”。

于是:我们希望把所有的这些路径信息或其它配置信息放在单独的文件中,然后在脚本使用之前source进去。

一个经典的作法是:定义一个根路径,然后所有路径依赖于这个根路径来生成相对路径;

 

但事实上这样做可能还是不够好,你可能需要配置很多东西,然后每次迁移的时候都要改配置文件。经典的书箱《Unix编程艺术》中关于可配置的经典总结是:

  • Unix 提倡建立机制而把策略决定权留给用户,往往会导致选项过多。
  • 不应该配置
    • 能够可靠检测的东西;
    • 用户不应该看到优化开关;
    • 能用脚本包装器或简单管道完成的任务,就不要使用配置 开关实现。

 

总结起来就是:能够可靠检测的东西是不应该配置的;

如我们会经常检测当前的操作系统(java可以通过os.name属性得到),然后做一些处理等;那现在的问题是:能够在shell中获取可靠的当前路径嘛?

答案是肯定的。



 

经典的linux软件包的结构如左图所示:

我们假设我们的需求是:放置在bin目录中的脚本,能够自动识别找到logs目录,将脚本产生的输出写到logs目录中。

你可以通过如下的脚本来完成这个任务:

 

bin=$(dirname "$0")                   #$0表示当前脚本名称,dirname获取当前脚本的所在目录
bin=$(cd "$bin";pwd)                 #cd到这个目录可以保证链接目录找到源,通过pwd获取真实目录
base=$(cd "$bin";cd ..;pwd)        #cd ..可以返回bin的上层目录,也就是根目录

logs="${base}/logs"           #依据根目录,我们找到了相对根目录的logs目录

mkdir -p ${logs}/test   #mkdir -p 可以保证在logs目录不存在的情况下我们自动生成(所有的父目录);

echo "test"  \
> "${logs}/test/$(date +%Y-%m-%d).log" 2>&1  #最后我们可以把执行结果以每天1个文件的形式写入输出;

 

 

 


  • 大小: 1.3 KB
分享到:
评论

相关推荐

    PowerShell中获取当前运行脚本路径的方法

    2. **读取配置文件**:如果配置文件与主脚本位于同一目录,那么通过获取当前脚本路径,可以轻松地定位到配置文件的位置。 3. **日志记录**:在日志文件中记录脚本的运行路径,可以帮助后续维护人员快速定位问题发生...

    Linux获取当前脚本真实路径的方法

    首先,让我们了解两种常用的方法来获取当前脚本的路径。 1. **使用bash内置变量$0** `$0` 是bash shell中的一个特殊变量,它表示当前执行的脚本的文件名。然而,当脚本通过相对路径或软链接执行时,$0 只会给出相...

    javascript文件中获取当前文件路径

    在开发javascript插件的过程中,我们有时候需要获取当前JS文件的路径,用于自动加载一些图片、CSS等外部资源,但是javascript文件中并没有像PHP那样的__FILE__常量来供我们取得当前文件路径

    BAT批处理脚本-获取完整路径.zip

    "获取完整路径.bat"这个脚本的核心可能就是使用了`CD`和`DIR`等命令来获取当前工作目录或特定文件的完整路径。 1. **`CD`命令**:此命令用于改变当前目录。在批处理脚本中,它可以帮助我们导航到目标文件或目录所在...

    C#获取当前页面的url

    ### C# 获取当前页面的URL 在Web开发中,经常需要获取当前页面的URL以便进行进一步的操作或处理。本文将详细介绍如何使用C#在ASP.NET应用程序中获取当前页面的URL,以及简要介绍如何使用JavaScript获取当前页面的...

    BAT批处理脚本-文件相关操作-获取相对路径.cmd.zip

    在这个名为"BAT批处理脚本-文件相关操作-获取相对路径.cmd.zip"的压缩包中,包含了一个用于获取文件相对路径的批处理脚本。 批处理脚本的编写通常涉及到DOS命令,例如`cd`(改变目录)、`dir`(列出目录内容)和`...

    使用bat获取当前路径下所有文件夹和文件名,并换行输出至txt文件中

    如题使用bat(脚本实现这个功能)获取当前路径下所有文件夹和文件名,并换行输出至txt文件中。

    获取当前网站的路径

    根据给定的文件信息,我们可以总结出以下关于“获取当前网站的路径”的相关知识点: ### 知识点一:理解网站路径的概念 1. **网站路径定义**:网站路径指的是在Web服务器上存储网站文件的具体位置。这通常包括网站...

    Shell中获取脚本所在目录绝对路径的方法

    2. **资源定位**:如果脚本需要访问特定的数据文件或配置文件,那么获取当前脚本的绝对路径可以帮助脚本确定这些资源的准确位置。 3. **日志记录**:在记录日志时,有时需要知道日志文件的确切位置,这时就需要使用...

    PHP获取当前url路径的函数及服务器变量[定义].pdf

    在其他情况下,我们可能需要获取当前脚本的路径,可以使用 SCRIPT_NAME 变量。 uchome 系统中处理技巧 在uchome 系统中,我们可以使用以下代码来处理 REQUEST_URI 变量: ```php if (!isset($_SERVER['REQUEST_URI...

    ant自动获取文件路径

    标题“ant自动获取文件路径”涉及的是Apache Ant这一构建自动化工具在处理文件路径时的技巧。Apache Ant是一个基于Java的构建工具,它被广泛用于Java项目中,类似于Unix的make,但依赖于XML来描述构建过程。在Ant中...

    python获取当前目录路径和上级路径的实例

    这里使用的是os.path.abspath()函数结合os.path.dirname(__file__),其中__file__是一个特殊的变量,它包含了当前脚本的路径。os.path.dirname()函数用于获取路径中的目录部分。所以,os.path.abspath(os.path....

    BAT批处理脚本-文件相关操作-98下获取当前路径.cmd.zip

    在这个特定的案例中,我们有一个名为"98下获取当前路径.cmd.zip"的压缩包,其中包含了一个批处理脚本,用于在Windows 98系统下获取当前目录的路径。 批处理脚本的核心是DOS命令,这些命令允许用户执行一系列系统...

    VBS脚本入门教程3

    - **作用**:终止当前脚本的执行。 - 示例代码:`WScript.Quit(1)` - **参数解释**:括号内的数字代表退出状态码,通常用于表示脚本执行的状态,比如0表示正常结束,非零值则可能表示异常退出。 ### 创建快捷方式...

    linux获取shell脚本所在绝对路径操作介绍.docx

    在Linux系统中,编写Shell脚本时,有时我们需要获取当前执行的脚本的绝对路径,以便于进行一些路径相关的操作,比如引用同目录下的其他文件或执行其他脚本。本篇文档将详细介绍如何在Shell脚本中获取脚本的绝对路径...

    vbs中获取脚本当前路径的2个方法

    在VBScript(Visual Basic Script)编程环境中,获取当前脚本所在的路径是经常遇到的需求,这有助于定位和操作与脚本相关的文件或目录。本文将详细解释两种通过FileSystemObject(FSO)来获取脚本路径的方法。 **...

    用批处理获取当前目录下所有文件的路径

    ### 使用批处理脚本获取当前目录下所有文件的路径 #### 概述 在Windows操作系统中,批处理脚本(`.bat` 文件)是一种非常实用的工具,它可以帮助用户自动化执行一系列命令。本文将详细介绍如何编写一个批处理脚本...

    BAT批处理脚本-文件相关操作-获取路径中指定层深的字符串.cmd.zip

    例如, `%~dp0` 变量可以获取当前批处理脚本所在的完整路径,`%~nx0` 则会得到脚本的文件名和扩展名。我们可以通过字符串处理技术,如字符串截取、查找替换等,来获取路径中特定位置的字符串。 在批处理脚本中,...

    path-pursuit:ROS自主车路径跟踪算法

    该代码脚本实现了路径跟随的功能,使用了ROS和Ackermann驱动控制车辆进行导航。其中,在Path和Odometry消息的发布和订阅中实现了一个跟踪路径的类following_path,并在__init__方法中进行初始化。callback_read_path...

    windows脚本编成中的对象介绍(重要).doc

    接下来,使用`CreateShortcut`方法创建了一个指向当前脚本的快捷方式,并设置了快捷方式的各种属性,最后调用`Save`方法保存该快捷方式。 通过这些属性和方法的学习,可以更加熟练地使用Windows脚本来自动化各种...

Global site tag (gtag.js) - Google Analytics