Делая свой первый bash-скрипт, не могу получить команду cd 'stick'. [дублировать]

На этот вопрос уже есть ответ:

Для моего первого bash-скрипта я хочу создать то, что меня действительно раздражает: когда я переключаю папки, я хочу, чтобы содержимое этой папки автоматически отключалось. Я попытался добавить этот следующий код в ~/.bashrc:

alias go='cd; ls'

Достаточно просто, я подумал! Это не так. Хотя при вводе go /etc действительно перечисляется содержимое /etc, мой рабочий каталог фактически не изменился, я все еще нахожусь в том, в каком я был раньше. Как это исправить?

11
задан 11 August 2014 в 23:07

2 ответа

В Вашем примере, go /etc сделаю cd; ls /etc. Это означает, во-первых, cd изменит текущий каталог на Ваш корневой каталог. Затем ls /etc отобразит содержание /etc.

Вы могли достигнуть того, что Вы хотите путем определения функции, как так:

function go() {
    cd "$1" && ls
}

Или просто введите его в командной строке на одной строке:

function go() { cd "$1" && ls; }

Затем go /etc сделает то, что Вы хотите.

$1 относится к первому параметру, переданному команде в этом примере /etc. Можно обратиться к последующим параметрам с $2, $3 и так далее.

29
ответ дан 11 August 2014 в 23:07

Можно хотеть объединить это со встроенной стопкой каталога удара (директора). это даст Вам возможность ввести: go ..., для просмотра предыдущей папки (папок) в стеке, скорее тогда вводят их имя. например:

function go() { 
 if [ "$1" == "..." ]; then popd >/dev/null ; else pushd "$1" >/dev/null ; fi
 ls $@
}

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

Вы заметите ls $@, что означает, что все остающиеся параметры будут переданы ls. поэтому, если Вы захотите пойти и иметь долго список, или обратное время, перечисляя, использует: go /var -l или go /etc -ltr

0
ответ дан 11 August 2014 в 23:07

Другие вопросы по тегам:

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