我了解*主要管理员用户的用户 ID 为501
,后续用户获得增量编号 ( 502
, 503
, ...) 但为什么501
?有什么特别之处50x
,这个选择的历史/技术原因是什么?
* 当我对为什么我的外部硬盘驱动器里面有所有垃圾文件感到好奇时,我开始研究这个.Trashes/501
。我的搜索使我得出结论501
是 *nix 系统中主管理员的用户 ID(我在 macOS 上),但不是为什么.
我有一个脚本,使用 * 检查目录mdls
(按添加时间排序),并执行一些操作。然而,mdls
它有点慢,所以我\xe2\x80\x99d 喜欢仅在绝对必要时(即目录内容已更改时)才运行它。
我的想法是运行mdls
一次并缓存结果,然后执行一些操作来跟踪目录的状态。在后续运行中,我\xe2\x80\x99d 再次运行检查操作并将结果与我的结果进行比较。如果不同,则重新运行mdls
;如果没有,则使用缓存。
我\xe2\x80\x99m 考虑其中一个du \'/dir/path\' | tail -1
(如果目录大小保持等于字节,则\xe2\x80\x99s 可能内容没有\xe2\x80\x99t 更改)或ls \'/dir/path\' | md5\'
.
我目前更倾向于该md5
解决方案,因为它对文件重命名具有弹性。然而,这两种解决方案都很hacky,我想知道是否有\xe2\x80\x99s更有效的东西(仍然很快)。
如果有帮助的话,最终该解决方案将在 ruby 脚本中使用。
\n\n* I\xe2\x80\x99m 没有将其发布到Ask Different,因为mdls
这不是重点。它可以是任何其他缓慢的命令。
在 my 中init.vim
,我只想在当前文件位于某个层次结构下时才运行某些命令。伪代码:
if current_file_directory == ~/some/path/here\n autocmd <whatever>\n set <whatever>\nendif\n
Run Code Online (Sandbox Code Playgroud)\n但if
我发现的所有例子都太基础了,无法推断。
澄清一下,既不:pwd
也不getcwd()
应用,因为它们返回调用 neovim 时所在的目录。我关心文件所在的目录。按照上面的代码,如果 I\xe2\x80\x99m 在下/tmp
但编辑文件,则命令应触发,~/some/path/here/more/deep/still.txt
但如果 I\xe2\x80\x99m 在下但编辑文件,则不会触发。~/some/path/here
/tmp/example.txt
给这个file.txt
:
first line
second line
third line
Run Code Online (Sandbox Code Playgroud)
这适用于bash
:
while IFS=' ' read -a args; do
echo "${args[0]}"
done < file.txt
Run Code Online (Sandbox Code Playgroud)
生产
first
second
third
Run Code Online (Sandbox Code Playgroud)
也就是说,我们能够逐行读取文件,并且在每一行上我们使用空格作为分隔符将行进一步拆分为一个数组。但是在 中zsh
,结果是一个错误:read: bad option: -a
。
我们怎样才能做到与 inzsh
一样bash
呢?我已经尝试了几种解决方案,但我永远无法使用空格作为分隔符将字符串拆分为数组。