Чому я не можу видалити файл зі сценарієм Bash?


1

Я не можу бігти rm з сценарію Bash і видалити файл.

#!/bin/bash
rm -rf myjunk.out
exit 0;

не видаляється myjunk.out.


1
Позбутися від exit 0 і перевірте наявність повідомлень про помилки.
ChrisF

І це працює, коли ви просто виконуєте rm -rf myjunk.out з командного рядка? Що викликає виконання цього сценарію?
BloodPhilia

2
Тільки для запису, -r призначений для спуску по каталогах (Recursive), тому, якщо ви збираєтеся видалити файл, -r є марним. Яку помилку ви отримуєте? Як запускати цей сценарій? Які дозволи на цей сценарій?
Torian

@BloodPhilla спрацьовує тому, що myjunk.out генерується раніше в сценарії ....
CamelBlues

Відповіді:


4

Спочатку переконайтеся, що ви можете видалити myjunk.out без запуску сценарію; якщо ні, перевірте атрибут файлу з lsattr.

По-друге, Вам не потрібно надавати exit 0;

Пізніше вкажіть шлях до myjunk.out , як от:

rm -rf /path/to/myjunk.out

Також видаліть -r прапор. це непотрібно і небезпечно.
Keith

Фактично, виймаючи вихід 0; дозволив rm installed.out виконати належним чином. Дякую!
CamelBlues

Що таке пояснення: Чому "вихід 0" зробить rm непрацездатним
Emmanuel Devaux

0

The -f опція припиняє повідомлення про помилки. Сторінка людини говорить:

Спроба видалити файли без запиту на підтвердження, незалежно від файлу                    дозволи. Якщо файл не існує, не показувати діагностичне повідомлення або змінювати його                    статус виходу для відображення помилки. The -f опція перекриває будь-яку попередню -i опції.

Я підкреслив, що ця частина є актуальною; щоб отримати корисні попередження, слід видалити прапорці з вашої опції rm команда:

rm myjunk.out

Це більше коментар, ніж відповідь.
Chenmunka
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.