[Советы по Bash] Как выполнить cd и ls одной командой
Всякий раз, когда я перехожу
в каталог, следующее, что я делаю, самопроизвольно сделать — просмотреть содержимое этого каталога с помощью команды ls
. Я не знаю, все ли из вас так делают, но думаю, у некоторых из вас может быть такая привычка. Было бы лучше, если бы мы объединили функциональность cd и ls в одной команде, не так ли? В этом кратком руководстве объясняется, как автоматически отображать содержимое каталога при каждом переходе в него в Linux.
Как cd и ls одной командой в Bash
Обратите внимание, что я не говорю об однострочных командах. Например, вы можете выполнить cd и ls с помощью однострочной команды, как показано ниже.
cd path-to-dir && ls
Или,
cd path-to-dir ; ls
Да, это работает! Но это не входит в задачу данного руководства. Мы сделаем это с помощью простой функции BASH. Этот трюк будет работать во всех Linux и 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
}
Функция BASH для использования cd и ls в одной команде
Здесь я использовал имя функции как 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
cd и ls в одной команде в Bash
Вы также можете добавить следующую гораздо более простую функцию в свой файл ~/.bashrc
.
cdls() {
cd "$@" && ls;
}
Создайте файл ~/.bashrc
, чтобы изменения вступили в силу. Также не используйте обе функции одновременно с одним и тем же именем. Либо используйте одну функцию, либо используйте разные имена (например, cdls
и cl
) для каждой функции.
До того, как я узнал об этом трюке, я обычно делал:
cd /var/log/
А потом;
ls
Или,
cd /var/log/ && ls
Уже нет! Теперь я могу получить список любого содержимого каталога, когда захожу в него. Это удобно, когда вы часто работаете с большим количеством каталогов.
Одним из недостатков этого трюка является то, что вам придется ждать от нескольких секунд до нескольких минут, прежде чем перейти в каталог, содержащий сотни и тысячи файлов. В таких случаях используйте обычную команду cd
.
Рекомендуем прочитать:
- Переименование файлов без двойного ввода полного имени в Linux
- Советы по Bash: как выполнить cp или mv и cd одной командой
- Различные способы отображения содержимого каталога без использования команды ls
- Функция Bash для извлечения файловых архивов различных типов