Команда Linux для списка всех доступных команд и псевдонимов

- зона также должна быть указана для возможности изменения размера узлов кластера до нуля в gcloud SDK v 2.0.27

gcloud container clusters resize $CLUSTER --size=0 --zone=$ZONE
264
задан Jonathan Leffler 3 June 2009 в 13:53
поделиться

14 ответов

You can use the bash(1) built-in compgen

  • compgen -c will list all the commands you could run.
  • compgen -a will list all the aliases you could run.
  • compgen -b will list all the built-ins you could run.
  • compgen -k will list all the keywords you could run.
  • compgen -A function will list all the functions you could run.
  • compgen -A function -abck will list all the above in one go.

Check the man page for other completions you can generate.

To directly answer your question:

compgen -ac | grep searchstr

should do what yout want.

577
ответ дан 23 November 2019 в 02:28
поделиться

в debian: ls / bin / | grep "whatImSearchingFor"

-5
ответ дан 23 November 2019 в 02:28
поделиться

Почему бы вам просто не ввести:

seachstr

В терминале.

Оболочка скажет что-то вроде

seacrhstr: command not found 

EDIT :

Хорошо, я принимаю голос против, потому что ответ глупый, я просто хочу знать: что не так с этим ответом !!! Спрашивающий сказал:

и посмотрите, доступна ли команда.

Ввод команды покажет вам, доступна ли она!

Вероятно, он / она имел в виду «без выполнения команды» или «включить это в сценарий» , но я не могу читать его мысли (не то чтобы я не мог регулярно, просто он носит дефлектор чтения мыслей )

-3
ответ дан 23 November 2019 в 02:28
поделиться

, возможно, я неправильно понимаю, но что, если вы нажмете Escape, пока не получите возможности Display All X ?

-1
ответ дан 23 November 2019 в 02:28
поделиться

Here's a function you can put in your bashrc file:

function command-search
{
   oldIFS=${IFS}
   IFS=":"

   for p in ${PATH}
   do
      ls $p | grep $1
   done

   export IFS=${oldIFS}
}

Example usage:

$ command-search gnome
gnome-audio-profiles-properties*
gnome-eject@
gnome-keyring*
gnome-keyring-daemon*
gnome-mount*
gnome-open*
gnome-sound-recorder*
gnome-text-editor@
gnome-umount@
gnome-volume-control*
polkit-gnome-authorization*
vim.gnome*
$

FYI: IFS is a variable that bash uses to split strings.

Certainly there could be some better ways to do this.

0
ответ дан 23 November 2019 в 02:28
поделиться

Проблема в том, что завершение табуляции ищет ваш путь, но все команды не находятся на вашем пути.

Чтобы найти команды на своем пути с помощью bash, вы можете сделать что-то вроде:

для x в echo $ PATH | вырезать -d ":" -f1 ; do ls $ x; готово

0
ответ дан 23 November 2019 в 02:28
поделиться

это зависит, я имею в виду, что это зависит от того, какую оболочку вы используете. вот ограничения, которые я вижу:

  1. должен выполняться в том же процессе, что и ваша оболочка, чтобы улавливать псевдонимы, функции и переменные, которые будут влиять на команды, которые вы можете найти, подумайте о PATH или EDITOR, хотя EDITOR может быть вне области видимости.
1
ответ дан 23 November 2019 в 02:28
поделиться

Вы всегда можете сделать следующее:

1. Hold the $PATH environment variable value.
2. Split by ":"
3. For earch entry: 
    ls * $entry 
4. grep your command in that output.

Оболочка все равно выполнит команды, только если они перечислены в пути env var.

1
ответ дан 23 November 2019 в 02:28
поделиться

Попробуйте нажать ALT-? (alt и вопросительный знак одновременно). Дайте ему секунду или две, чтобы составить список. Это должно работать в bash.

2
ответ дан 23 November 2019 в 02:28
поделиться

Вот решение, которое дает вам список всех исполняемых файлов и псевдонимов. Он также переносится в системы без xargs -d (например, Mac OS X) и правильно обрабатывает пути с пробелами в них.

#!/bin/bash
(echo -n $PATH | tr : '\0' | xargs -0 -n 1 ls; alias | sed 's/alias \([^=]*\)=.*/\1/') | sort -u | grep "$@"

Использование: myscript.sh [grep-options] pattern , например, чтобы найти все команды, которые начинаются с ls , без учета регистра, do:

myscript -i ^ls
2
ответ дан 23 November 2019 в 02:28
поделиться

Try this script:

#!/bin/bash
echo $PATH  | tr : '\n' | 
while read e; do 
    for i in $e/*; do
        if [[ -x "$i" && -f "$i" ]]; then     
            echo $i
        fi
    done
done
5
ответ дан 23 November 2019 в 02:28
поделиться

Используйте which searchstr. Возвращает либо путь к двоичному файлу, либо установку псевдонима, если это псевдоним

Edit: Если вы ищете список псевдонимов, вы можете использовать:

alias -p | cut -d= -f1 | cut -d' ' -f2

Добавьте его к любому ответу поиска по PATH, который вам нравится. Предполагается, что вы используете bash ..

6
ответ дан 23 November 2019 в 02:28
поделиться

Есть команда

type -a mycommand

, которая перечисляет все псевдонимы и команды в $ PATH, где используется mycommand . Может использоваться для проверки существования команды в нескольких вариантах. Помимо этого ... Возможно, существует какой-то сценарий, который анализирует $ PATH и все псевдонимы, но не знает ни одного такого сценария.

25
ответ дан 23 November 2019 в 02:28
поделиться

Добавить в .bashrc

function ListAllCommands
{
    echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \
        -executable -type f -printf '%P\n' | sort -u
}

Если вам также нужны псевдонимы, то:

function ListAllCommands
{
    COMMANDS=`echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \
        -executable -type f -printf '%P\n'`
    ALIASES=`alias | cut -d '=' -f 1`
    echo "$COMMANDS"$'\n'"$ALIASES" | sort -u
}
39
ответ дан 23 November 2019 в 02:28
поделиться
Другие вопросы по тегам:

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