Правильная команда:
echo "$(wc -l < file.txt) items in File"
Обратите внимание на кавычки, например, выполнив:
$('du / -h | sort -h')
Вы говорите оболочке «эй, выполните 'du / -h | sort -h'», и bash ответит , "о нет, я не знаю, что такое 'du / -h | sort -h'". Я не уверен на 100%, но думаю, что когда вы цитируете что-то, вы избегаете специальных символов, таких как '|'.
Решение для приведенного выше примера - удалить кавычки.
$(du / -h | sort -h)
Вывод вашей команды уже говорит о том, что происходит:
zsh: command not found: cat file.txt | wc -l
Если я правильно понял, вы хотите, чтобы ваш каталог test
располагался в том же месте, что и сценарий.
Вы можете получить местоположение сценария (независимо от вашего текущего каталога, когда вы его запускали) следующим образом:
MYPATH=`dirname \`readlink -e "$0"\``
Затем вы можете сделать, например,
cd "$MYPATH/test"
Пояснение:
$ 0
- это имя (включая путь) скрипта.
readlink -e / foo / bar
дает вам абсолютное местоположение / foo / bar (разрешая также любые символические ссылки).
dirname
обрезает часть файла и оставляет вам только путь