(OSX 特定)
我和许多其他人一样,经常发现自己在 shell 中启动了一个需要一两分钟才能完成的进程(例如一个大型的 svn 提交)。在那段时间里,我经常使用 alt-tab 并刷新 reddit/slashdot/wikipedia/whatever。设置一些在 shell 进程结束时发布咆哮通知的东西会很棒。
在我的理想世界中,它会像这样工作:“如果一个进程刚刚从终端中打开的选项卡中退出,则发布咆哮通知。”
其他人有这样的设置吗?
我想知道是否有一种方法可以在 bash 中完成类似于 cmd.exe 上的行为的旋转样式完成,我发现它可以加快我输入命令的速度
在 Bash 中,您可以按Alt-.插入上一个命令的最后一个参数。如果多次按下它,它会循环显示历史记录中所有命令的最后一个参数。但是,有时我按太多次,我想反转骑行的方向,因此前进。这可能吗?
(也就是说,如果你用反向我搜索Ctrl- r,你可以改变方向Ctrl-s什么是模拟Alt- .?)
我已经为 Windows 10 安装了 Linux 子系统。它工作正常,但我想更改子系统的默认 shell 环境。
我做了sudo apt-get install fish然后chsh -s /usr/bin/fish。但是当我bash.exe在 Windows 中启动时,它总是启动 bash(我认为这是可以预测的)。
有谁知道改变这种行为的论据?
bash shell windows-10 windows-subsystem-for-linux windows-10-v1607
我PATH在 in 中添加了一个目录/etc/profile。这适用于我的用户帐户,但不适用于 root。将它添加到我的很容易,/root/.bashrc但我想了解有什么问题。这是一个大部分未修改的 Debian 6,所以我认为我的更改应该可以解决问题。
这是我的/etc/profile:
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/lib/distcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
if [ "$PS1" ]; then
if [ "$BASH" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else …Run Code Online (Sandbox Code Playgroud) 该sh命令在交互使用和在 bash 脚本内部使用时的目的是什么?
除了 hash bang 行(第一行)之外,应该在 bash 系统上sh替换为bash?
例子:
#!/bin/bash
sh -c "command"
Run Code Online (Sandbox Code Playgroud) 我喜欢将我的许多环境变量定义放在.profile脚本中。如果我使用的是 POSIX 兼容的交互式 shell,比如 bash,我可以使用 source 命令从.profile更新时重新导出环境变量,而无需打开新的终端窗口。有没有办法在我使用时做同样的事情fish,它使用不同的语法来导出变量?我可以告诉fish 运行一个子sh进程并重新导出它定义的任何变量吗?
当我尝试做显而易见sh .profile的事情时,环境变量显然只在子sh进程中定义,而不会在父fish进程中更新。
编辑:定义我的变量的 shell 代码是这个
CAML_LD_LIBRARY_PATH="/home/hugo/.opam/4.01.0/lib/stublibs"; export CAML_LD_LIBRARY_PATH;
PERL5LIB="/home/hugo/.opam/4.01.0/lib/perl5:"; export PERL5LIB;
OCAML_TOPLEVEL_PATH="/home/hugo/.opam/4.01.0/lib/toplevel"; export OCAML_TOPLEVEL_PATH;
MANPATH=":/home/hugo/.opam/4.01.0/man"; export MANPATH;
PATH="/home/hugo/.opam/4.01.0/bin:/home/hugo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"; export PATH;
Run Code Online (Sandbox Code Playgroud)
不幸的是,此代码是由另一个程序自动生成的,因此也必须使用自动过程来转换为 Fish。我尝试使用以下 sed 脚本
sed 's/\(.*\)="\(.*\)".*/set -x \1 \'\2\';/'
Run Code Online (Sandbox Code Playgroud)
输出以下鱼代码
set -x CAML_LD_LIBRARY_PATH '/home/hugo/.opam/4.01.0/lib/stublibs';
set -x PERL5LIB '/home/hugo/.opam/4.01.0/lib/perl5:';
set -x OCAML_TOPLEVEL_PATH '/home/hugo/.opam/4.01.0/lib/toplevel';
set -x MANPATH ':/home/hugo/.opam/4.01.0/man';
set -x PATH '/home/hugo/.opam/4.01.0/bin:/home/hugo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games';
Run Code Online (Sandbox Code Playgroud)
我可以使用 eval 和()替换来运行
eval (my-sed-script) …Run Code Online (Sandbox Code Playgroud) 如何将文件夹 A 中的隐藏文件和隐藏子目录(以点开头的)复制到文件夹 B?例如,如果我有这个结构:
A/a
A/b
A/.a
A/.b/
A/.b/somefile
A/.b/.c
Run Code Online (Sandbox Code Playgroud)
我只想将 A 中的隐藏文件和隐藏子目录复制到 B:
B/.a
B/.b/
B/.b/somefile
B/.b/.c
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个命令:cp A/.* B来自这个其他超级用户问题。但是,它不会复制子目录。也尝试过cp -r A/.* B,但它会复制,.所以我以 A 的精确副本(包括普通文件)结尾。任何帮助表示赞赏。
当我尝试从 tmux 启动 Sublime Text 或 SourceTree 时出现此错误:
$ subl
Unable to launch Sublime Text 2
$ stree
Unable to open SourceTree
Run Code Online (Sandbox Code Playgroud)
似乎我也无法打开 os x 应用程序:
$ open MPlayerX.app
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/MPlayerX.app.
Run Code Online (Sandbox Code Playgroud)
我正在使用 Yosemite OS X 10.10 (14A388a)、带有 zsh、tmux 1.0a 的 iTerm 2。使用 bash 有同样的问题。知道发生了什么吗?
由于每当我输入长命令时我们将 Bash 更新到 4.3.27,如果它到达终端窗口的末尾,而不是在新行中继续,它会在开头使用“>”覆盖同一行以标记行被换行(我可以在行上前后移动。我的意思是,它不只是覆盖当前行)
就像是:
假设我的终端有 30 个字符的宽度
更新前
user@HOSTNAME ~$ echo "hello w
orld!"
更新后
<ME ~$ echo "hello world!"
自 bash 更新以来,我的环境没有任何变化。$BASHOPTS显示与之前相同的值,除了“complete_fullquote”
如何恢复“多行行为”?
问候
bash ×10
shell ×6
linux ×4
command-line ×3
terminal ×3
macos ×2
sh ×2
fish ×1
growl ×1
osx-yosemite ×1
path ×1
root ×1
tmux ×1
windows-10 ×1