Поместите это объявление функции оболочки в ваши скрипты инициализации оболочки:
function duls {
paste <( du -hs -- "$@" | cut -f1 ) <( ls -ld -- "$@" )
}
Я назвал его duls
, потому что он показывает выходные данные как du
, так и ls
(в таком порядке):
$ duls
210M drwxr-xr-x 21 kk staff 714 Jun 15 09:32 .
$ duls *
36K -rw-r--r-- 1 kk staff 35147 Jun 9 16:03 COPYING
8.0K -rw-r--r-- 1 kk staff 6962 Jun 9 16:03 INSTALL
28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile
4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am
24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in
4.0K -rw-r--r-- 1 kk staff 1689 Jun 9 16:03 README
120K -rw-r--r-- 1 kk staff 121585 Jun 10 13:26 aclocal.m4
684K drwxr-xr-x 7 kk staff 238 Jun 10 13:26 autom4te.cache
128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build
60K -rw-r--r-- 1 kk staff 60083 Jun 10 13:26 config.log
36K -rwxr-xr-x 1 kk staff 34716 Jun 10 13:26 config.status
264K -rwxr-xr-x 1 kk staff 266637 Jun 10 13:26 configure
8.0K -rw-r--r-- 1 kk staff 4280 Jun 10 13:25 configure.ac
7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc
2.3M drwxr-xr-x 28 kk staff 952 Jun 10 13:26 examples
6.2M -rw-r--r-- 1 kk staff 6505797 Jun 15 09:32 mrbayes-3.2.7-dev.tar.gz
11M drwxr-xr-x 42 kk staff 1428 Jun 10 13:26 src
$ duls doc
7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc
$ duls [bM]*
28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile
4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am
24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in
128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build
Пояснение:
Утилита paste
создает столбцы из своего ввода в соответствии с заданной вами спецификацией. Имея два входных файла, он помещает их рядом с вкладкой в качестве разделителя.
Мы даем ему вывод du -hs -- "$@" | cut -f1
в качестве первого файла (действительно входной поток) и вывод ls -ld -- "$@"
в качестве второго файла.
В функции "$@"
будет вычислять список всех аргументов командной строки, каждый в двойных кавычках. Таким образом, он будет понимать символы и пути с пробелами и т. Д.
Двойные минусы (--
) сигнализируют об окончании опций командной строки для du
и ls
. Без них выражение duls -l
будет путать du
, а любой параметр для du
, которого нет у ls
, спутал бы ls
(и опции, существующие в обеих утилитах, могут не означать одно и то же, и это было бы довольно беспорядок).
cut
после du
просто вырезает первый столбец вывода du -hs
(размеры).
Я решил поместить вывод du
слева, иначе мне пришлось бы управлять шатким правым столбцом (из-за разной длины имен файлов).
Команда не будет принимать флаги командной строки.
Это было проверено как в bash
, так и в ksh93
. Это не будет работать с /bin/sh
.