天真的方法是find dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {}
,但对我来说太慢了,因为我在 git 存储库中有很多深层文件夹结构(至少我认为这是原因)。我已经读过关于我可以prune
用来防止 find 在找到某些内容后递归到目录中的内容,但有两件事。我不确定这是如何工作的(我的意思是我不明白prune
虽然我已经阅读了手册页),第二个它在我的情况下不起作用,因为它会阻止find
递归到.git
文件夹但不是全部其他文件夹。
所以我真正需要的是:
对于所有子目录,检查它们是否包含.git
文件夹,如果它停止在此文件系统分支中搜索并报告结果。如果这也能从搜索中排除任何隐藏的目录,那就太完美了。
我已经从 commandlinefu 尝试了一些像这样的 sed 模式
sed -r "s/('[a-z]+)_([a-z])([a-z]+)/\1\U\2\L\3/"
Run Code Online (Sandbox Code Playgroud)
但不知何故它不起作用。一方面,他们忘记了我可以修复的数字,但这种模式仅适用于一个下划线。例如,如果我在文件中有一个字符串
'foo_bar_foo'
它将转换为
'fooBar_foo'
. 这不是我想要的(我想要'fooBarFoo'
)
我只想更改文件中的字符串,而不是变量名称或其他任何内容。所以例如这个
delta_limits=Limits(general_settings['signal_lower_limit']
Run Code Online (Sandbox Code Playgroud)
应该变成这个
delta_limits=Limits(general_settings['signalLowerLimit']
Run Code Online (Sandbox Code Playgroud) 我使用的一个 vim 插件使用此脚本将一些输入传递给不支持从标准输入读取的短绒。
set -eu
# All of the following arguments are read as command to run.
file_extension="$1"
shift
temp_dir=$(mktemp -d 2>/dev/null || mktemp -d -t 'ale_linter')
temp_file="$temp_dir/file$file_extension"
trap 'rm -r "$temp_dir"' EXIT
while read -r; do
echo "$REPLY" >> "$temp_file"
done
"$@" "$temp_file"
Run Code Online (Sandbox Code Playgroud)
起初我有点困惑为什么他们不只是使用这样的东西
some input | some_program /dev/stdin
Run Code Online (Sandbox Code Playgroud)
但是在尝试ghc
作为 linter之后,我发现它在抱怨 /dev/stdin 说它不是真实文件(它不是)
所以我想知道我可以使用 namedpipe 而不是临时文件。我对写入临时文件不太满意的原因是 SSD 的健康状况,如果有更好的方法,为什么不这样做,对吧?
我有一个 nvidia 1070 显卡,Fedora GUI 非常缓慢,鼠标指针不可见。我在安装 Ubuntu 时遇到了类似的问题,尽管我认为它并没有那么慢。这使得无法使用 GUI 进行安装。有没有办法用命令行做所有事情?