Что такое $ () в команде?

Вы можете получать часть той информации от УМНОГО входа в систему диск (smartctl -x /dev/sda).

Иначе это что badblock команда делает. Это может также использоваться для сообщения, какие блоки мертвы (в случае, если, перераспределяя сбои) для питания e2fsck (если extx FS находится на том диске, но некоторые другие FSes имеют подобную функцию), и укажите, что те секторы не должны использоваться. Или e2fsck может назвать badblocks непосредственно.

В любом случае это поместит деформацию на диск и может заставить это перестать работать дальше.

Я посмотрел бы на состояние SMART (smartctl -x /dev/sda) видеть, что формирует его, находится в первом (сколько ожидание, сбой, перераспределило секторы, ошибки... и полное состояние SMART), как будто это находится на грани сбоя в целом, лучшая вещь сделать скопировать данные на новый диск (см. различные реализации ddrescue для этого).

18
31.07.2014, 02:38
3 ответа

Это очень похоже на обратные кавычки ".

Это называется подстановкой команд ( спецификация posix ) и вызывает подоболочку. Команда в фигурных скобках $ () или между обратными кавычками (``) выполняется в подоболочке, а выходные данные помещаются в исходную команду.

В отличие от обратных кавычек, форма $ (...) может быть вложенной. Таким образом, вы можете использовать подстановку команд внутри другой подстановки.

Существуют также различия в экранировании символов внутри подстановки. Я предпочитаю форму $ (...) .

21
27.01.2020, 19:46

В POSIX или POSIX-подобных оболочках (ksh, bash, ash, zsh, yash. ...), это как ``: команда внутри $() выполняется и заменяется на стандартный выходной сигнал. Разделение слов и генерация имени файла выполняются, если только $() не находится внутри двойных кавычек. Таким образом

chmod 777 $(pwd)

следует заменить на:

chmod 777 "$(pwd)"

во избежание разделения слов и генерации имени файла по текущему пути к рабочей директории.

Или даже лучше (за исключением некоторых оболочек, таких как zsh, в случае, если каталог был переименован):

chmod 777 "$PWD"

Так как $PWD - это специальная переменная, которая содержит путь к текущей рабочей директории в POSIX оболочках.

Или даже лучше:

chmod 777 .

С тех пор как . Запись в текущей директории является жесткой ссылкой на саму директорию.

5
27.01.2020, 19:46

Этот $ () используется для выполнения команды в основном внутри какой-либо другой команды. Команда

chmod 777 $(pwd)

pwd дает текущий рабочий каталог. Итак, когда все это будет выполнено, вывод pwd заменит его позицию и послужит аргументом для chmod , и в результате весь ваш текущий рабочий каталог получит разрешение 777 , которое Я думаю, никогда не следует использовать в производственной среде;).

2
27.01.2020, 19:46

Теги

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