小编Mic*_*ant的帖子

updatedb: 无法为 `/var/lib/mlocate/mlocate.db' 打开临时文件

我去使用updatedb命令来更新索引,我得到

updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
Run Code Online (Sandbox Code Playgroud)

fyi locate 命令正在工作,例如

$ locate Index.xml
/usr/share/mysql/charsets/Index.xml
durrantm.../durrantm$ 
Run Code Online (Sandbox Code Playgroud)

尝试运行updatedb时如何克服这个问题?

locate updatedb

18
推荐指数
2
解决办法
3万
查看次数

使用 #!/bin/sh 或 #!/bin/bash 以获得 Ubuntu-OSX 兼容性和易用性和 POSIX

我知道我可以使用任一脚本作为调用所需 shell 的第一行。

#!/bin/sh如果与所有 unix 系统的兼容性是绝对要求,会推荐吗?

就我而言,我唯一关心的操作系统是 Ubuntu (Debian) 和 OSX。鉴于此,我可以使用#!/bin/bash并确保它可以在两个系统上运行吗?
这是否也可以更轻松地使用具有更现代和更清晰的命令语法的脚本?使用是否#!/bin/sh也与使用 POSIX 有关?

osx shell bash ubuntu posix

18
推荐指数
3
解决办法
2万
查看次数

使用目录树/文件名时的紧凑 bash 提示

在带有 Ubuntu 14.04 和 的系统中bash,我的PS1变量以以下内容结尾:

\u@\h:\w\$
Run Code Online (Sandbox Code Playgroud)

以便提示显示为

user@machinename:/home/mydirectory$
Run Code Online (Sandbox Code Playgroud)

然而,有时,当前目录有一个长名称,或者它在长名称的目录中,所以提示看起来像

user@machinename:/home/mydirectory1/second_directory_with_a_too_long_name/my_actual_directory_with_another_long_name$
Run Code Online (Sandbox Code Playgroud)

这将填充终端中的行,光标将转到另一行,这很烦人。

我想获得类似的东西

user@machinename:/home/mydirectory1/...another_long_name$
Run Code Online (Sandbox Code Playgroud)

有没有办法定义PS1变量来“包装”和“压缩”目录名称,永远不会超过一定数量的字符,从而获得更短的提示?

bash prompt directory directory-structure pwd

17
推荐指数
2
解决办法
3171
查看次数

删除一个流浪文件我看到 .nfs0000000000b869e300000001

我删除了一个文件,现在我看到:

$ ls
total 64
-rw-rw-r-- 1 502 17229 Sep 17 16:42 page_object_methods.rb
drwxrwxr-x 7 502   238 Sep 18 18:41 ../
-rw-rw-r-- 1 502 18437 Sep 18 18:41 new_page_object_methods.rb
-rw-r--r-- 1 502 16384 Sep 18 18:42 .nfs0000000000b869e300000001
drwxrwxr-x 5 502   170 Sep 21 13:48 ./
13:48:11 *vagrant* ubuntu-14 selenium_rspec_conversion
Run Code Online (Sandbox Code Playgroud)

如果我尝试删除它:

$ rm .nfs0000000000b869e300000001
rm: cannot remove ‘.nfs0000000000b869e300000001’: Device or resource busy
Run Code Online (Sandbox Code Playgroud)

这说明什么?我该怎么办

nfs rm files vagrant

16
推荐指数
1
解决办法
6121
查看次数

如何在脚本中使用 less 而不获得 ESC 转义字符?

当我less在命令行中使用时,输出就像 在此处输入图片说明

但是当我less在 bash 脚本中使用时,我得到: <code>[![在此处输入图片描述][1]][1]</code>

如何less在 bash 脚本中使用而不获取所有转义字符并使其像在交互式命令行中一样工作?

less scripting escape-characters

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

`at` 和 `cron` 作业的输出去哪儿了?

鉴于没有可显示的屏幕,标准输出atcron任务的去向在哪里?

它没有出现在作业开始的目录中,也没有出现在我的主目录中。

鉴于我不知道如何调试或跟踪后台作业,我怎么能真正解决这个问题?

cron output at

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

sed - 如何正确使用\b 字边界?

我想替换单词开头的引号。

例如:

$ echo "a 'line' a single ' after a  'keyword' with a few space's for a program"\
| sed "s/\b'/X/g"
a 'lineX a single ' after a  'keywordX with a few spaceXs for a program
Run Code Online (Sandbox Code Playgroud)

但是正如您所看到的,它们在单词的末尾而不是开头被替换。
如何替换以单词开头的那些?

sed

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

如何将页眉和/或页脚添加到 sed 或 awk 流?

我有一堆输出通过 sed 和 awk。

如何使用 START 为输出添加前缀并使用 END 为答案添加后缀?

例如,如果我有

All this code
on all these lines
and all these
Run Code Online (Sandbox Code Playgroud)

我怎么能得到:

START
All this code
on all these lines
and all these
END
Run Code Online (Sandbox Code Playgroud)

?

我的尝试是:

awk '{print "START";print;print "END"}'
Run Code Online (Sandbox Code Playgroud)

但我得到了

...
START
    All this code
END
START
    on all these lines
END
START
    and all these
END
Run Code Online (Sandbox Code Playgroud)

sed awk text-processing regular-expression

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

如何仅对目录使用 locate

这会在“Dropnot”的各个子目录下找到大量文件

$ locate Dropnot
Run Code Online (Sandbox Code Playgroud)

我可以找到目录位置locate吗?(“Dropnot”在哪个目录中)

所以如果Dropnot是 in /home/me/,那是唯一返回的条目。

如果是这样,最简单/最短的方法是什么?

最好通过标志或符号,而不是通过管道输出和搜索它等,但我会选择任何东西。

也许某种 Dropnot$ 用于行尾?(但没有用)。

directory locate

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

如何阻止 ls 进入目录,类似于 prune for find?

如果我键入,ls *ro*我也会在与*ro*模式匹配的子目录中获取文件。
ls 有没有类似于 prune 的选项?

理想情况下是一个标志,否则可能是一个 exec?

ls directory

13
推荐指数
2
解决办法
6759
查看次数