我试图使用一个路径并用bash中的波形符替换主目录,我希望用必要的外部程序完成它.有没有办法只用bash来做到这一点.我有
${PWD/#$HOME/\~}
Run Code Online (Sandbox Code Playgroud)
但那不太对劲.它需要转换:
/home/alice to ~
/home/alice/ to ~/
/home/alice/herp to ~/herp
/home/alicederp to /home/alicederp
Run Code Online (Sandbox Code Playgroud)
作为一个感兴趣的注释,继承人在转换提示符中的\ w值时bash源如何做到这一点:
/* Return a pretty pathname. If the first part of the pathname is
the same as $HOME, then replace that with `~'. */
char *
polite_directory_format (name)
char *name;
{
char *home;
int l;
home = get_string_value ("HOME");
l = home ? strlen (home) : 0;
if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] …Run Code Online (Sandbox Code Playgroud) 我看到一个bash脚本exec 1>&2在一个函数中有命令.就像是:
function example()
{
exec 1>&2
cat <<EOT
Script requires at least one parameter.
EOT
exit 1
}
Run Code Online (Sandbox Code Playgroud)
据我所知,exec 1>&2意味着从这一点开始的一切都将被引导到stderr.这是某种形式的固定行为的高管需要知道的心脏或者是有这背后的一些很好的解释?我的意思是,据我所知,执行 Bash脚本只是调用一个命令采用与Bash脚本相同的PID,一旦命令完成,PID就会被终止.1>&2不是命令.有人可以解释命令背后的细节(尤其是问题原因)exec 1>&2吗?
给定位掩码,其中设置位描述另一个数字可以是1或0的位置,并且未设置的位在该数字中必须为零.迭代所有可能值的好方法是什么?
例如:
000 returns [000]
001 returns [000, 001]
010 returns [000, 010]
011 returns [000, 001, 010, 011]
100 returns [000, 100]
101 returns [000, 001, 100, 101]
110 returns [000, 010, 100, 110]
111 returns [000, 001, 010, 011, 100, 101, 110, 111]
Run Code Online (Sandbox Code Playgroud)
最简单的方法是这样做:
void f (int m) {
int i;
for (i = 0; i <= m; i++) {
if (i == i & m)
printf("%d\n", i);
}
}
Run Code Online (Sandbox Code Playgroud)
但这会迭代太多数字.它应该是32而不是2**32.
通常在Git中,每个开发人员都会从源头克隆到个人跟踪仓库,进行一些更改,然后向引用其个人机器的管理器发送获取请求,该管理器具有git-daemon或web服务器,或者允许管理器连接与ssh.
对于一些变化,它可以让开发人员自己检查一下.对于较大的人,其他人喜欢在检查主人之前查看它.所以dev确实有权检查存储库.
但是,如果经理无法连接到其他开发人员工作机器,并且只能访问原始git仓库或电子邮件,该怎么办?发送差异给他审查的最佳方法是什么?
我们可以在电子邮件中发送补丁,或者开发人员可以将他的分支推送到原点并告诉经理git fetch origin; git diff master..case223.还是有另一种更好的方法吗?
$ @变量似乎保持引用它的参数,例如:
$ function foo { for i in "$@"; do echo $i; done }
$ foo herp "hello world" derp
herp
hello world
derp
Run Code Online (Sandbox Code Playgroud)
我也知道bash数组,工作方式相同:
$ a=(herp "hello world" derp)
$ for i in "${a[@]}"; do echo $i; done
herp
hello world
derp
Run Code Online (Sandbox Code Playgroud)
这样的变量究竟发生了什么?特别是当我在报价中添加一些内容,比如"duck $ {a [@]} goose".如果它的空间不分隔是什么呢?
有没有办法在Chrome的JavaScript控制台中使用Tampermonkey的API?
我想弄乱像GM_xmlhttpRequest()和的功能GM_listValues().
javascript console google-chrome google-chrome-devtools tampermonkey
有没有办法让vim在新选项卡中打开文件,如果它尚未打开,或打开包含它的选项卡(如果有)?我知道:tab drop file只有用于vim的GUI版本,我需要它用于CLI版本.
假设您正在编辑一个 .c 文件,并且您在一行中:
#include {here}
Run Code Online (Sandbox Code Playgroud)
然后你按下tab键,有没有办法让它完成所有与当前目录相关的头文件以及所有系统范围的头文件,比如stdio.h和stdlib.h?
当我没有命令ssh到一个盒子时,它给了我一个交互式shell.如果我明确地说要运行bash,它就无法以交互方式工作.我必须发送一个中断停止.如果我想运行像mysql这样的交互式程序,我可以不先启动交互式shell吗?
bash ×3
vim ×2
algorithm ×1
autocomplete ×1
console ×1
exec ×1
git ×1
interactive ×1
javascript ×1
path ×1
quotes ×1
regex ×1
ssh ×1
tampermonkey ×1