标签: bash

我应该在我的所有脚本上放置 *.sh 和 *.rb 文件扩展名吗?

我的 $HOME/bin 目录中有一堆手动执行的可执行脚本。有些是用 bash 编写的,有些是用 Ruby 编写的。它们都在顶部有一条 shebang 行,告诉 shell 使用什么解释器(在我的例子中是 bash 或 Ruby)。

我想知道是否最好在这些脚本上放置文件扩展名以指示它们是用什么脚本语言编写的?例如,Ruby 中的脚本具有 *.rb 后缀,而 bash 中的脚本具有 *.sh 后缀。

目前,这些脚本只有简单的名称,没有文件扩展名。

最佳做法是什么?

script bash shell-script

21
推荐指数
3
解决办法
1万
查看次数

Bash:检测脚本中的执行与源代码?

我有一个脚本散落在我的文件系统周围(构建过程的副作用),它设置了一些需要在我的 shell 中正确操作的全局环境变量(LD_LIBRARY_PATH、PATH、ROOTDIR 等)。当然,这意味着我需要source script.sh. script.sh让它工作,而不是./script.sh(这会产生一个新的 shell,而不是在我当前的 shell 中设置变量)。

有什么我可以添加到脚本中来防止(或警告)有人运行的./script.sh吗?

bash

21
推荐指数
2
解决办法
7655
查看次数

使用 histappend 时 Bash 历史记录丢失

我喜欢保留很多历史,所以我histappend在我的.bashrc. 大多数情况下,一切正常,历史记录是由许多 shell 附加而成的。然而,每隔一段时间,我会启动一个新的 shell 并发现我已经丢失了整个历史——而且它通常只包含来自最后一个 shell 的一些退出命令(即它不仅仅是覆盖而不是附加)。因此,我怀疑它是在 shell 退出时发生的,而不是在其他一些进程杀死.bash_history文件时发生的。支持这个结论,我的提示中有历史命令编号,而且我从未见过它们跳下来。

有人遇到过类似的问题吗?或者甚至只是有关于如何追踪问题的建议?

bash history

20
推荐指数
3
解决办法
7479
查看次数

/etc/bash.bashrc 和 ~/.bashrc 有什么区别?我应该使用哪一种?

我什么时候应该使用两个 .bashrc 文件中的每一个来设置我的别名、提示等?

linux bash shell bashrc

20
推荐指数
1
解决办法
2万
查看次数

如何比较bash中的文件时间戳?

如何比较两个文件的时间戳?

我试过这个,但它不起作用:

file1time=`stat -c %Y fil1.txt`
file2time=`stat -c %Y file2.txt`
if[$file1time -gt $file2time];
then
 doSomething
fi
Run Code Online (Sandbox Code Playgroud)

我按顺序打印了两个时间戳,它给了我

1273143480
1254144394
./script.sh: line 13: [1273143480: command not found
Run Code Online (Sandbox Code Playgroud)

所以基本上如果比较不起作用,我想。或者如果有任何其他比我正在做的更好的方式,请告诉我。我需要改变什么?

linux bash comparison timestamp

20
推荐指数
2
解决办法
4万
查看次数

如何使用正则表达式在命令行上删除文件?

假设我有 20 个名为 FOOXX 的文件,其中 XX 是文件的编号,例如 01、02 等。

目前,如果我想删除小于 10 的所有文件,这很容易,我只需使用通配符,例如 rm FOO0*

但是,如果我想删除某个范围内的特定文件,例如 13-15,这将变得更加困难。

rm FPP[13-15] 不起作用,并询问我是否要删除所有文件。同样 rm FOO1[3-5] 希望删除所有以 FOO1 开头的文件

那么,删除这样的文件范围的最佳方法是什么?

我已经尝试过 bash 和 zsh,我认为它们对于这样一个基本任务并没有太大区别?

linux bash zsh shell regex

20
推荐指数
3
解决办法
6万
查看次数

是否有 Bash 命令将 \r\n 转换为 \n?

是否有 Bash 命令将 \r\n 转换为 \n?

当我将我的脚本从 Windows 上传到 Linux 时,我需要一个像这样的实用程序来使工作正常进行。

linux bash carriage-return newlines

20
推荐指数
4
解决办法
3万
查看次数

由于 .bashrc 中的这一行,Bash 启动缓慢。什么可能导致这种情况?

我的.bashrc文件包含一行这样的效果:

alias prog="/path/to/script.sh $(find $(pwd) -name prog)"
Run Code Online (Sandbox Code Playgroud)

当我注释掉这一行时,当我打开一个新终端时,Bash 几乎立即启动。有了这条线,在我的光标出现之前有 4-5 秒的延迟。

删除嵌套命令$(pwd)等也会再次加快速度。为什么会这样?我还能以某种方式使用嵌套命令吗?

linux bash alias bashrc bash-alias

20
推荐指数
1
解决办法
8234
查看次数

/bin/ls 的排序方式与 ls 不同

$ ls |sort
xyz-0.0.1-1554490900.rpm
xyz-0.0.1-1554745305.rpm
xyz-0.0.1-1554751021.rpm
xyz-0.0.1-1555513460.rpm
xyz-0.0.1-1555951745.rpm
xyz-0.0.1-1554323568.rpm

$ /bin/ls |sort
xyz-0.0.1-1554323568.rpm
xyz-0.0.1-1554490900.rpm
xyz-0.0.1-1554745305.rpm
xyz-0.0.1-1554751021.rpm
xyz-0.0.1-1555513460.rpm
xyz-0.0.1-1555951745.rpm

$ which ls
alias ls='/bin/ls --color'
        /bin/ls
Run Code Online (Sandbox Code Playgroud)

请注意,这两个命令之间的排序不同(ls |sort导致排序不正确)。这一定是由于颜色标志,但为什么呢?

linux unix bash command-line

20
推荐指数
2
解决办法
4058
查看次数

权限为“x”时无法执行脚本

但是,鉴于以下情况,我在当前目录中有一个脚本:

  1. 权限是 -rwxr-xr-x
  2. 该脚本#!/bin/bash在文件顶部有一个shebang
  3. 我的壳是 /bin/bash
  4. 我可以使用执行它 bash script.sh

我无法使用./script.sh. 它给了我:

bash: ./script.sh: 权限被拒绝

为什么会发生这种情况,解决方案是什么?

linux bash shell

20
推荐指数
1
解决办法
1645
查看次数