请看截图:一些菜单是日语的,一个是波兰语的。
我如何才能将所有这些菜单的语言更改为波兰语?我安装了日语键盘布局,我需要它,因此“直接卸载”不是一个选项。
我有两张(示意图)图像,我想突出显示其中一张图像之间的差异:
使用 imagemagick 我可以创建视觉差异,也可以将其叠加在第二张图像上:
compare schematic.png schematic-new.png -compose src diff.png
composite -blend 35% diff.png schematic-new.png schematic_diff.png
这几乎满足了我的要求,但差异图像中相同的部分并非完全透明,而是半透明的灰色。另外,这样blend
做也不合适,因为它也会给基础图像增加透明度。
那么:我如何创建差异图像,以便非差异部分完全透明,以及如何将其正确地叠加在基础图像上(甚至可能具有自定义透明度)?
我想编写一个执行以下操作的 shell 脚本 (zsh):
.zshrc
.我想出了以下解决方案:
# Installing Anaconda
if [ ! -d /opt/homebrew/Caskroom/anaconda ]; then brew install --cask anaconda; fi
# This adds conda to your PATH in .zshrc and makes sure that you can now use conda and activate conda environments
/opt/homebrew/anaconda3/bin/conda init zsh
# Sourcing zshrc
exec zsh
# Update conda base environment
conda update -n base -c defaults conda
问题是,它exec zsh
替换了当前的 shell,因此 conda 更新不会发生。
有更好的解决问题的办法吗?
which shutdown
回报
/usr/bin/shutdown
我也尝试过sudo which shutdown
以防万一......但得到了相同的结果。
我理解了
lrwxrwxrwx 1 root root 9 Dec 13 03:38 /usr/bin/shutdown -> systemctl
我也可以做类似的事情(2小时内关闭机器)
sudo shutdown -h +120
但如果我尝试像这样的愚蠢的事情:
sudo systemctl -h +120
我收到错误...
当我发出问题时,shutdown
我实际上是在调用吗/usr/bin/shutdown
?如果是这样,从 shutdown 到 systemctl 的链接实际上是如何工作的?
我正在 zsh 中读取二进制文件的前四个字节。前 3 个字节是0x00
,第四个字节是0x01
。我通过将文件作为字符串读取,然后将其分割并切片,创建了这些字节的数组,结果是:
> echo -n "${(j::)bytes}" | xxd
00000000: 0000 0001 ....
现在我尝试使用适当的幂从右端(第 4 个字节)开始将它们相加以获得总和。问题是,当我尝试在算术评估或整数变量中使用第四个字节时:
integer -i 10 b=${bytes[-1]} # This is the offending line
sum=$((sum + b * (256 ** i)))
我收到以下错误:
bad math expression: illegal character: ^A
这是0x01
.
如何告诉 zsh 将字节解释为数字?我注意到(#)
扩展标志,它强制将表达式解释为数字,然后解释为字符,但我遇到了相反的问题。它似乎被解释0x01
为一个角色。
更新:
我怀疑问题是数组的类型是字符(如果 zsh 集合有类型?),因为我使用(s::)
整个文件的字符串创建了它,但我不确定如何转换数组元素返回整数。我尝试过
b=$(printf '%d' "$bytes[4]")
但这给了我一个类似的错误。我似乎可以通过以下任何一种方式重现:
printf '%d' $'^A'
integer b=$'^A'
其中由两个文字字符和^A
组成。^
A
假设我的文件如下所示:
foo bar
foo bar bar
foo foo bar foo
我想要做的是删除foo
后面跟着 a 的每个bar
(即它们之间只有空格),而不更改任何空格。在下面,我用下划线替换了所有应该删除的字符,以明确这一点:
___ bar
___ bar bar
foo ___ bar foo
该命令应生成以下文件:
bar
bar bar
foo bar foo
我怎样才能用 sed 或 awk 实现这一点?
我正在尝试更改 macOS 中 zsh 完成缓存文件的默认位置。我已阅读完成时的 zsh 文档,其中说“或者,可以通过 'compinit -d dumpfile' 给出显式文件名”,我设置了 ZCOMPCACHE 变量并继续执行以下代码:
ZCOMPCACHE="$HOME/.cache/zsh/zcompcache"
# Create the parent directory if it doesn't exist
[[ -d $ZCOMPCACHE ]] || mkdir -p $ZCOMPCACHE
# Set the custom location for zcompdump files
_comp_files=($HOME/.cache/zsh/zcompcache(Nm-20))
if (( $#_comp_files )); then
compinit -i -C -d "$HOME/.cache/zsh/zcompcache/.zcompdump-${ZSH_VERSION}"
else
compinit -i -d "$HOME/.cache/zsh/zcompcache/.zcompdump-${ZSH_VERSION}"
fi
# `unset` the temporary variable
unset _comp_files
该代码运行并在 .cache/zsh 下创建 zcompcache 目录,并将缓存文件转储到该位置。
但是,即使我设置了特定位置,我仍然会在 $HOME 目录中转储一个 .zcompdump 文件。
我曾经使用 oh-my-zsh,但我发现它对于我的要求来说太臃肿了,之前的 oh-my-zsh 配置是否留下了任何残留设置,可能会导致我的 $HOME 目录中出现额外的 .zcompdump?
我注意到了这种令人惊讶的行为,并且不太了解发生了什么:
$ bash -c 'echo [-1]'
1
$ zsh -c 'echo [-1]'
1
命令解析器似乎试图评估一个表达式:
$ echo [1,2,3]
1
$ echo [123-33]
1
因为如果表达式被引用,或者表明一个括号只是一个括号,那么奇怪的评估就被省略了。
$ echo \[123-33]
[123-33]
$ echo [123-33\]
[123-33]
$ echo '[123-33]'
[123-33]
在寻找线索时,我发现了这句话:
注意事项
索引 Bash 关联数组时,始终使用引号。否则静态解析器将不得不假定索引是一个算术表达式。
$ echo '${array[spaced string]}' | shfmt 1:16: not a valid arithmetic operator: string $ echo '${array[dash-string]}' | shfmt ${array[dash - string]}
不知道该怎么做,因为在上下文中没有数组可言echo [1-1]
这当然可能是我自己环境中的某些东西引起的,但是当我检查时,它似乎不是:
$ env -i HOME=$(mktemp -d) bash --noprofile --norc
bash-5.1$ echo [1-1]
1
$ env -i HOME=$(mktemp -d) /bin/bash-4.4 --noprofile --norc
bash-4.4-4.4$ echo [1-1]
1
但是话又说回来,在 ubuntu 盒子上我得到了不同的结果:
$ bash --version | sed 1q; echo [1-1]
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
[1-1]
禁用所有选项不会改变此行为。
for i in `shopt | awk '/on$/ { print $1}'`; do shopt -u $i;done
你知道是什么导致这个括号表达式被求值吗?为什么结果是 1?
寻求有关如何在 ADB 命令行中转义“&”的帮助——任何指导将不胜感激!
我正在尝试从运行 B&N Nook 应用程序的 Android 平板电脑中提取 .epub 图书文件。NOOK 应用程序将电子书文件存储在“/data/data/bn.ereader/files/B&N Downloads/Books”中 “B&N Downloads”字符串导致 ADB shell 命令出现问题。我尝试通过以下方式转义“&”和“空格”......
$ ./adb shell cd ./data/data/bn.ereader/files/B&N Downloads/Books(原始命令)
$ ./adb shell cd ./data/data/bn.ereader/files/B\&N\ Downloads/书籍
$ ./adb shell cd ./data/data/bn.ereader/files/'B&N Downloads'/Books
$ ./adb shell cd './data/data/bn.ereader/files/B&N Downloads/Books'
$ ./adb shell cd ./data/data/bn.ereader/files/"B&N Downloads"/Books
$ ./adb shell cd ./data/data/bn.ereader/files/B^&N^ Downloads/Books
(即最后来自另一个答案的建议:Trying to give "&" as part of adb shell input text )
总是导致相同的错误...
/system/bin/sh: N: 未找到
/system/bin/sh: cd: /data/data/bn.ereader/files/B: 没有那个文件或目录
ADB电脑:
MacBookPro 9,2(2012年中)
系统版本:macOS 10.14.6(18G9323)“Mojave”
内核版本:Darwin 18.7.0。
目标 Android 设备:
B&N Nook HD+(运行 CyanogenMod)
Android 版本:7.1.1
内核版本:3.0.101 (dmaces@gc-xenial #1)内部版本
号:cm_ovation-userdebug 7.1.1 NMF26Q 161222 测试密钥
还在 Lenovo Tab M10 Plus 3rd Gen 上尝试了这个,结果相同:
Android 版本:12
内核版本:4.14.186-ga2e751134649内部版本
号:TB125FU_S000118_220927_ROW
[注意:我已经通过简单地在问题“B&N Downloads”文件夹上方执行整个该死的目录树的“拉”来完成我的原始任务,但是如何转义“&”的问题仍然存在]