我正在运行 Jenkins 的 shell 脚本,它使用 shebang options 启动 shell 脚本#!/bin/sh -ex。
根据Bash Shebang 的假人?, -x, “导致 shell 打印执行跟踪”,这对于大多数用途都非常有用——除了回声:
echo "Message"
Run Code Online (Sandbox Code Playgroud)
产生输出
+ echo "Message"
Message
Run Code Online (Sandbox Code Playgroud)
这有点多余,看起来有点奇怪。有没有办法保持-x启用,但只输出
Message
Run Code Online (Sandbox Code Playgroud)
而不是上面的两行,例如通过在 echo 命令前加上一个特殊的命令字符,或者重定向输出?
我想在 Windows 中右键单击文件时删除 Notepad++ 烦人的 shell 集成。

我怎么做?
当我通过 SSH 使用腻子(从我的 Windows 7 盒子)连接到我的本地 Ubuntu 开发服务器时,以下组合键无法在单词边界上向前和向后移动光标:
光标一次只能移动一个字符。我正在使用 bash。
每当我在使用 Ubuntu 时在命令行中完成一些事情并且我的计算机对我做了一些有价值的事情时,我喜欢说谢谢,因为这是礼貌的做法。典型的对话可能如下所示:
mtp-sendfile HamishAndyPodcast.mp3 /Music/podcasts
Sending file...
Progress: 17769768 of 17769768 (100%)
New file ID: 76098
sam@sams-laptop:~$ thanks
thanks: command not found
Run Code Online (Sandbox Code Playgroud)
教我的电脑一些礼貌并以“没问题”之类的方式回应的最佳方法是什么。
我只想获取文件的父目录的名称。
示例:当我有 时path=/a/b/c/d/file,我只想要d而不想要/a/b/c/d(我从 中获得dirname $path)作为输出。
有没有什么复杂的方法可以做到这一点?
我已经使用 bash 十多年了,并且已经习惯于能够输入 !$ 来重复最后一个参数,例如:
$ mkdir foo
$ cd !$
cd foo
Run Code Online (Sandbox Code Playgroud)
(最后一行是由 shell 打印出来的,告诉你你的命令的计算结果)。同样,我经常对以下内容:
$ make_sandwich
-bash: make_sandwich: Permission denied
$ sudo !!
sudo make_sandwich
Run Code Online (Sandbox Code Playgroud)
我真的很喜欢鱼壳,但我的肌肉记忆已经很成熟了。鱼有等价物吗?我可以配置 fish 以使用相同的命令吗?
当您在tmux正在运行的会话中启动新会话或在其中创建新窗口时,其默认行为是运行 shell(例如:)bash作为登录 shell。
我知道登录 shell 的目的是在您登录系统时执行您感兴趣的配置和过程的例行程序。但是在大多数情况下(除了可以tmux 用作登录 shell 的情况外),当用户只想打开一个新窗口时,这样做并不是用户的真正意图。
那么将其作为 的默认行为的理由是tmux什么?
文档中关于此事的唯一说明:
Run Code Online (Sandbox Code Playgroud)default-command shell-command Set the command used for new windows (if not specified when the window is created) to shell-command, which may be any sh(1) command. The default is an empty string, which instructs tmux to create a login shell using the value of the default-shell option.
我最近通过进入控制面板 -> 系统 -> 高级系统设置 -> 环境变量 -> 用户变量 -> PATH 手动向 Windows PATH 添加了一个目录。(Windows 7,64 位。)
重新启动并启动 cmd.exe 后,echo %PATH%表明这有效:我在输出中看到了我最近添加的目录。
但是,启动 Git Bash 后,输出echo $PATH不包含此目录。
我可以添加export PATH=$PATH:/c/my/path我的 bashrc,但我宁愿 Git Bash 只从 Windows 获取 PATH,这样我就不必记住将路径添加到两个地方。如何做到这一点?
(一个更普遍的相关问题是,是什么设置了 Git Bash 的 $PATH?我看到在不同的地方重复了几个条目,Windows %PATH% 中的一些东西在 Git Bash 的 $PATH 中,而不是其他东西。之前发生了什么我得到了触及 $PATH 的 Git Bash 提示?)
我在终端上做了很多工作,所以我学到了很多关于我选择的 shell,zsh。您使用 zsh 的哪些功能来提高自己的工作效率?我的最爱之一是多目录自动完成。因此,cd /fo{tab}/ba{tab}/ba{tab}我可以不用打字,而是可以cd /fo/ba/ba{tab}保存那么多的击键!