Вот что я считаю полезным (в Debian 9):
c() {
cd "${@}" \
&& ls --color=always -C \
| sed '
# on line 5, print the line,
5 {
# append an ellipsis
a[...]
# and quit
q
}
# print lines 1-4 verbatim
'
}
Это дает мне усеченный вывод с многоточием на случай, если в этом каталоге слишком много элементов, чтобы консоль оставалась чистой:
$ c data/git/buildroot/package/
4th lua-markdown
a10disp lua-messagepack
acl lua-msgpack-native
acpica luaossl
acpid lua-periphery
[...]
$ ls -1 | wc --lines
1977
Синтаксис для двух стандартных тестов с &&
в -между ними:
[ expression_1 ] && [ expression_2 ]
или, используя устаревшую -a
опцию(не делайте этого ),
[ expression_1 -a expression_2 ]
В вашем случае, например,
if [ -f "$DBBACKUP.prev" ] &&
[ ! -f "$ERRFILE" ]
then
mv "$DBBACKUP" "$DBBACKUP.prev"
fi
С bash
вы можете использовать &&
так же, как и раньше, но только с нестандартным -тестом [[... ]]
:
[[ expression_1 && expression_2 ]]
, что также можно записать как
[[ expression_1 ]] && [[ expression_2 ]]
За исключением специального [[... ]]
, &&
является оператором оболочки, который разделяет две команды , при этом вторая выполняется только в случае успеха первой. Итак, по команде:
[ expression_1 && expression_2 ]
Оболочка запускается первой [ expression_1
, в которой отсутствует конечный ]
, отсюда и ошибка.
См. также:
test
и [
.man test
и/или man [
дает вам руководство для внешних команд test
и [
. В большинстве оболочек эти команды встроены -, но семантика должна быть одинаковой, хотя некоторые конкретные тестовые операторы могут отличаться (могут быть реализованы не -стандартные операторы ). help [
, help test
и help [[
в оболочке bash
показывают краткое описание этих встроенных -команд в оболочке bash
. Дополнительную информацию о встроенных -модулях bash
оболочки см. в руководстве bash
(man bash
).