Для этого и созданы функции:
print_if_not_regular() {
[ -f "$1" ] || printf '%s\n' "$1"
}
print_if_not_regular /root/.bash_aliases
Некоторые оболочки, такие как es
или zsh
, имеют анонимные функции:
(){[ -f "$1" ] || printf '%s\n' $1} /root/.bash_aliases # zsh
@ {[ -f $1 ] || printf '%s\n' $1} /root/.bash_aliases # es
Я бы не стал использовать $_
. Это больше не работает, например, если у вас есть ловушка DEBUG.
$ bash -c 'trap ": \"\$((cmdcount+=1))\"" DEBUG; echo foo; echo "$_"'
foo
2
Обратите внимание, что !:n
— это не n й аргумент последней команды, а n й лексический токен предыдущей командной строки (последней строки (возможно, даже многострочный )сохраняется в истории ). Например, в
echo $(echo A B)
echo foo; echo !:1
Что !:1
не расширяется доfoo
(последнего аргумента последней команды )иB
(последнего аргумента echo
из команды echo
предыдущей командной строки ). ], но $(echo A B)
. Здесь вам нужно будет ввести:
[ -f /root/.bash_aliases ] ||
echo !:2
То есть введите его на отдельных строках. Здесь,случается, что (он работает случайно ), даже если строка истории не полностью завершена к тому времени, когда вы вводите вторую строку. Тот же трюк не работает ни в (t)csh
(, где расширения истории происходят из ), ни zsh
.
Они есть в man-pages
, так что, возможно, они у вас уже есть.
$ dnf -C provides '*/cgroups.7.gz'
man-pages-5.04-4.fc32.noarch : Linux kernel and C library user-space interface documentation
Repo : updates
Matched from:
Filename : /usr/share/man/man7/cgroups.7.gz