小编Ame*_*ina的帖子

符号链接权限不会随 chmod 改变

我可以访问远程 Linux 机器,每次我创建符号链接时,默认情况下都会使用以下权限创建它: lrwxrwxrwx

如果我尝试更改符号链接的权限(即不是它指向的路径),例如:

chmod g-w my_symbolic_link
Run Code Online (Sandbox Code Playgroud)

chmod运行正确(没有打印错误消息)但是当我再次检查权限时,它们仍然相同(lrwxrwxrwx)。

我正在等待机器管理员的消息,但我想知道这是否是正常行为,或者它是否是特定于盒子的东西。

permissions chmod symlink

12
推荐指数
1
解决办法
7276
查看次数

终结者:上一个和下一个的快捷方式?

terminator 中,键盘快捷键会Ctrl+Shift+F在窗口底部打开一个小栏,让用户在终端回滚中搜索文本字符串。

是否有任何键盘快捷键可以移至此搜索中的下一个上一个匹配项?我为 Terminator 找到的最完整的文档包含在 Ubuntu 文档中,但它没有详细介绍这个主题。

keyboard-shortcuts terminal-emulator search

12
推荐指数
1
解决办法
8063
查看次数

ssh,启动一个特定的 shell,然后在远程机器上运行一个命令?

我遇到了多个用户在远程机器上共享同一个用户帐户的情况。我有一个“个人”目录,我在其中编写了自己的.zshrc文件,我想有一种方法:

  1. 使用我的 ssh 配置文件中的指令在远程机器中启动 ssh 会话(例如ControlMaster auto
  2. 此会话运行 Z shell
  3. .zshrc在我的“个人”目录中运行(不在共享用户的主目录中)

有一个别名或一种启动此类 ssh 会话的简单方法会很好(这就是我考虑使用 OpenSSH 的配置文件的原因),但我对任何其他想法持开放态度!

使用 OpenSSH 的配置文件?

我在 OpenSSH 的 ssh_config手册页上读到,我可以使用该指令LocalCommand指定在成功连接到服务器后在本地运行的命令。这让我觉得可能有一种方法可以告诉config文件在连接到服务器后远程运行什么命令,但似乎没有。

ssh openssh

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

zsh 中的 FPATH:函数和站点函数

我注意到我的.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什么区别?

zsh

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

如何开始拖尾尚未创建的文件

tail用来监视我知道将其进度写入磁盘的作业的进度。几乎总是,我知道他们在开始运行之前将创建哪个文件(作业由超级计算机上的调度程序调度)

tail在创建这些文件之前,有没有办法处理它们?我想这样做,同时避免竞争条件和/或对作业写入磁盘的方式或时间做出假设。

shell-script tail files

12
推荐指数
2
解决办法
2193
查看次数

在 .ssh/config 中指定密码和协议 2

我希望能够在我的.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没有透露太多信息。

ssh

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

shell 上的 JSON 解析

如何在 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 工作的解决方案特别感兴趣。

zsh string json

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

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)

这是为什么?我找到了这张票 …

zsh environment-variables command-substitution assignment

12
推荐指数
2
解决办法
4万
查看次数

在 zsh 中扩展变量

下面的脚本在 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)

shell zsh

11
推荐指数
3
解决办法
6318
查看次数

zsh 中的数组和循环

我正在尝试在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 array

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