Я использую macOS Sierra и пытаюсь написать сценарий оболочки, который позволит мне использовать одну команду для cd и ls одновременно. Я ухожу из этой темы, но мне не повезло адаптировать его к моему сценарию.

Каталог: /usr/local/bin/

Имя файла: cdls

Код:

#!/bin/bash
cdls() { builtin cd "$@" && ls; }

Я никогда не писал сценарий оболочки, кроме простого echo hello world файла приветствия , поэтому, если бы вы указали мне правильное направление, это было бы здорово. Благодарю.

EDIT: /usr/local/bin в моей PATH

2 ответа2

2

Пример, который вы получили из этого thead, относится к созданию функции bash, которую вы поместите в свой .profile . Если вы хотите создать скрипт вместо добавления функции в свой профиль, ваш скрипт должен выглядеть следующим образом.

#!/bin/bash
builtin cd "$@" && ls
1

Я бы сделал это, набрав в терминале следующее:

. cdls /usr/local/bin/

Где cdls - это скрипт bash, хранящийся в моем $PATH:

#!/bin/bash
cd $1
ls

. в исходных текстах команды терминала вместо использования подоболочки.

$1 в скрипте bash принимает в качестве аргумента usr/local/bin/ (определенный в командной строке).

Вы можете заменить $1 на любой другой каталог в скрипте, если вы всегда хотите cdls в определенный каталог.

Что касается другого вопроса, на который вы ссылались. Верхний ответ рекомендует это:

cdls() { cd "$@" && ls; }

которая является функцией и должна быть вставлена в ваш файл .bash_profile (для macOS) или .bashrc (для Linux), а не использоваться в скрипте bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .