Можно ли определить команду в bash?

Например, могу ли я установить:

gb = cd /media/Dan/evolution

... так что каждый раз, когда я выполняю gb в bash, я могу cd в эту конкретную директорию?

Я нашел что-то онлайн: команду alias. Но, похоже, он не может выполнить эту работу выше.

Можно ли это сделать? Как?

25 голосов | спросил Zen 15 J000000Tuesday14 2014, 18:55:45

4 ответа


50

просто введите:

alias gb='cd /media/Dan/evolution'

Чтобы сделать этот параметр постоянным (чтобы он застрял после перезапуска или открытия другой консоли), добавьте эту строку в файл ~ /.bashrc (при условии, что вы используете bash в качестве оболочки по умолчанию)

ответил schrobe 15 J000000Tuesday14 2014, 19:01:48
38

Альтернатива псевдониму

gb() { cd /media/Dan/evolution; }

Это определяет функцию оболочки gb, которая не принимает аргументов и выполняет cd /media /Dan /evolution. Как и в случае с другими предположениями, это можно добавить к ~ /.bashrc

ответил user1207217 15 J000000Tuesday14 2014, 21:30:55
11

Возможно, и alias - это команда, которую вы ищете. Например, alias ll="ls -l" в bash позволит вам ввести ll вместо ls -l. Обратите внимание, что при настройке псевдонима нет пробелов. man alias также может быть полезен.

ответил schaiba 15 J000000Tuesday14 2014, 19:00:12
-3

В качестве альтернативы можно написать программу на C, которая вызывает нужную команду и сохраняет ее в /usr /bin.

 #include <stdio.h>
#include <string.h>

int main () {
    char command[50]; //notice you can change this to fit your needs
    int return_val;

    strcpy( command, "echo \"cd /media/Dan/evolution\" | bash -i" );
    return_val = system(command); 

   //this is equivalent to entering the command in a new bash, 
   //which will return and exit

    return return_val;
}

Чтобы скомпилировать его, перейдите в каталог, в котором источник был сохранен (в bash) и выполнен (вам может понадобиться sudo):

 gcc ./gb.c -o /usr/bin/gb

После дальнейших исследований здесь я понял, что просто бросаю команда в system() не будет работать для встроенных команд bash. Вот почему вам нужно создать экземпляр интерактивного bash и повторить его команды. Это слишком сложно и, вероятно, бесполезно, если вы не хотите, скажем, сократить вызов сценария оболочки (some_script вместо sh ~/radgeRayden/Scripts/some_script)

Справка для функции system ()

ответил radgeRayden 17 J000000Thursday14 2014, 00:04:09

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132