我去使用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时如何克服这个问题?
我知道我可以使用任一脚本作为调用所需 shell 的第一行。
#!/bin/sh如果与所有 unix 系统的兼容性是绝对要求,会推荐吗?
就我而言,我唯一关心的操作系统是 Ubuntu (Debian) 和 OSX。鉴于此,我可以使用#!/bin/bash并确保它可以在两个系统上运行吗?
这是否也可以更轻松地使用具有更现代和更清晰的命令语法的脚本?使用是否#!/bin/sh也与使用 POSIX 有关?
在带有 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变量来“包装”和“压缩”目录名称,永远不会超过一定数量的字符,从而获得更短的提示?
我删除了一个文件,现在我看到:
$ 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)
这说明什么?我该怎么办
鉴于没有可显示的屏幕,标准输出at和cron任务的去向在哪里?
它没有出现在作业开始的目录中,也没有出现在我的主目录中。
鉴于我不知道如何调试或跟踪后台作业,我怎么能真正解决这个问题?
我想替换单词开头的引号。
例如:
$ 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 和 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) 这会在“Dropnot”的各个子目录下找到大量文件
$ locate Dropnot
Run Code Online (Sandbox Code Playgroud)
我可以只找到目录位置locate吗?(“Dropnot”在哪个目录中)
所以如果Dropnot是 in /home/me/,那是唯一返回的条目。
如果是这样,最简单/最短的方法是什么?
最好通过标志或符号,而不是通过管道输出和搜索它等,但我会选择任何东西。
也许某种 Dropnot$ 用于行尾?(但没有用)。
如果我键入,ls *ro*我也会在与*ro*模式匹配的子目录中获取文件。
ls 有没有类似于 prune 的选项?
理想情况下是一个标志,否则可能是一个 exec?