我在 bash 中输入了一个非常非常长的命令。糟糕,这是错误的命令。
到目前为止,这意味着我经历了两个地狱:
有没有更快的方法?
当我在 Mac 上复制多个文件时,系统会尝试同时复制所有文件。问题是双重的。
首先,当您选择多个文件并复制它们时,它们都进入一个进程,采用“全有或全无”的方法,这与数据库中的 ACID 不同。这通常是不可取的。
此外,当您添加其他复制进程时,系统会尝试同时复制所有内容。
例如,我决定复制一个大文件A,然后我决定也复制一个大文件B。这导致两个并行复制操作,无论“大文件”之一是否也是许多文件的选择。
我不喜欢这个有几个原因:
结果:A我想首先传输和使用的文件到达所需的时间比需要的要长得多,并且当从 LAN 上的中央 HD 复制时,我无法使用第一个文件,直到所有其他文件也都到达为止。
因此...如何在 Mac 上排队复制多个文件?澄清一下:无论选择了很多文件,还是一一添加,我都希望它们都放入一个一次只复制一个文件的队列中,直到队列完成。
也欢迎使用 Bash,尤其是 Perl 来回答!
我即将写一个shell脚本。通过将其颜色设置为黄色,我希望能够在视觉上将其某些输出文本区分为警告。
这是怎么做的?
我怎样才能找到所有设置了一些扩展 ACL 的文件,即那些+在ls -l.
我找不到对应的标志find。我的天真方法是find将 withls -l和grep. 但我不认为这很好。
有人有想法吗?
我有一个包装脚本,它做了一些工作,然后将原始参数传递给另一个工具:
#!/bin/bash
# ...
other_tool -a -b "$@"
Run Code Online (Sandbox Code Playgroud)
这工作正常,除非“其他工具”在子shell中运行:
#!/bin/bash
# ...
bash -c "other_tool -a -b $@"
Run Code Online (Sandbox Code Playgroud)
如果我像这样调用我的包装脚本:
wrapper.sh -x "blah blup"
Run Code Online (Sandbox Code Playgroud)
然后,只有第一个原始参数 (-x) 被传递给“other_tool”。实际上,我没有创建子外壳,而是将原始参数传递给 Android 手机上的外壳,这应该没有任何区别:
#!/bin/bash
# ...
adb sh -c "other_tool -a -b $@"
Run Code Online (Sandbox Code Playgroud) 我尝试从 MacBook A 通过 SSH 连接到另一台连接了两个外部驱动器的 iMac (iMac B)。SSH 成功,但我无法执行ls和touch命令。
虽然我将完整磁盘访问权限设置为terminal、ls、touch命令,甚至sshd,但我无法使用它,并且返回到“不允许操作”。
当我尝试在桌面文件夹或外部驱动器中使用这些命令但在 iMac B 上的交互式终端上没有任何操作时,会发生此错误。
即使root帐户也无法执行此命令,所以它应该有比root更高级别的帐户,是吗?
有谁知道会发生什么?
我想知道如何才能zsh做到bash这一点:我希望命令输出始终显示在终端中这些命令的正下方。
例如,当我运行以下命令时,其结果显示如下bash:
john-doe@machine:~$ aws sts get-caller-identity
{
"UserId": "USERID",
"Account": "123456789",
"Arn": "arn:aws:iam::123456789:user/jonh-doe"
}
Run Code Online (Sandbox Code Playgroud)
而在 中执行时zsh,结果显示在单独的“编辑器”中,我可以在看到这些结果后退出,但一旦退出,我也无法访问命令的输出。下面有一个截图:
我不想总是将输出通过管道传输到文件。
我正在运行 Ubuntu 20.04 并oh-my-zsh使用主题powerlevel10k(我也测试了其他主题,并且zsh行为与我上面提到的相同)。我还使用TerminatorUbuntu 的默认终端程序进行了测试。
是否有任何设置可以覆盖此zsh行为?
任何帮助将不胜感激。谢谢你!
据我了解,管道( | ) 获取一个进程的标准输出并将其作为标准输入传递到另一个进程。
但我想知道管道是否( | )被视为像 ls、grep 等命令。
下面的命令行中有多少个命令?
ls /etc | grep nginx
我很困惑是否应该数一下管道( | )