我在 Ruby on Rails 应用程序中搜索grep在 OSX 上使用的单词,我想排除匹配特定模式的目录。
我正在使用以下命令:
grep -inRw -E 'direct' . --exclude-dir -E 'git|log|asset'
Run Code Online (Sandbox Code Playgroud)
这个命令没有做我认为它会做的事情。这是我认为它会起作用的方式:
在排除目录方面,该命令最终仍会在“./git”和“./log”目录以及“./app/assets”中搜索
我显然缺乏基本的知识,但我不知道它是什么。
我想尝试简单的脚本
flag=false
while !$flag
do
read x
if [ "$x" -eq "true" ]
then
flag=true
fi
echo "${x} : ${flag}"
done
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,如果我输入true,我会看到那个x="true"and flag="true",但循环并没有结束。脚本有什么问题?如何正确反转布尔变量?
当您观看有关 Plan 9 及其acme编辑器的演示时,您可能会注意到copy的名称是snarf(不幸的是,我找不到任何有意义的解释)。
为什么会这样?
有什么原因吗?是否已为此功能创建唯一名称,因为副本可能不是最佳名称?
Snarf,在 Blit 和 Plan 9 窗口系统中用于“复制”操作的术语。
单击中键还有另一个菜单可用;剪切和粘贴是不言自明的,而 Snarf 只是计划 9 中复制的词。
通过plan9port在Plan 9和/或Mac OS X下使用acme中的一个/两个,是否有一个可以在acme中打开的“文件”,显示acme snarf缓冲区的当前内容?
Run Code Online (Sandbox Code Playgroud)/dev/snarf
所以看起来有一个类似于snarf 缓冲区的东西和一个名为/dev/snarf.
在键盘上键入的字符替换选定的文本;如果此文本不为空,则将其放置在所有窗口通用但与 sam(1) 不同的 snarf 缓冲区中。
(……)
从按钮 2 上的菜单中选择编辑操作。剪切操作从屏幕上删除所选文本并将其放入 snarf 缓冲区;snarf 将选定的文本复制到缓冲区而不删除它;paste 用缓冲区的内容替换选定的文本;并将 snarf 缓冲区的副本发送到输出点之后,如果缺少则添加最终换行符。Paste 有时和 send 将始终在输出点之后放置文本;如此放置的文本的行为与上述完全相同。因此,在输出点后粘贴包含换行符的文本时,最好先打开保持模式。
'Snarf':在大多数其他编辑器中称为 copy
(非正式的)贪婪地吃或喝
(当代)贪婪地抢夺某物,尤其是。没有经过允许
(Unix) …
如何剪切到第一个分隔符/并获取字符串的剩余部分?
前任:
pandi/sha/Dev/bin/boot
Run Code Online (Sandbox Code Playgroud)
我想削减pandi,所以输出像
sha/Dev/bin/boot
Run Code Online (Sandbox Code Playgroud) Linux 可支持的最大 RAM 是多少?假设硬件是/支持 64 位。在所有 Linux 发行版中。
它是高达 16 艾字节,还是像 Windows 一样有限,我认为它是 192 GB?
我从 bash 开始,发现以下内容:
if test $first -lt $second
then
echo $first is lower than $second
else
if test $first -gt $second
then
echo $first is higher than $second
else
echo $first and $second are equals
fi
fi
Run Code Online (Sandbox Code Playgroud)
为了阅读脚本并执行它,我知道它的作用,但不知道 -lt 和 -gt 的用途。
有人可以告诉我这种“工具”的名称是什么以及它们(-lt 和 -gt)是做什么的?谢谢!
我想要time一个命令,它由两个单独的命令组成,一个管道输出到另一个。例如,考虑以下两个脚本:
$ cat foo.sh
#!/bin/sh
sleep 4
$ cat bar.sh
#!/bin/sh
sleep 2
Run Code Online (Sandbox Code Playgroud)
现在,我怎样才能time报告所花费的时间foo.sh | bar.sh(是的,我知道管道在这里没有意义,但这只是一个例子)?如果我在没有管道的子shell中按顺序运行它们,它确实按预期工作:
$ time ( foo.sh; bar.sh )
real 0m6.020s
user 0m0.010s
sys 0m0.003s
Run Code Online (Sandbox Code Playgroud)
但是我在管道时无法让它工作:
$ time ( foo.sh | bar.sh )
real 0m4.009s
user 0m0.007s
sys 0m0.003s
$ time ( { foo.sh | bar.sh; } )
real 0m4.008s
user 0m0.007s
sys 0m0.000s
$ time sh -c "foo.sh | bar.sh "
real 0m4.006s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
我已经阅读了一个类似的问题(How to …
我想在 Docker 映像中安装一个命令行工具,以便快速将 *html 文件转换为 *pdf 文件。
我很惊讶没有一个 Unix 工具来做这样的事情。
我有几千个单独 GZip 压缩的文件(当然通过 -n标志,因此输出是确定性的)。然后他们进入一个 Git 存储库。我刚刚发现,对于其中 3 个文件,Gzip 在 macOS 和 Linux 上不会产生相同的输出。下面是一个例子:
苹果系统
$ cat Engine/Extras/ThirdPartyNotUE/NoRedist/EnsureIT/9.7.0/bin/finalizer | shasum -a 256
0ac378465b576991e1c7323008efcade253ce1ab08145899139f11733187e455 -
$ cat Engine/Extras/ThirdPartyNotUE/NoRedist/EnsureIT/9.7.0/bin/finalizer | gzip --fast -n | shasum -a 256
6e145c6239e64b7e28f61cbab49caacbe0dae846ce33d539bf5c7f2761053712 -
$ cat Engine/Extras/ThirdPartyNotUE/NoRedist/EnsureIT/9.7.0/bin/finalizer | gzip -n | shasum -a 256
3562fd9f1d18d52e500619b4a5d5dfa709f5da8601b9dd64088fb5da8de7b281 -
$ gzip --version
Apple gzip 272.250.1
Run Code Online (Sandbox Code Playgroud)
Linux
$ cat Engine/Extras/ThirdPartyNotUE/NoRedist/EnsureIT/9.7.0/bin/finalizer | shasum -a 256
0ac378465b576991e1c7323008efcade253ce1ab08145899139f11733187e455 -
$ cat Engine/Extras/ThirdPartyNotUE/NoRedist/EnsureIT/9.7.0/bin/finalizer | gzip --fast -n | shasum -a 256
10ac8b80af8d734ad3688aa6c7d9b582ab62cf7eda6bc1a0f08d6159cad96ddc -
$ cat …Run Code Online (Sandbox Code Playgroud) 对于这个问题,让我们考虑一个 bash shell 脚本,尽管这个问题必须适用于所有类型的 shell 脚本。
当有人执行 shell 脚本时,Linux 是一次性加载所有脚本(可能是到内存中)还是逐行读取脚本命令?
换句话说,如果我执行一个shell脚本并在执行完成之前将其删除,执行会被终止还是会继续执行?
bash ×4
linux ×3
shell ×3
command-line ×1
conversion ×1
grep ×1
gzip ×1
history ×1
html ×1
macos ×1
memory ×1
pdf ×1
pipe ×1
plan9 ×1
scripting ×1
shell-script ×1
software-rec ×1
terminology ×1
test ×1
time ×1