很多时候,我在 Terminal.app 或 iTerm 中运行一个命令,按向上箭头返回编辑它,光标跳到上面的行或完全错误的地方。当命令太长以至于它绕到下一行时,尤其会发生这种情况。有时这些长命令都出现在一行上,有时它们在多行中正确显示。
这发生在 iTerm 和 Terminal.app 中
在 vi 和 emacs 模式下也会发生,使它们几乎无法使用。
有任何想法吗?谢谢!
在 bash 中,我可以cd ~使用~.
我可以创建新的自定义“目录别名”(?)来引用其他目录吗?假设示例:
make_alias "~~" /mnt/photon/work/foo_project/
cp ~/home.png ~~/set_8/home_4.png
Run Code Online (Sandbox Code Playgroud)
如果可以,怎么做?如果不能,是设计使然吗?为什么会这样?
很高兴拥有:在哪里以及如何~设置并绑定到这个“〜”?
我正在尝试从使用 Powershell 转向 Windows 上的 Bash(适用于 Linux 或 WSL 的 Windows 子系统)。为了使用 GIT,我在C:/Users/User/.ssh. 然后我登录到 Bash,并创建了一个符号链接ln -s /mnt/c/Users/User/.ssh/ ~/.ssh/,以便(理论上)使用来自两个 shell 的相同 ssh 密钥。
但是,在运行 git 时,我总是收到一个错误:Bad owner or permissions on /home/user/.ssh/config. 我究竟做错了什么?
我正在运行 Mac 并希望过滤top特定进程的命令输出,以便仅显示 PID、COMMAND 和 %CPU 列。
获得进程的PID后,我运行:
top -pid 1234
Run Code Online (Sandbox Code Playgroud)
但是,这会为该过程显示超过 15 列。我可以将“命令”的输出通过管道传输到 awk 并仅显示:
PID COMMAND %CPU
Run Code Online (Sandbox Code Playgroud)
列?
我不想将输出存储在文本文件中然后对其进行处理。我对实时监控流程很感兴趣。
每次我尝试找出如何执行此操作时,我都会找出如何在 linux 上执行此操作,但它不会传输。如何使用 Mac Terminal Bash 连接到 WiFi 网络?
我想找到一系列文件(基于通配符表达式)并汇总它们的磁盘使用量。
像这样的东西:
$ find . -name 'flibble*' -ctime +90 -exec du -sh {} \;
2.1G ./flibble_116.log
2.1G ./flibble_83.log
2.1G ./flibble_211040_157.log
2.1G ./flibble3747_51.log
Run Code Online (Sandbox Code Playgroud)
这项工作。但它不会产生我正在寻找的结果。它列出了每个文件使用的空间,就像find遍历它们一样。
我想要的是du找到的所有文件的总数。
我无法从 Ansible 剧本“分离地”运行远程应用程序启动脚本。脚本将运行,但我无法让它获得/保持分离。我可能做错了什么,但什么?
这是我的复制器。
我在 Test.java 中的远程 Java 应用程序运行了 10 秒:
class Test {
public static void main(String[] args) {
for (int I = 1; I <= 10; i++) {
System.out.println("Hello world " + I);
try { Thread.sleep(1000);
} catch (Exception e) { System.out.println("Exception caught: " + e);
}
} } }
Run Code Online (Sandbox Code Playgroud)将其编译为 Test.class (javac Test.java),然后使用“java Test”运行该类按预期工作(给出 10 条输出消息,然后退出)。
我运行此应用程序的可执行 shell 脚本(如在 chmod 755 中)如下所示:
#!/bin/bash
java Test &
Run Code Online (Sandbox Code Playgroud)手动运行它也完全没问题:Java 应用程序在我的控制台中运行并生成相同的标准输出,但 shell 脚本已经退出,我重新控制了我的 bash 会话。
现在通过来自另一台服务器的 ansible playbook 运行它。我尝试以不同的方式使用“command”模块和“shell”模块,但无济于事......
--- …Run Code Online (Sandbox Code Playgroud)为什么以下两次执行的输出不同?(我的最终命令中的变量需要双引号)
$ sudo su -c "echo `cat /root/root_file`"
cat: /root/root_file: Permission denied
$ sudo su -c 'echo `cat /root/root_file`'
Yay, highly classified content!
Run Code Online (Sandbox Code Playgroud) 我有几台机器,我定期 ssh 进入,只是为了使用sudo su我的会话的其余部分作为某个特殊用途的用户登录。一般工作流程是:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Run Code Online (Sandbox Code Playgroud)
我想把它归结为一个可以别名的单行代码,这样我就可以为每台机器设置一个别名,然后在一个命令中到达我需要的地方,而无需键入sudo su - specialuser样板。我也许me@othermachine可以sudo su在登录时设置为,但我想保持操作的灵活性,就像me我需要的那样。
(注意:我无法控制othermachine或控制它的设置方式;这是我在受雇时采用的既定工作流程。)
我的第一个想法是
ssh me@othermachine "sudo su - specialuser"
Run Code Online (Sandbox Code Playgroud)
和这种工作,但它没有提示我,^C杀死它并将我注销,我认为其他各种事情也可能是错误的。
在阅读Run Remote ssh command with Full Login Shell 之后,我尝试了一些更奇特的东西,比如
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
Run Code Online (Sandbox Code Playgroud)
和
ssh me@othermachine 'bash -l -c …Run Code Online (Sandbox Code Playgroud) 我想使用 wget 向我的服务器发出以下 POST 请求:
email=abc@abc.com&file1=@FILE_HERE&file2=@FILE_HERE
Run Code Online (Sandbox Code Playgroud)
在上述要求,有三个POST参数叫email,file1和file2其中email包含的用户电子邮件和file1,file2包含文件。
我怎样才能使用它发送它wget?我不想使用curl.