Fórum Root.cz

Hlavní témata => Server => Téma založeno: Drda 21. 11. 2017, 17:50:24

Název: Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Drda 21. 11. 2017, 17:50:24
Ahoj, je možný, že existuje v bash nějaký příkaz/funkce, který by začínal podtržítkem? Díky
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Miroslav Šilhavý 21. 11. 2017, 17:59:28
Ahoj, je možný, že existuje v bash nějaký příkaz/funkce, který by začínal podtržítkem? Díky

Minimálně s instalací balíku bash-completion:

Kód: [Vybrat]
_allowed_groups                 _get_pword                      _init_completion                _rl_enabled
_allowed_users                  _gids                           _insserv                        _root_command
_available_interfaces           __git_eread                     _installed_modules              _service
_cd                             __git_ps1                       _ip_addresses                   _services
_cd_devices                     __git_ps1_colorize_gitstring    _kernels                        _shells
_command                        __git_ps1_show_upstream         _kernel_versions                _signals
_command_offset                 __grubcomp                      _known_hosts                    _split_longopt
_complete_as_root               __grub_dir                      _known_hosts_real               _subdirectories
_completion_loader              _grub_editenv                   _longopt                        _sysvdirs
_configured_interfaces          __grub_get_last_option          __ltrim_colon_completions       _terms
_count_args                     __grub_get_options_from_help    _mac_addresses                  _tilde
_debconf_show                   __grub_get_options_from_usage   _minimal                        _uids
_deborphan                      _grub_install                   _modules                        _update_initramfs
_dkms                           __grub_list_menuentries         _mtx                            _upvar
_dvd_devices                    __grub_list_modules             _ncpus                          _upvars
_expand                         _grub_mkconfig                  _parse_help                     _usb_ids
__expand_tilde_by_ref           _grub_mkfont                    __parse_options                 _user_at_host
_filedir                        _grub_mkimage                   _parse_usage                    _usergroup
_filedir_xspec                  _grub_mkpasswd_pbkdf2           _pci_ids                        _userland
_filename_parts                 _grub_mkrescue                  _pgids                          _variables
_fstypes                        _grub_probe                     _pids                           _xfunc
_get_comp_words_by_ref          _grub_script_check              _pnames                         _xinetd_services
_get_cword                      _grub_set_entry                 _quote_readline_by_ref
__get_cword_at_cursor_by_ref    _grub_setup                     _realcommand
_get_first_arg                  _have                           __reassemble_comp_words_by_ref
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Drda 21. 11. 2017, 18:02:49
Díky moc! Poradíš i jak vypsat názvy systémových proměnných?
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Miroslav Šilhavý 21. 11. 2017, 18:11:41
Díky moc! Poradíš i jak vypsat názvy systémových proměnných?

Kód: [Vybrat]
set
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: David1234 21. 11. 2017, 18:13:06
Ahoj, je možný, že existuje v bash nějaký příkaz/funkce, který by začínal podtržítkem? Díky

Minimálně s instalací balíku bash-completion:

Kód: [Vybrat]
_allowed_groups                 _get_pword                      _init_completion                _rl_enabled
_allowed_users                  _gids                           _insserv                        _root_command
_available_interfaces           __git_eread                     _installed_modules              _service
_cd                             __git_ps1                       _ip_addresses                   _services
_cd_devices                     __git_ps1_colorize_gitstring    _kernels                        _shells
_command                        __git_ps1_show_upstream         _kernel_versions                _signals
_command_offset                 __grubcomp                      _known_hosts                    _split_longopt
_complete_as_root               __grub_dir                      _known_hosts_real               _subdirectories
_completion_loader              _grub_editenv                   _longopt                        _sysvdirs
_configured_interfaces          __grub_get_last_option          __ltrim_colon_completions       _terms
_count_args                     __grub_get_options_from_help    _mac_addresses                  _tilde
_debconf_show                   __grub_get_options_from_usage   _minimal                        _uids
_deborphan                      _grub_install                   _modules                        _update_initramfs
_dkms                           __grub_list_menuentries         _mtx                            _upvar
_dvd_devices                    __grub_list_modules             _ncpus                          _upvars
_expand                         _grub_mkconfig                  _parse_help                     _usb_ids
__expand_tilde_by_ref           _grub_mkfont                    __parse_options                 _user_at_host
_filedir                        _grub_mkimage                   _parse_usage                    _usergroup
_filedir_xspec                  _grub_mkpasswd_pbkdf2           _pci_ids                        _userland
_filename_parts                 _grub_mkrescue                  _pgids                          _variables
_fstypes                        _grub_probe                     _pids                           _xfunc
_get_comp_words_by_ref          _grub_script_check              _pnames                         _xinetd_services
_get_cword                      _grub_set_entry                 _quote_readline_by_ref
__get_cword_at_cursor_by_ref    _grub_setup                     _realcommand
_get_first_arg                  _have                           __reassemble_comp_words_by_ref

Nepřijde ti, že je toho nějak moc? :) Co by měl dělat třeba příkaz _cd? ;)
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Miroslav Šilhavý 21. 11. 2017, 18:36:48
Nepřijde ti, že je toho nějak moc? :) Co by měl dělat třeba příkaz _cd? ;)

Vím já? Definice je (Debian Jessie):

Kód: [Vybrat]
_cd ()
{
    local cur prev words cword;
    _init_completion || return;
    local IFS='
' i j k;
    compopt -o filenames;
    if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/* ]]; then
        _filedir -d;
        return 0;
    fi;
    local -r mark_dirs=$(_rl_enabled mark-directories && echo y);
    local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y);
    for i in ${CDPATH//:/'
'};
    do
        k="${#COMPREPLY[@]}";
        for j in $( compgen -d $i/$cur );
        do
            if [[ ( -n $mark_symdirs && -h $j || -n $mark_dirs && ! -h $j ) && ! -d ${j#$i/} ]]; then
                j+="/";
            fi;
            COMPREPLY[k++]=${j#$i/};
        done;
    done;
    _filedir -d;
    if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
        i=${COMPREPLY[0]};
        if [[ "$i" == "$cur" && $i != "*/" ]]; then
            COMPREPLY[0]="${i}/";
        fi;
    fi;
    return 0
}
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: David1234 21. 11. 2017, 18:53:37
Předpokládám že podtržítkem začínají hlavně funkce a aliasy? Zkusil jsem prohledat svoji distribuci a žádnou binárku ani vestavěný příkaz který by začínal podtržítkem jsem nenašel.

Samozřejmě to neznamená že takový příkaz není.
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Miroslav Šilhavý 21. 11. 2017, 19:04:37
Předpokládám že podtržítkem začínají hlavně funkce a aliasy? Zkusil jsem prohledat svoji distribuci a žádnou binárku ani vestavěný příkaz který by začínal podtržítkem jsem nenašel.

Samozřejmě to neznamená že takový příkaz není.

Já se domnívám, že to je z bash-completion, ale jsem líný to hledat. Dotaz zněl, jestli je to možné - a ano, je to možné, dokonce jsem to našel ve své běžící, poměrně standardní instalaci Debiana.

V čistém bashi asi takový příkaz není, v systému standardně taky ne.
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Mirek Prýmek 21. 11. 2017, 19:23:10
Kód: [Vybrat]
set
Spíš
Kód: [Vybrat]
env:)
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Kit 21. 11. 2017, 20:32:44
Kód: [Vybrat]
set
Spíš
Kód: [Vybrat]
env:)

env nevypíše funkce, ale jen proměnné.
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: nobody(ten pravej) 21. 11. 2017, 22:31:00
env nevypíše funkce, ale jen proměnné.
pripomenu k tomu otazku ;-)
Díky moc! Poradíš i jak vypsat názvy systémových proměnných?

Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Miroslav Šilhavý 21. 11. 2017, 22:45:39
Ježiš, pánové, neměřte si tu pindíky. Já souhlasím s tím, že env vypíše jen proměnné, set vypíše zbytečně moc kravin. Tazatel už si z toho snad vybere - a pokud ne, tak my ho stejně nezachráníme :).
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: ByCzech 21. 11. 2017, 22:54:56
Kód: [Vybrat]
set
Spíš
Kód: [Vybrat]
env:)

Kód: [Vybrat]
export
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Mirek Prýmek 22. 11. 2017, 03:14:43
set vypíše zbytečně moc kravin
set je hlavně interní příkaz shellu a vypisuje interní struktury shellu. /usr/bin/env je externí program, který vypíše, co se skutečně exportuje, protože do shellu nevidí.

Kód: [Vybrat]
export
Kód: [Vybrat]
# export
export: Command not found.
:)
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Tomas2 22. 11. 2017, 08:58:14
že by zsh? Vlákno začalo dotazem na bash, export je bash command.

Pokud chcete tohle úplně nezávislé na implementaci shellu, na linuxu funguje

cat /proc/self/environ

Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Miroslav Šilhavý 22. 11. 2017, 18:38:38
že by zsh? Vlákno začalo dotazem na bash, export je bash command.

Pokud chcete tohle úplně nezávislé na implementaci shellu, na linuxu funguje

cat /proc/self/environ

env je také úplně nezávislý na shellu (/usr/bin/env); moje původní rada "set" naopak na shellu byla závislá, ale bavíme se od začátku o bashi
Název: Re:Existuje příkaz / funkce která začíná podtržítkem?
Přispěvatel: Mirek Prýmek 22. 11. 2017, 20:11:29
env je také úplně nezávislý na shellu (/usr/bin/env); moje původní rada "set" naopak na shellu byla závislá, ale bavíme se od začátku o bashi
Ta druhá otázka byla na "systémové proměnné", takže to moc o shellu není, natož bashi. Taky je otázka, co si pod tím pojmem OP představuje - jestli nemá zkreslené představy o tom, jak env proměnné fungují...