Всякий раз, когда я захожу в каталог, я спонтанно делаю следующее — вывожу список содержимого этого каталога с помощью команды ls.

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

Было бы лучше, если бы мы объединили функциональность cd и ls в одной команде, не так ли?

В этом кратком руководстве объясняется, как автоматически перечислять содержимое каталога при каждом переходе в него на Linux с помощью одной команды.

Bash Советы: как выполнить CD и LS в одной команде

Обратите внимание, что я не говорю об однострочных командах.

Например, вы можете выполнить cd и ls с помощью однострочной команды, как показано ниже.

$ cd dir && ls

Да, это работает!

Но это не является предметом данного руководства.

Мы сделаем это с помощью простой функции BASH.

Этот прием будет работать во всех Unix-подобных дистрибутивах, которые поддерживают BASH.

Откройте файл ~/.bashrc в вашем любимом редакторе:

$ nano ~/.bashrc

Добавьте следующие строки в конце:

cdls() {
        local dir="$1"
        local dir="${dir:=$HOME}"
        if [[ -d "$dir" ]]; then
                cd "$dir" >/dev/null; ls --color=auto
        else
                echo "bash: cdls: $dir: Directory not found"
        fi
}

Здесь я использовал имя для функции cdls() для удобства запоминания!

Вы можете назвать эту функцию, как вам угодно.

Также замените параметр ls –color = auto.

Сохраните и закройте файл.

Выполните следующую команду, чтобы изменения вступили в силу.

$ source ~/.bashrc
Теперь перечисляйте содержимое каталога автоматически всякий раз, когда вы переходите в него, как показано ниже.

Пример

$ cdls /var/log/
alternatives.log  btmp                   dpkg.log   kern.log   syslog               wtmp
apt               cloud-init.log         faillog    landscape  syslog.1
auth.log          cloud-init-output.log  installer  lastlog    tallylog
bootstrap.log     dist-upgrade           journal    lxd        unattended-upgrades
sk@ubuntuserver:/var/log$ pwd
/var/log

Вы также можете добавить следующую намного более простую функцию в ваш файл ~/.bashrc.

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

Выполните source ~/.bashrc, чтобы изменения вступили в силу.

Не используйте обе функции одновременно с одним и тем же именем.

Либо используйте одну функцию, либо используйте разные имена (например, cdls и cl) для каждой функции.

Прежде чем я узнал этот трюк, я обычно делал так:

$ cd /var/log/

а потом;

$ ls

или же:

$ cd /var/log/ && ls

Уже нет! Теперь я могу перечислить любое содержимое каталога, когда я перехожу в него.

Это удобно, когда вы часто работаете с большим количеством каталогов.

Недостатком этого трюка является то, что вам придется ждать несколько секунд или минут, когда вы попадаете в каталог, содержащий сотни и тысячи файлов.

В таких случаях используйте обычную команду cd.

 

Поделитесь статьей:

Добавить комментарий