首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Bash shell脚本中如何检查一个目录是否存在

问: 在 Bash shell 脚本中什么命令检查某个目录是否存在?...答: 要检查目录是否存在,请执行以下操作: if [ -d "$DIRECTORY" ]; then echo "$DIRECTORY does exist." fi 一行代码的形式则如下: [...如果不考虑符号链接到目录的情况,后续命令可能无法按预期工作,因为符号链接也会通过这个检查。...在 Unix 的早期设计中,许多系统资源都被抽象为文件,以实现统一和一致的接口处理,这样程序员可以使用相同的系统调用来操作不同的资源,如普通文件、目录、设备等。...这种哲学影响了许多 Unix-like 的操作系统,包括 Linux。 这里顺便整理一下 Bash 中对文件的各种测试: -a file -- 如果文件存在则为真。

37610

如何从Bash脚本本身中获得其所在的目录

问: 如何从Bash脚本本身中获得其所在的目录? 我想使用Bash脚本作为另一个应用程序的启动器。我想把工作目录改为Bash脚本所在的目录,以便我可以对该目录下的文件进行操作,像这样: $ ....但是在以相对路径的方式去执行脚本时,获取的目录信息是相对路径,不能满足其他需要获取绝对路径的场景。 如果要获取绝对路径,可以使用如下方法: #!...$script_dir 其中第3行代码,无论从何处调用它,都将为你提供脚本的完整目录路径。...测试结果如下: 另外,可以根据第一种方法结合使用 realpath 命令,也可获取脚本所在目录的绝对路径: #!...为什么我不能在脚本中使用"cd"来更改目录 为什么在可执行文件或脚本名称之前需要.

34920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在Bash中如何从字符串中删除固定的前缀后缀

    如果模式与 parameter 扩展后的值的开始部分匹配,则扩展的结果是从 parameter 扩展后的值中删除最短匹配模式(一个 # 的情况)或最长匹配模式(## 的情况)的值 ${parameter...如果模式与 parameter 扩展后的值的末尾部分匹配,则扩展的结果是从 parameter 扩展后的值中删除最短匹配模式(一个 % 的情况)或最长匹配模式(%% 的情况)的值。...e "s/$suffix$//" o-wor 在sed命令中,^ 字符匹配以 prefix 开头的文本,而结尾的 匹配以 参考文档: stackoverflow question 16623835...https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion 相关阅读: 在bash中:-(冒号破折号)的用法...在Bash中如何将字符串转换为小写 在shell编程中$(cmd) 和 `cmd` 之间有什么区别 如何从Bash变量中删除空白字符 更多好文请关注↓

    53410

    在 Linux 中永久并安全删除文件和目录的方法

    引言 在大多数情况下,我们习惯于使用 Delete 键、垃圾箱或 rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘中(或任何存储介质)删除文件的方法。...在本文中,我们将解释一些命令行工具,用于永久并安全地删除 Linux 中的文件。 1.shred – 覆盖文件来隐藏内容 shred 会覆盖文件来隐藏它的内容,并且也可以选择删除它。 ?...你可以在 shred 的帮助页中找到更多的用法选项和信息: ? 2.wipe – 在 Linux 中安全删除文件 wipe 命令可以安全地擦除磁盘中的文件,从而不可能恢复删除的文件或目录内容。...安装完成后,你可以使用 srm 工具在 Linux 中安全地删除文件和目录。 ? 下面是使用的选项: ? ? 阅读 srm 手册来获取更多的使用选项和信息: ?...假设你创建了一个单独的分区 /home 来存储正常的系统用户主目录,你可以在该分区上指定一个目录,以便在其上应用 sfill: ?

    4.6K50

    系统运维|在 CentOSRHEL 系统上生成补丁合规报告的 Bash 脚本

    但是,如果你运行的是没有Satellite集成的小型RedHat环境,或者它是CentOS系统,那么此脚本将帮助你创建该报告。 补丁合规性报告通常每月创建一次或三个月一次,具体取决于公司的需求。...根据你的需要添加cronjob来自动执行此功能。 此bash脚本通常适合于少于50个系统运行,但没有限制。 保持系统最新是Linux管理员的一项重要任务,它使你的计算机非常稳定和安全。...在RHEL和CentOS系统上安装安全更新的四种方法在RHEL和CentOS上检查或列出已安装的安全更新的两种方法此教程中包含四个shell脚本,请选择适合你的脚本。...方法1:为CentOS/RHEL系统上的安全修补生成补丁合规性报告的Bash脚本此脚本只会生成安全修补合规性报告。它会通过纯文本发送邮件。...方法2:为CentOS/RHEL系统上的安全修补、bugfix、增强生成补丁合规性报告的Bash脚本脚本会为你生成安全修补、bugfix、增强的补丁合规性报告。它会通过纯文本发送邮件。

    47930

    在Linux系统上恢复误删除的文件或目录命令方法

    linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别检查介绍下。 一、误删除文件进程还在的情况。...这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。.../testdelete.py 命令查看这个目录,文件已经不存在了,那么现在我们将其恢复出来。 1. lsof查看删除的文件进程是否还存在。...创建准备删除的目录并echo一个 带有内容的文件: [root@21yunwei_backup 21yunwei]# tree . ├── deletetest │ └── mail │...比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。 通过dd命令对当前分区进行备份,防止第三方软件恢复失败导致数据丢失。

    7.8K30

    《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    一些控制脚本的方式:向脚本发送信号、修改脚本优先级,在脚本运行时切换到运行模式  16.1 处理信号 linux利用信号与运行在系统中的进程进行通信。...会发送给当前在shell中运行的所有进程。 2.暂停进程 在进程运行时暂停进程,无需终止它。让程序继续保留在内存中,并能从上次停止的位置继续运行。 有时打开了一个关键的系统文件锁,这就比较危险了。...16.1.5 修改或移除捕获 在脚本中的不同位置进行不同的捕获处理,需要重新使用带有新选项的trap命令。 修改了信号捕获后,脚本处理信号的方式就会发生变化。 也可以删除以及设置好的捕获。...默认情况下,atd会没60s检查一下这个目录,如果设置的运行时间和当前时间匹配,atd守护进程就会运行此作业。 这个只能指定时间运行,不能循环运行。...需要指定要运行命令或脚本的全路径名,后面还可以接参数和重定向符号 2.

    3K61

    怎么正经的实现shell脚本单例运行?

    文件锁 实际上这种方法你已经在《如何让你的程序同时只有一个在运行》介绍过了,只不过之前是用于编写C/C++程序,而这里是用于shell脚本。...我们来回顾一下,这是一个怎样的过程: 1.运行前检查是否有该锁文件,并且文件中的进程正在运行 2.如果有并且程序正在运行,则已经有实例在运行 3.否则,无实例,创建锁文件,写入进程id 4.退出时,删除锁文件...解释一下第一条,为什么一定要确定锁文件中的进程正在运行,因为,有些情况下如果运行的时候退出没有删除该文件,则会导致新的实例永远无法运行。...rm -f {LOCKFILE} 脚本最后需要删除锁文件 flock 说到锁文件,这里就不得不提flock命令了。...没有前面的一些巧妙处理,我们很多时候会很难删除原先创建的锁文件,比如: 脚本被意外中断,没来得及执行删除 多个脚本产生竞争,导致判断异常,比如前面有一个脚本运行,判断没有锁文件,下一步准备创建,但是另外一个脚本又先创建了

    2.3K20

    如何避免 Cronjob 重复运行

    00:00:00 /bin/bash /var/tmp/forever.sh解决方案方案1:进程数这是笔者第一时间自己想的方式,通过进程数来判断当前定时脚本同时执行的数量,比如执行的脚本名为/opt/test.sh...exit 1fido something但是事与愿违,当我们在/opt/test.sh中通过ps命令获取定时任务运行数量的时候发现,如果只存在当前的任务运行时,得到的进程数是3,如果有其他一个已在运行,...经过一番研究发现,当只存在当前任务运行时,如果脚本里面是直接运行ps命令,得到的进程数是2,如下所示:ps -ef | grep /opt/test.sh | wc -l不难看出这是$()的原因,它在shell...而进程号文件锁则可以在文件锁判断之外,再对锁文件中的进程号进行判断是否还在运行,具体代码如下:#!...总结上面提到了五种方案,第一种方案略显粗糙,但是缺陷相对来说较少;第二种方案存在锁文件被意外删除或者进程被kill的风险;第三种方案存在锁文件被意外删除和新进程占用相同进程号的问题;第四种方案还是存在意外删除锁文件的问题

    1.6K40

    确保同一时间只有一个shell脚本实例在运行的方法

    问: 有什么快速简便的方法可以确保在给定的时间内只有一个shell脚本实例在运行? 答: 方法一 使用flock(1)在文件描述符上创建一个独占锁。 #!...flock命令是Linux的文件锁命令,可以通过一个锁文件,来控制在shell中逻辑的互斥性。 flock命令的常见选项包括: -s:获取共享锁,有时称为读锁。 -x:获取独占锁,有时称为写锁。...-n:获取锁失败时立即返回,而不是等待锁被释放。 -w:等待锁释放的时间,单位为秒。 方法二 是一个使用锁定文件并将PID回显到其中的实现。...此外,对trap的调用将确保锁定文件被删除,即使你的进程被杀死(kill -9除外)。...$* $@ 等各种符号的含义 如何使用bash脚本并行运行多个程序 如何从Bash脚本本身中获得其所在的目录 如何在Bash中连接字符串变量 如何编写bash脚本以便在进程死机时重新启动进程

    61040

    运维老司机实战中的 Shell 开发经验总结

    3)使用rm前确认 删除前备份删除对象信息,避免使用变量,直接使用文件和目录名; 如果必须使用时,删除前,建议检查避免误删,删除目录和文件信息保留: ?...在较新的bash中你可以用下面的方法来代替,[[ ]]关键字能正确处理空白、空格、带横线等问题。 ?...10)cd的易错问题 cd 有可能会出错,导致要执行的命令就会在你预想不到的目录里执行了。所以一定要记得判断cd的返回值。 ? 如果你要根据cd的返回值执行多条命令,可以用 ||。 ?...6)避免文件无限增长的风险 向一个文件中追加数据时,一定要设置阀值,必要时清空,避免文件无限增大: ? 目录增加清理过期文件策略,避免产生的文件越来越多,造成文件节点用尽: ?...目录中的文件过多,会报参数太长错误无法删除,建议放在循环中遍历删除: ?

    1.1K30
    领券