我可以访问远程 Linux 机器,每次我创建符号链接时,默认情况下都会使用以下权限创建它: lrwxrwxrwx
如果我尝试更改符号链接的权限(即不是它指向的路径),例如:
chmod g-w my_symbolic_link
Run Code Online (Sandbox Code Playgroud)
chmod运行正确(没有打印错误消息)但是当我再次检查权限时,它们仍然相同(lrwxrwxrwx)。
我正在等待机器管理员的消息,但我想知道这是否是正常行为,或者它是否是特定于盒子的东西。
在terminator 中,键盘快捷键会Ctrl+Shift+F在窗口底部打开一个小栏,让用户在终端回滚中搜索文本字符串。
是否有任何键盘快捷键可以移至此搜索中的下一个或上一个匹配项?我为 Terminator 找到的最完整的文档包含在 Ubuntu 文档中,但它没有详细介绍这个主题。
我遇到了多个用户在远程机器上共享同一个用户帐户的情况。我有一个“个人”目录,我在其中编写了自己的.zshrc文件,我想有一种方法:
ControlMaster auto).zshrc在我的“个人”目录中运行(不在共享用户的主目录中)有一个别名或一种启动此类 ssh 会话的简单方法会很好(这就是我考虑使用 OpenSSH 的配置文件的原因),但我对任何其他想法持开放态度!
我在 OpenSSH 的 ssh_config手册页上读到,我可以使用该指令LocalCommand指定在成功连接到服务器后在本地运行的命令。这让我觉得可能有一种方法可以告诉config文件在连接到服务器后远程运行什么命令,但似乎没有。
我注意到我的.zshrc文件开头附近有以下行:
export FPATH=/usr/share/zsh/site-functions:/usr/share/zsh/4.2.6/functions:$FPATH
Run Code Online (Sandbox Code Playgroud)
我不记得是我自己输入的还是由 zsh-newuser-install.
是否假设用户FPATH在启动文件中键入这些路径?functions和 和有site-functions什么区别?
我tail用来监视我知道将其进度写入磁盘的作业的进度。几乎总是,我知道他们在开始运行之前将创建哪个文件(作业由超级计算机上的调度程序调度)
tail在创建这些文件之前,有没有办法处理它们?我想这样做,同时避免竞争条件和/或对作业写入磁盘的方式或时间做出假设。
我希望能够在我的.ssh/config文件中指定ssh 使用协议 2(命令行参数-2),以及与它一起使用的密码。
似乎不工作下(我得到错误的配置选项:Cyphers)
Host XXX
HostName YYYY
User ZZZZ
Compression no
Cyphers arcfour,blowfish-cbc
ControlPath ~/.ssh/%r@%h:%p
IdentityFile ~/.ssh/seas/id_rsa
Run Code Online (Sandbox Code Playgroud)
另外,我如何知道我使用的是哪个版本的 ssh(或 OpenSSH)?which ssh或者man ssh没有透露太多信息。
如何在 shell 上解析 JSON 输出?
例如,Amazon Web Services 提供了一个 CLI 来检索您的实例的状态:
$ aws ec2 describe-instances <my_instance_id>
Run Code Online (Sandbox Code Playgroud)
但该命令返回一个 JSON 字符串。该命令的输出如下所示:
$ aws ec2 describe-instances x12345
{
"Reservations" :
{
"OwnerId": "1345345"
"Groups": [],
"SecurityGroups": [
{
"Foo" : "yes"
"Bar" : "no
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
是否有可用于解析 JSON 输出的内置 shell?
例如,我想在 shell 变量中捕获FOO以下output["Reservations"]["SecurityGroups"][0]{"Foo"}.
如果有帮助,我对可以从 Zsh 工作的解决方案特别感兴趣。
...
_NEW_PATH=$("$_THIS_DIR/conda" ..activate "$@")
if (( $? == 0 )); then
export PATH=$_NEW_PATH
# If the string contains / it's a path
if [[ "$@" == */* ]]; then
export CONDA_DEFAULT_ENV=$(get_abs_filename "$@")
else
export CONDA_DEFAULT_ENV="$@"
fi
# ==== The next line returns an error
# ==== with the message: "export: not valid in this context /Users/avazquez/anaconda3"
export CONDA_ENV_PATH=$(get_dirname $_THIS_DIR)
if (( $("$_THIS_DIR/conda" ..changeps1) )); then
CONDA_OLD_PS1="$PS1"
PS1="($CONDA_DEFAULT_ENV)$PS1"
fi
else
return $?
fi
...
Run Code Online (Sandbox Code Playgroud)
这是为什么?我找到了这张票 …
下面的脚本在 bash 中有效,但在 zsh 中无效。我认为这是因为在变量中OPTS,我正在“扩展”(不确定这是否是正确的词)变量$EXCLUDE,而这种语法在 zsh 中不起作用。我将如何替换该行以使其在 zsh 上工作?
SRC="/path_to_source"
DST="/path_to_dest"
EXCLUDE=".hg"
OPTS="-avr --delete --progress --exclude=${EXCLUDE} --delete-excluded"
rsync $OPTS $SRC $DST
Run Code Online (Sandbox Code Playgroud) 我正在尝试在zsh.
假设我在 zsh 中有两个数组,它们具有相同的未知元素#,每个数组都包含一个路径列表,例如
LOCAL_ARRAY=($LOCAL_PATH_1 $LOCAL_PATH_2 $LOCAL_PATH_3)
REMOTE_ARRAY=($REMOTE_PATH_1 $REMOTE_PATH_2 $REMOTE_PATH_3)
Run Code Online (Sandbox Code Playgroud)
我想使用公共索引同时遍历两个数组,以便我可以执行以下操作:
cd $LOCAL_PATH_i
hg pull $REMOTE_PATH_i
Run Code Online (Sandbox Code Playgroud)
在每次迭代中。我怎样才能在 zsh 中做到这一点?
另外,我在zsh 文档中搜索了循环控制和数组,但收效甚微。有没有介绍zsh中循环、数组等基础知识的好教程?适合那些几乎没有 bash 或 shell 脚本经验但有编程背景的人吗?
zsh ×5
ssh ×2
array ×1
assignment ×1
chmod ×1
files ×1
json ×1
openssh ×1
permissions ×1
search ×1
shell ×1
shell-script ×1
string ×1
symlink ×1
tail ×1