Bash удаленное автозавершение: измените 'стартовый' каталог

Аннулирует файл, названный "wgetrc" в текущем каталоге. Как в создает пустой файл "wgetrc", если Вы не существуете или перезаписываете один ни с чем, если он делает.

Эквивалентный следующему:

cat /dev/null > wgetrc
3
15.05.2013, 14:24
1 ответ

Править: Нарезанный это еще немного.

Вы могли бы найти это полезным от администрации Debian: введение для избиения завершения.


Полный сценарий: /some/location/my_ssh_autocomplete_script (только предназначенный как короткий начинающий):

#!/bin/bash

_get_rsync_file_list()
{
    # For test:
    #local -a flist=("foo" "bar")
    #printf "%s " "${flist[@]}"
    # Or:
    ls /tmp

    # For live something in direction of:
    #ssh user@host 'ls /path/to/dir' <-- but not ls for other then dirty testing.
}

_GetOptSSH()
{
    local cur

    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"

    case "$cur" in
    -*)
        COMPREPLY=( $( compgen -W '-h --help' -- "$cur" ) );;
    *)
        # This could be done nicer I guess:
        COMPREPLY=( $( compgen -W "$(_get_rsync_file_list)" -- "$cur" ) );;
    esac

    return 0
}

Загрузите сценарий /some/location/my_ssh_download_script:

#!/bin/bash

server="myserver"
path="/home/pierre/downloads"

download_from_myserver() {
    for file; do
        rsync "$server:$path/$file"
    done
}

case "$1" in
    "-h"|"--help")
        echo "Download files from '$server', path: '$path'" >&2
        exit 0;;
esac

download_from_myserver "$@"

В .bash_aliases:

alias download_from_myserver='/some/location/my_ssh_download_script'

В .bash_completion:

# Source complete script:
if . "/some/location/my_ssh_autocomplete_script" >/dev/null 2>&1; then
    # Add complete function to download alias:
    complete -F _GetOptSSH download_from_myserver
fi
3
27.01.2020, 21:24
  • 1
    каждое расширение и что-либо, что могло содержать специальный символ, например, "$var", "$", "$ {массив}", "$ (команда)". Используйте 'одинарные кавычки' для создания, что-то литеральное, например, 'Стоит $5'. См. <mywiki.wooledge.org/Quotes>, <mywiki.wooledge.org/Arguments> и <wiki.bash-hackers.org/syntax/words>. –  Rany Albeg Wein 15.05.2013, 14:56
  • 2
    ls является инструментом для того, чтобы в интерактивном режиме посмотреть на информацию о файле. Его вывод отформатирован для людей и вызовет ошибки в сценариях. Используйте шарики или найдите вместо этого. Поймите почему: mywiki.wooledge.org/ParsingLs –  Rany Albeg Wein 15.05.2013, 14:57
  • 3
    Условно, переменные среды (ПУТЬ, РЕДАКТОР, ОБОЛОЧКА...) и внутренние переменные оболочки (BASH_VERSION, СЛУЧАЙНЫЙ...), полностью использован для своей выгоды. Все другие имена переменной должны быть нижним регистром. Так как имена переменной чувствительны к регистру, эта конвенция старается не случайно переопределять переменные окружения и внутренние переменные. –  Rany Albeg Wein 15.05.2013, 14:57
  • 4
    Спасибо, это решение работает действительно хорошо! Я действительно использовал, находят вместо ls, как указано Rany Albeg Wein, но это - единственная вещь, которую я изменил. И спасибо за ссылку на debian-administration.org, я уже считал его, но я не был достаточно удобен хорошо использовать его :p –  Pierre Mourlanne 15.05.2013, 15:44

Теги

Похожие вопросы