Как очистить файл в fish?

В сценариях оболочки bash я обычно запускал :> file для очистки файла.

Теперь, используя рыбу, все немного по-другому, и приведенная выше команда не работает.

Что такое рыбный эквивалент?


person Olivier Refalo    schedule 30.10.2013    source источник
comment
Я поставил вам +1, потому что впервые слышу о рыбе.   -  person Burhan Khalid    schedule 30.10.2013
comment
;-) это действительно хорошая оболочка Unix - вы должны попробовать   -  person Olivier Refalo    schedule 30.10.2013
comment
в рыбе 3 :>file работает хорошо.   -  person kyb    schedule 26.02.2019


Ответы (3)


Несмотря на то, что она не такая короткая, как :, true — это команда, которая будет работать везде и ничего не выводит:

true > file
person nandhp    schedule 30.10.2013
comment
Это должен быть лучший ответ! - person geckos; 19.07.2018

Вероятно, самый простой способ, который будет работать как в Fish, так и в Bash, - это сделать echo "" > file

РЕДАКТИРОВАТЬ: Комментатор был абсолютно прав echo "" > file создает файл с новой строкой, правильная команда, о которой я думал для создания пустого файла, - cat /dev/null > file.

person Paul Hamilton    schedule 30.10.2013
comment
Это фактически создаст файл с символом новой строки. - person nandhp; 30.10.2013
comment
echo -n > file будет избегать новой строки. Это более эффективно, чем cat, поскольку не требует вызова каких-либо внешних команд. - person ridiculous_fish; 30.10.2013
comment
мне как бы истинный › файл больше нравится - person Olivier Refalo; 30.10.2013
comment
в bash я просто пишу >file - person kyb; 26.02.2019

Существует и всегда был волшебный метод под названием touch, который устанавливал фактическое время изменения или создавал несуществующий файл. Для совместимости я предлагаю вам использовать этот способ во всех сценариях, которые вы пишете (даже если вы пишете код bash).

person Hauleth    schedule 30.10.2013
comment
Это не будет обрезать существующий файл. - person nandhp; 30.10.2013
comment
Ага. Но я думаю, что вы хотите создать пустой файл. Если вы хотите установить пустой файл, вам следует использовать ответ @Paul Hamilton с флагом -n или rm file; and touch file. - person Hauleth; 30.10.2013