WC -C, дает мне один дополнительный счетчик символов

Была та же проблема: диск, который вот-вот умрет,
с разделом NTFS, который я хотел сначала спасти и исправить после
(до диск полностью ушел).

Удалось решить эту проблему с помощью ntfsclone :

  1. Подключите два диска - старый и новый
  2. Загрузите Live-Linux с USB
    (можно использовать Parted Magic для этого тоже)
  3. Создайте достаточно большой раздел на новом диске
    (для этого используйте gparted )
  4. Обратите внимание на имя разделов, как они названы в gparted
    ( / dev / sdaX , / dev / sdbX )
  5. Откройте окно терминала и запустите следующая команда:
    ntfsclone --force --ignore-fs-check --rescue --overwrite NEW-part OLD-part
    (замените NEW-part и OLD-part с именами из шага '4.' - / dev / sd ... )
    ntfsclone будет жаловаться на то, что вы не замечаете несоответствий
    , но следует продолжить с копией раздела

- когда закончите -

  1. Выключите компьютер
  2. Отсоедините неисправный диск
    (вы хотите использовать его как можно меньше , сейчас)
  3. Загрузите компьютер ain - либо в Windows, либо в Linux,
    и попробуйте исправить раздел на новом диске

РЕДАКТИРОВАТЬ:

- ПРИМЕЧАНИЕ -
Неисправный (нестабильный) блок питания может привести к сбою контроллеров дисков,
, и вероятность их выхода из строя гораздо выше, чем у дисков, поэтому лучше проверить и это.
Вы можете столкнуться с поведением, что все работает нормально в течение нескольких минут
(или секунд), а затем система начинает сходить с ума, как только она нагревается, буквально .

(установка блока питания, конечно, не восстановит потерянные данные, но предотвратит их потерю)

2
07.09.2018, 13:00
2 ответа

Even if I leave it blank, it still somehow counts one character [.. .] Could somebody please help me identify this problem?

Попробуйте printfвместоecho

$ echo "" | wc -m
1
$ printf "" | wc -m
0

При использовании echo, wcбудет учитываться символ новой строки.

Или, что лучше, использовать чистый Bash без конвейера вwc:

$ string=foobar
$ echo "${#string}"
6
9
27.01.2020, 21:52

Я бы также предпочел метод "расширения параметров" оболочки; но если вы используете wc, вы также можете использовать его опцию подсчета слов:

read LENGTH WORDS REST <<<$(echo -n ${USERNAME} | wc -cw)
echo $LENGTH $WORDS 
2 8

Вы можете убедиться, что используются только символы ASCII. -Никаких многобайтовых международных символов.

Если вы пойдете по пути bashinternals, проверка пробелов может быть

[ "$USERNAME" = "${USERNAME%% *}" ] && echo No spaces || echo some spaces
1
27.01.2020, 21:52

Теги

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