在Bash中,似乎有几个变量具有特殊的,一致意义的值.例如,
./myprogram &; echo $!
Run Code Online (Sandbox Code Playgroud)
将返回后台进程的PID myprogram
.我知道其他人,比如$?
我认为是目前的TTY.还有其他人吗?
我估计$@
shell脚本中的句柄是给脚本的所有参数的数组.这是真的?
我问,因为我通常使用搜索引擎收集信息,但我不能谷歌$@
,我已经变得太习惯,很容易得到服务的一切.
我不小心添加,提交并推送了一个巨大的二进制文件,我最近提交了一个Git存储库.
如何让Git删除为该提交创建的对象,以便我的.git
目录再次缩小到合理的大小?
编辑:谢谢你的回答; 我试过几个解决方案.没有用.例如,GitHub中的文件从历史记录中删除了文件,但.git
目录大小没有减少:
$ BADFILES=$(find test_data -type f -exec echo -n "'{}' " \;)
$ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $BADFILES" HEAD
Rewrite 14ed3f41474f0a2f624a440e5a106c2768edb67b (66/66)
rm 'test_data/images/001.jpg'
[...snip...]
rm 'test_data/images/281.jpg'
Ref 'refs/heads/master' was rewritten
$ git log -p # looks nice
$ rm -rf .git/refs/original/
$ git reflog expire --all
$ git gc --aggressive --prune
Counting objects: 625, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (598/598), done. …
Run Code Online (Sandbox Code Playgroud) 我有一个shell provisioner
包装机与用户连接到一个盒子vagrant
{
"environment_vars": [
"HOME_DIR=/home/vagrant"
],
"expect_disconnect": true,
"scripts": [
"scripts/foo.sh"
],
"type": "shell"
}
Run Code Online (Sandbox Code Playgroud)
脚本的内容是:
whoami
sudo su
whoami
Run Code Online (Sandbox Code Playgroud)
并且输出奇怪地仍然存在:
whoami
sudo su
whoami
Run Code Online (Sandbox Code Playgroud)
为什么我不能切换到root用户?如何以 root 身份执行语句?请注意,我不想引用所有语句sudo "statement |foo"
,而是像演示的那样全局切换用户sudo su