获取fish shell以使用gcloud命令行工具?

ene*_*ite 16 fish gcloud

有没有人有运气获得鱼壳与谷歌的gcloud命令行工具?我不是Fish脚本的专家,但这些是gcloud需要运行的两个文件(可以正常使用Fish的bash模式).Fish不允许您从我理解的内容中获取bash文件,因此需要将这些文件转换为Fish脚本?

path.bash

script_link="$( readlink "$BASH_SOURCE" )" || script_link="$BASH_SOURCE"
apparent_sdk_dir="${script_link%/*}"
if [ "$apparent_sdk_dir" == "$script_link" ]; then
  apparent_sdk_dir=.
fi
sdk_dir="$( command cd -P "$apparent_sdk_dir" && pwd -P )"
bin_path="$sdk_dir/bin"
export PATH=$bin_path:$PATH
Run Code Online (Sandbox Code Playgroud)

path.completion

_python_argcomplete() {
    local IFS=''
    COMPREPLY=( $(IFS="$IFS"                   COMP_LINE="$COMP_LINE"                   COMP_POINT="$COMP_POINT"                   _ARGCOMPLETE_COMP_WORDBREAKS="$COMP_WORDBREAKS"                   _ARGCOMPLETE=1                   "$1" 8>&1 9>&2 1>/dev/null 2>/dev/null) )
    if [[ $? != 0 ]]; then
        unset COMPREPLY
    fi
}
complete -o default -F _python_argcomplete "gcloud"

_completer() {
    command=$1
    name=$2
    eval '[[ "$'"${name}"'_COMMANDS" ]] || '"${name}"'_COMMANDS="$('"${command}"')"'
    set -- $COMP_LINE
    shift
    while [[ $1 == -* ]]; do
          shift
    done
    [[ $2 ]] && return
    grep -q "${name}\s*$" <<< $COMP_LINE &&
        eval 'COMPREPLY=($'"${name}"'_COMMANDS)' &&
        return
    [[ "$COMP_LINE" == *" " ]] && return
    [[ $1 ]] &&
        eval 'COMPREPLY=($(echo "$'"${name}"'_COMMANDS" | grep ^'"$1"'))'
}

unset bq_COMMANDS
_bq_completer() {
    _completer "CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=1 bq help | grep '^[^ ][^ ]*  ' | sed 's/ .*//'" bq
}

unset gsutil_COMMANDS
_gsutil_completer() {
    _completer "CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=1 gsutil help | sed /Additional/q | grep '^  ' | sed -e 's/^  //' -e 's/ .*//'" gsutil
}

unset gcutil_COMMANDS
_gcutil_completer() {
    _completer "CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=1 gcutil help | grep -v '^information' | grep '^[a-z]' | sed -e 's/ .*//' -e '/^$/d'" gcutil
}

complete -o default -F _bq_completer bq
complete -o default -F _gsutil_completer gsutil
complete -o default -F _gcutil_completer gcutil
Run Code Online (Sandbox Code Playgroud)

Hun*_*ter 31

对我有用的只是使用低音.看看:https: //github.com/edc/bass

只需将gcloud添加到bash_profile中的行添加到.config/fish/config.fish文件中,然后将它们添加到它们中,如下所示:

# The next line updates PATH for the Google Cloud SDK.
bass source '/Users/hunter/bin/google-cloud-sdk/path.bash.inc'

# The next line enables shell command completion for gcloud.
bass source '/Users/hunter/bin/google-cloud-sdk/completion.bash.inc'
Run Code Online (Sandbox Code Playgroud)

  • https://github.com/Doctusoft/google-cloud-sdk-fish-completion与`source'结合使用...../google-cloud-sdk/path.fish.inc'`为我工作. (4认同)
  • 谢谢你 100 次......低音很棒! (3认同)
  • 这似乎不再起作用,或者更确切地说,当我点击选项卡时,我会得到用于自动完成的文件和文件夹。 (3认同)

Rik*_*Rik 6

到今天为止,我只能做

  1. brew cask install google-cloud-sdk
  2. 添加source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.fish.inc到我的~/.config/fish/config.fish
  3. 克隆https://github.com/aliz-ai/google-cloud-sdk-fish-completion然后运行install.sh

  • 这是我的工作解决方案。要与oh-my-fish一起安装:`$ omf install git@github.com:aliz-ai / google-cloud-sdk-fish-completion.git` (2认同)
  • 对我来说,上面的命令给出了权限错误。```$ omf install https://github.com/lgathy/google-cloud-sdk-fish-completion.git``` 。这有效 (2认同)

Joh*_*uth 5

对于 path.bash,它所做的只是将 Cloud SDK bin 目录添加到您的 PATH 中。我们在那里放置了一些奇怪的东西,因为我们希望它能够在 Cloud SDK 目录内部工作,即使在后面,例如符号链接。对于您自己的系统,只需执行相当于“export PATH=$PATH:/path/to/google-cloud-sdk/bin”的 fsh 操作。

对于制表符补全,我不知道fsh的制表符补全是如何工作的,所以我什么也没有。

  • 使用 `fish_user_paths` 通用变量是其中一种可能性:`set -U Fish_user_paths $fish_user_paths /path/to/google-cloud-sdk/bin`。 (3认同)