CasperSecurity

Current Path : /usr/share/bash-completion/completions/
Upload File :
Current File : //usr/share/bash-completion/completions/gio

#
# Copyright (C) 2018 Red Hat, Inc.
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2.1 of the
# licence, or (at your option) any later version.
#
# This is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library; if not, see <http://www.gnu.org/licenses/>.
#

# Check for bash
[ -z "$BASH_VERSION" ] && return

####################################################################################################

# Check whether the suggestions have common prefix (i.e. suggestions won't be
# shown and prefix will be completed first)
__gio_has_common_prefix() {
    local i
    for (( i = 1; i < ${#COMPREPLY[@]}; i++ )); do
        if [[ "${COMPREPLY[i-1]:${#cur}:1}" != "${COMPREPLY[i]:${#cur}:1}" ]]; then
            return 1 # False
        fi
    done

    return 0 # True
}

# Complete file location
__gio_location() {
    # Prevent breaking on colons, we have to work with uris
    local cur
    _get_comp_words_by_ref -n : cur

    # Resolve dirname for dir listing
    local dir=""
    if [[ $cur =~ "/"$ ]]; then
        dir="$cur"
    elif [[ $cur =~ "/" ]]; then
        # Subtract basename because dirname cmd doesn't work well with schemes
        dir=${cur%$(basename "$cur")}
    fi

    # List volumes and mounts
    local mounts=( )
    local mount
    while IFS=$'\n' read mount; do
        # Do not care about local mounts
        [[ "$mount" =~ ^"file:" ]] && continue

        # Use only matching mounts
        [[ "$mount" =~ ^"$cur" && "$mount" != "$cur" ]] && mounts+=("$mount")
    done < <(gio mount -li | sed -n -r 's/^ *(default_location|activation_root)=(.*)$/\2/p' | sort -u)

    # Workaround to unescape dir name (e.g. "\ " -> " ")
    local -a tmp="( ${dir} )"
    local unescaped_dir="${tmp[0]}"

    # List files
    local files=()
    local names=()
    local name size type
    while IFS=$'\t' read name size type; do
        # Escape name properly
        local escaped_name="$(printf "%q" "$name")"

        # Append slash for directories and space for files
        if [[ "$type" == "(directory)" ]]; then
            escaped_name="$escaped_name/"
        else
            escaped_name="$escaped_name "
        fi

        local path="$dir$escaped_name"

        # Use only matching paths
        if [[ "$path" =~ ^"$cur" ]]; then
            files+=("$path")
            names+=("$escaped_name")
        fi
    done < <(gio list -hl "$unescaped_dir" 2> /dev/null)

    COMPREPLY=("${files[@]}" "${mounts[@]}")

    # Workaround to show suggestions as basenames only
    if ! __gio_has_common_prefix; then
        COMPREPLY=("${mounts[@]} ${names[@]}")

        # Workaround to prevent overwriting suggestions, it adds empty
        # suggestion, otherwise names with colons will be corrupted
        COMPREPLY+=(" ")

        return 0
    fi

    # Workaround to complete names with colons, it removes colon prefix from
    # COMPREPLY
    __ltrim_colon_completions "$cur"
}

__gio() {
    # Complete subcommands
    if (( ${COMP_CWORD} == 1 )); then
        COMPREPLY=($(compgen -W "help version cat copy info launch list mime mkdir monitor mount move open rename remove save set trash tree" -- "${COMP_WORDS[1]}"))
        compopt +o nospace
        return 0
    fi

    # Complete file locations
    __gio_location
}

####################################################################################################

complete -o nospace -F __gio gio
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY