Команда ls без (скрытия) даты и времени

Это из-за вывода wc -l / filename , это будет вывод, например:

5 /filename

, но вы выполняете целочисленное сравнение (оператор: -ge ), следовательно, посторонняя часть / filename недопустима, что приводит к сообщению об ошибке.

Просто передайте имя файла в wc через STDIN, чтобы wc просто возвращал счетчик:

[[ $(wc -l </disk1/environment.sh) -ge 0 ]]

Во втором случае [[$ (wc -l / disk1 / environment.sh)> 0]] , вы просто проверяете, сортируется ли вывод подстановки команды, $ (wc -l /disk1/environment.sh) после 0 , лексикографически; что всегда будет иметь место, если wc не вернет некоторую ошибку и ничего не выдаст на STDOUT.

Обратите внимание: [ не поддерживает арифметические операторы, такие как > , > = , <, < = , вам понадобится ключевое слово (( для них:

(( $(wc -l </disk1/environment.sh) > 0 ))
1
10.02.2017, 22:34
1 ответ

Предполагая, что ваш /bin/ls из относительно свежей версии coreutils, вы можете использовать опцию --time-style, чтобы указать пустой стиль. Например:

ls -Alhr --time-style=+""

Вы получите тот же вывод san даты и времени.

7
27.01.2020, 23:34

Теги

Похожие вопросы