我喜欢保留很多历史,所以我histappend在我的.bashrc. 大多数情况下,一切正常,历史记录是由许多 shell 附加而成的。然而,每隔一段时间,我会启动一个新的 shell 并发现我已经丢失了整个历史——而且它通常只包含来自最后一个 shell 的一些退出命令(即它不仅仅是覆盖而不是附加)。因此,我怀疑它是在 shell 退出时发生的,而不是在其他一些进程杀死.bash_history文件时发生的。支持这个结论,我的提示中有历史命令编号,而且我从未见过它们跳下来。
有人遇到过类似的问题吗?或者甚至只是有关于如何追踪问题的建议?
我什么时候应该使用两个 .bashrc 文件中的每一个来设置我的别名、提示等?
如何比较两个文件的时间戳?
我试过这个,但它不起作用:
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)
所以基本上如果比较不起作用,我想。或者如果有任何其他比我正在做的更好的方式,请告诉我。我需要改变什么?
假设我有 20 个名为 FOOXX 的文件,其中 XX 是文件的编号,例如 01、02 等。
目前,如果我想删除小于 10 的所有文件,这很容易,我只需使用通配符,例如 rm FOO0*
但是,如果我想删除某个范围内的特定文件,例如 13-15,这将变得更加困难。
rm FPP[13-15] 不起作用,并询问我是否要删除所有文件。同样 rm FOO1[3-5] 希望删除所有以 FOO1 开头的文件
那么,删除这样的文件范围的最佳方法是什么?
我已经尝试过 bash 和 zsh,我认为它们对于这样一个基本任务并没有太大区别?
我在我使用的每个 Linux 系统上都使用Ctrl-←和Ctrl-→但这些组合键在我的 Macbook Pro 上的 bash 中不起作用。它正在运行 Snow Leopard,而我正在使用内置的终端应用程序。
组合键似乎没有被任何东西之前或终端捕获,因为如果我 ssh 到我的一台 Linux 服务器,我可以使用Ctrl- ←/→跳转到命令行上的下一个/上一个单词。但是,当我在 Macbook 上的 bash 中尝试此组合键时,我只会得到“C”代表右箭头和“D”代表左箭头。
关于如何让这些密钥在 darwin bash 中工作的任何想法?
如何阻止 cp 命令提示覆盖。我想覆盖所有文件而不必继续返回终端。由于这些文件很大,需要一些时间才能完成。
我尝试使用 -f 选项。它仍然询问我是否要覆盖。
-f, --force
if an existing destination file cannot be opened, remove it and
try again (redundant if the -n option is used)
cp -f /media/somedir/somefiles* .
cp: overwrite `./somefilesxxx'? y
Run Code Online (Sandbox Code Playgroud) 我想用bash 中的变量中的\正斜杠(/)替换反斜杠()。我这样试过,但它不起作用:
home_mf = ${home//(\)//(/)}
Run Code Online (Sandbox Code Playgroud)
例如,我想
\a\b\c -> /a/b/c
Run Code Online (Sandbox Code Playgroud) 我的.bashrc文件包含一行这样的效果:
alias prog="/path/to/script.sh $(find $(pwd) -name prog)"
Run Code Online (Sandbox Code Playgroud)
当我注释掉这一行时,当我打开一个新终端时,Bash 几乎立即启动。有了这条线,在我的光标出现之前有 4-5 秒的延迟。
删除嵌套命令$(pwd)等也会再次加快速度。为什么会这样?我还能以某种方式使用嵌套命令吗?
$ 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导致排序不正确)。这一定是由于颜色标志,但为什么呢?
但是,鉴于以下情况,我在当前目录中有一个脚本:
-rwxr-xr-x#!/bin/bash在文件顶部有一个shebang/bin/bashbash script.sh我无法使用./script.sh. 它给了我:
bash: ./script.sh: 权限被拒绝
为什么会发生这种情况,解决方案是什么?