На этот вопрос уже есть ответ:
Для моего первого bash-скрипта я хочу создать то, что меня действительно раздражает: когда я переключаю папки, я хочу, чтобы содержимое этой папки автоматически отключалось. Я попытался добавить этот следующий код в ~/.bashrc:
alias go='cd; ls'
Достаточно просто, я подумал! Это не так. Хотя при вводе go /etc
действительно перечисляется содержимое /etc, мой рабочий каталог фактически не изменился, я все еще нахожусь в том, в каком я был раньше. Как это исправить?
В Вашем примере, 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
и так далее.
Можно хотеть объединить это со встроенной стопкой каталога удара (директора). это даст Вам возможность ввести: 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