相关疑难解决方法(0)

什么是特殊的美元符号shell变量?

在Bash中,似乎有几个变量具有特殊的,一致意义的值.例如,

./myprogram &; echo $!
Run Code Online (Sandbox Code Playgroud)

将返回后台进程的PID myprogram.我知道其他人,比如$?我认为是目前的TTY.还有其他人吗?

bash environment-variables dollar-sign

751
推荐指数
3
解决办法
30万
查看次数

什么是Bash中的$ @?

我估计$@shell脚本中的句柄是给脚本的所有参数的数组.这是真的?

我问,因为我通常使用搜索引擎收集信息,但我不能谷歌$@,我已经变得太习惯,很容易得到服务的一切.

bash arguments

181
推荐指数
2
解决办法
17万
查看次数

如何从git存储库中删除未使用的对象?

我不小心添加,提交并推送了一个巨大的二进制文件,我最近提交了一个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)

git binary file object

81
推荐指数
8
解决办法
6万
查看次数

Packer 无法以 sudo 身份执行 shell 配置程序

我有一个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

shell provisioning root packer

11
推荐指数
1
解决办法
1万
查看次数