标签: bash

在适用于 Linux 的 Windows 子系统中更改光标形状

有没有办法改变 Linux 终端的 Windows 子系统中的光标形状?我希望光标能够反映我在 vim 或 vi 模式下所处的状态。

例如,在 Git Bash 中,我可以使用echo -ne "\e[2 q"echo -ne "\e[6 q"在块光标和行光标之间切换。这些在WSL中似乎没有任何作用。

bash windows-subsystem-for-linux windows-10-v1607

6
推荐指数
3
解决办法
9029
查看次数

可以删除 Notepad++ 样式吗?(我的意思是样式配置器的语言颜色样式)

我在 Notepadd ++ 中使用 Unix .sh文件时遇到以下问题:

如果整个文档的内容用heredoc命令包装,则整个文档将以一种颜色着色。例如:

**<< 'EOF0'**

Content of the document --- All of which will be dyed in a single color.

**EOF0**
Run Code Online (Sandbox Code Playgroud)

图片示例:

1 - 没有定界符:

在此输入图像描述


2 - 使用定界符:

在此输入图像描述


为什么我刚才描述的情况是有问题的:

当使用很长的脚本时,由于一个(heredoc)命令,所有内容都以一种单一颜色着色,这可能会很烦人,当您知道在一天结束时,使用多个命令会更舒服-color 文档,就像没有此命令一样。

我试图解决它:

我试图去Settings > Style configurator > Language --- Bash那里以某种方式完全删除 HERE DELEM && HERE Q,但我在 GUI 中没有找到这样的方法。

我的问题:

如何从 Notepad++ 中删除这两种样式(或任何其他样式),以便它们不会影响 .sh 文档中文本的颜色?(在我的例子中是 .sh 文件)?

我只是不让这样的包装器(heredocs 是文本包装器)以任何颜色着色...我只是想完全删除它们的“本机”Notepad++ 风格...

bash notepad++ colors

6
推荐指数
1
解决办法
2938
查看次数

stty 的超级键符号

尝试在 ubuntu 盒子上交换 Ctrl 和 Super 键。

已成功使用 xmodmap 交换 Super 和 Ctrl。现在我只需要将 stty intr 更改为 Super_L + C

我一辈子都找不到超级键的符号。(例如^是控制键)

有谁知道 super 和 stty 的表示法是什么?我希望能够打字

stty intr Super_L + C
Run Code Online (Sandbox Code Playgroud)

例如。

或者其他更好的方法让 Super+C 成为中断

linux bash ubuntu stty

6
推荐指数
1
解决办法
2022
查看次数

Bash 反引号与括号

我读到命令替换的经典形式使用反引号,并且 (...) 形式已经取代了命令替换的反引号。然而,下面的代码会产生不同的输出。有什么不同 ?

#backticks.sh
#!/bin/bash
a=`echo Hello!`   # Assigns result of 'echo' command to 'a' ...
echo $a   # output: Hello!
Run Code Online (Sandbox Code Playgroud)
#parenthesis.sh
#!/bin/bash
a=(echo Hello!)   # Assigns result of 'echo' command to 'a' ...
echo $a  # output: echo 
Run Code Online (Sandbox Code Playgroud)

linux bash shell command-line

6
推荐指数
1
解决办法
3673
查看次数

我可以在 Windows 上的 Ubuntu 或适用于 Linux 的 Windows 子系统 (WSL) 上使用 Bash 将文件拖放到 .sh 脚本中吗?

我想通过简单地将多个文件拖到脚本文件上来将多个文件作为 Windows 10 中 .sh 脚本的参数传递;这可能吗?

linux script bash windows-10 windows-subsystem-for-linux

6
推荐指数
1
解决办法
4827
查看次数

换行在 tmux 中不起作用

我正在使用konsole-4.14.3tmux-2.6我的 shell 是 bash。在 tmux 之外,换行工作正常,文本会移动到下一行。在 tmux 中,这不起作用。我用谷歌搜索了很长时间,但没有找到任何有效的修复方法。在我的~/.bashrc我有

export PS1="\[\e[1;92m\]\u@\h: \w \\$ \[\e[m\]"
export PS2='> '
Run Code Online (Sandbox Code Playgroud)

我把它们取下来再试一次,但结果是一样的。我使用的是 Slackware 14.2,问题似乎与某些系统设置有关,因为在相同的情况下~/.tmux.conf,换行在 Ubuntu 16.04 上可以按预期工作。

linux terminal bash tmux word-wrap

6
推荐指数
1
解决办法
6033
查看次数

无法通过共享连接进行 scp

我在使用 SSH 共享连接时遇到以下问题:

# Set up a shared connection
ssh -f -N -M -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST"

# I can scp *without* the shared connection
scp root@"$ONE_HOST":/etc/hosts /dev/null

# I can execute a remote command *with* the shared connection
ssh -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST" "date"

# But I can't scp *with* the shared connection
scp -vvv -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST":/etc/hosts .
Run Code Online (Sandbox Code Playgroud)

该脚本给出以下输出:

hosts                                                              100%   59    67.8KB/s   00:00
Wed Feb 28 08:23:10 MST 2018
Executing: program /home/myUser/ssh_sharing_socket host myHost.example.com, user root, command scp -v …
Run Code Online (Sandbox Code Playgroud)

linux ssh bash openssh bash-scripting

6
推荐指数
1
解决办法
1840
查看次数

忽略 git diff 中的某些更改

是否可以从 git diff 或相关命令获取排除特定类别更改的报告?

我被要求审查一项更改,其中大量文件经历了相当于 s/2016/2017/g 的更改。(我们升级了第三方 jar,因此我们的许多导入现在引用了不同的包。)

是否有选项可以从命令行查看此差异,但抑制仅包含以下内容的所有更改,以便我可以专注于任何逻辑更改?

忽略:

-import com.example.2016_2.util.Utility
+import com.example.2017_2.util.Utility
Run Code Online (Sandbox Code Playgroud)

保持:

-Utility util = new Utility();
+Utility util = Utility.create();
Run Code Online (Sandbox Code Playgroud)

如果答案是编写我自己的脚本并通过git diff --porcelain或通过设置集成GIT_EXTERNAL_DIFF,我当然愿意;只是想知道是否

  1. 这是开箱即用的支持,不知何故我在手册页中错过了它;
  2. 我还可以使用其他 git diff* 命令来实现此目的;
  3. 如果已经存在合适的 diff 可执行文件,我可以通过GIT_EXTERNAL_DIFF

bash diff git command-line

6
推荐指数
1
解决办法
3485
查看次数

在 docker 容器中使用 host.docker.internal 拒绝连接

localhost:8000在主机上有一个打开的。具体来说:

$ php -S localhost:8000
PHP 7.1.19 Development Server started at Tue Jul 16 09:49:08 2019
Listening on http://localhost:8000
Run Code Online (Sandbox Code Playgroud)

我可以在主机上执行curl -i http://localhost:8000以获得响应,我也可以通过主机浏览器访问它,完全没有问题。

但是,当我尝试访问 Mac 上 docker 容器上的主机时,连接被拒绝:

$ curl -i http://host.docker.internal:8000
curl: (7) Failed to connect to host.docker.internal port 8000: Connection refused

$ telnet host.docker.internal 8000
Trying 192.168.65.2...
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)

host.docker.internal从命令中可以看出,docker 容器可以解析 DNS telnet,我也可以ping,但连接被拒绝。

$ ping host.docker.internal
PING host.docker.internal (192.168.65.2) 56(84) bytes of data.
64 …
Run Code Online (Sandbox Code Playgroud)

networking dns bash ubuntu docker

6
推荐指数
1
解决办法
1万
查看次数

在 Mac 上安装 GNU“脚本”命令

我有一台Mac。我想使用CentOS 附带的GNU ,因为它比 BSD Mac 版本功能更全。具体来说,在 CentOS 机器上给出:scriptman script

   -c, --command command
          Run the command rather than an interactive shell.  This makes it easy  for  a  script  to
          capture the output of a program that behaves differently when its stdout is not a tty.
Run Code Online (Sandbox Code Playgroud)

而我的Mac上的版本没有这样的选项。我想在假装是 tty 的同时查看命令的输出,这是我知道如何做到这一点的唯一方法。

我有brew,并且安装了一堆GNU版本的实用程序(grep findutils coreutils gawk gnu-sed gnu-tar gnu-indent gnu-getopt gnutls),但这些似乎都不提供script.

我尝试搜索 Homebrew 公式,但不出所料,很多软件包都提到了“脚本”一词,所以我很容易错过它。

编辑:根据评论,我不确定是否有GNU script,但肯定还有另一个版本,我的 Mac 没有。script --version在 CentOS 7 …

bash gnu homebrew macos

6
推荐指数
1
解决办法
729
查看次数