我想在终端之间共享历史记录并跟踪历史命令的经过时间。直观的方法似乎是同时使用EXTENDED_HISTORYand SHARE_HISTORY,但这将在重新启动 shell 后将所有经过的时间戳设置为 0。这是正确的方法吗?甚至有可能吗?
EXTENDED_HISTORY和SHARE_HISTORY$ history -Dn | sed 's|\\n|\n |g'
0:00 cat << EOF > ~/.zshrc
HISTFILE=~/.zhistory-test
HISTSIZE=100
SAVEHIST=100
setopt EXTENDED_HISTORY
setopt SHARE_HISTORY # the only change compared to below
EOF
0:00 exec zsh
Run Code Online (Sandbox Code Playgroud)
0:00sleep 1
0:00 exec zsh
Run Code Online (Sandbox Code Playgroud)
EXTENDED_HISTORY$ history -Dn | sed 's|\\n|\n |g'
0:00 cat << EOF > ~/.zshrc
HISTFILE=~/.zhistory-test
HISTSIZE=100
SAVEHIST=100
setopt EXTENDED_HISTORY
EOF
0:00 exec zsh
Run Code Online (Sandbox Code Playgroud)
0:01sleep 1
0:00 exec zsh …Run Code Online (Sandbox Code Playgroud) 我有一个用于各种 C 代码测试的文件夹,其中包含许多名为*.c. 我的目标是让 Makefile 搜索以任何结尾的文件名.c,并将该文件名的根添加到目标中。
Makefile:
TARGETS = $(shell ls *.c | sed "s/\.c$//g")
all: $(TARGETS)
Run Code Online (Sandbox Code Playgroud)
问题是 shell 命令在 sh 中按预期工作:
$ sh -c 'ls *.c | sed "s/\.c$//g"'
hello
Run Code Online (Sandbox Code Playgroud)
...虽然它失败了make:
$ make
sed: 1: "s/\.c/g": unterminated substitute in regular expression
make: Nothing to be done for `all'.
Run Code Online (Sandbox Code Playgroud)
我尝试转义$as \$,而是产生:
`sed: 1: "s/\.c\/g": unterminated substitute pattern`
Run Code Online (Sandbox Code Playgroud)
"用单引号 ( ')替换双引号 ( ) 也是如此。