Как удалить файл в Linux через терминал

Символьная ссылка или «символическая ссылка» — это файл Linux, который просто указывает на другой файл. Если указанный файл будет удален, символическая ссылка останется, но не покажет, что есть проблема, пока вы не попытаетесь ее использовать. Вот несколько простых способов найти и удалить символические ссылки, которые указывают на файлы, которые были перемещены или удалены.

Что такое Git Bash?

Git Bash – это приложение для сред Microsoft Windows, которое предоставляет эмуляцию bash, используемую для запуска Git из командной строки. Это не простой bash, скомпилированный для Windows, а пакет, содержащий Bash, SSH, SCP и некоторые другие утилиты Unix, скомпилированные для Windows. Он также содержит новое окно терминала интерфейса командной строки под названием minty. Эти утилиты связаны с этим пакетом Bash, чтобы создать полезный пакет программного обеспечения.

В Windows мы обычно запускаем команды в CMD, но на самом деле это исполняемые файлы, которые существуют в папке C: Windows System32. То же самое касается bash, для работы команд требуются утилиты. В системах Unix эти утилиты будут находиться в каталоге / usr / bin. Итак, после установки Git Bash эти утилиты будут установлены в папку C: Program Files Git usr bin.

Забытая история bash.

Если вы открыли терминал и печатаете там команды, потом открыли еще один, немного его поиспользовали, то новый терминал не «вспомнит» ни одной команды, напечатанной в первом. Вдобавок, при закрытии первого терминала второй перезапишет все команды в истории, введённые в первом. Вдвойне досадно!

Это происходит потому, что история bash сохраняется только когда вы закрываете терминал, а не после каждой команды. Чтобы исправить такое поведение, добавьте в ~/.bashrc строки:

shopt -s histappend PROMPT_COMMAND=`history -a`

Добавьте следующую строку, если переменная $PROMPT_COMMAND уже была задана :

PROMPT_COMMAND=‘$PROMPT_COMMAND; history -a’

Это заставит bash дополнять историю вместо того, чтобы перезаписывать её: каждый раз, когда показывается приглашение командной строки, последняя команда добавляется в историю.

Когда ломаются ссылки

Когда файл, на который указывает символическая ссылка, удаляется из системы или переименовывается, символическая ссылка больше не будет работать, как предполагалось. Символическая ссылка не будет обновляться или удаляться с изменениями в файле, на который она указывает. Она продолжит указывать на указанный файл, даже после того, как этот файл был давно удален.

Читайте также:  iPhone 5s на iOS 13: поддерживается или нет?

Если вы попытаетесь использовать символическую ссылку, которая указывает на несуществующий файл, вы получите ошибку, подобную этой:

$ tail file1 tail: cannot open ‘file1’ for reading: No such file or directory

Если вы попытаетесь получить доступ к символической ссылке, которая указывает на себя (бывает и так), вы увидите что-то вроде этого:

$ cat loops cat: loopy: Too many levels of symbolic links $ ls -l loops lrwxrwxrwx 1 shs shs 7 May 25 18:01 loops -> loops

Если первая буква в длинном списке не привлекла вашего внимания, это означает, что файл является символической ссылкой. Разрешения rwxrwxrwx являются стандартными и не отражают разрешения для файла, на который указывает символическая ссылка.

Просмотр файлов и папок в Linux

Проверяем свободное место на всём диске:

df -h

Узнаём какие файлы хранятся в директории

Список папок с занимаемыми размерами в корне сервера (сортировка директорий по алфавиту):

du -hs /*

Выводит список директорий и файлов построчно, сортируя их по возрастанию размера, а также показывает права доступа, размер файлов и дату изменения:

ls -lSr |more

Показывает размер и имена директорий и файлов (сортировка по размеру). В примере сортировка по размеру директории var.

du -sk /var/* | sort -rn

Ещё одна команда (показывает в мб) сортирует по размеру (в данном случае сортировка каталога с логами):

du -k /var/log/* | sort -nr | cut -f2 | xargs -d ‘\n’ du -sh

Синтаксис и опции команды rm

Команда «rm» имеет множество опций, что позволяет очень тонко управлять процессом удаления файлов. Вы можете изучить все доступные опции если введете в терминал Linux команду «man rm». Здесь же мы будем рассматривать самые простые и часто используемые опции.

Синтаксис команды «rm» выглядит следующим образом:

rm [опции] файлы

Разберем основные опции команды rm:

-f, —force Игнорировать несуществующие файлы и не требовать подтверждения перед удалением. -i Требовать подтверждения перед каждым удалением. -I Запрашивать подтверждение один раз перед удалением более трех файлов или при рекурсивном удалении. -r, -R, —recursive Рекурсивное удаление каталогов и их содержимого. -v, —verbose Вывод подробной информации о процессе. —help Вывод справочной информации о команде.

Теперь разберем некоторые опции, которые часто используются при удалении файлов в Linux через терминал. Например, очень часто возникает необходимость удалить папку вместе с всем содержимым. Для этого нужно использовать опцию «-r», которая включает рекурсивный обход папок. Например, для того чтобы удалить папку «folder1» и все ее содержимое нужно выполнить:

Читайте также:  Как найти и удалить битые символические ссылки в Linux

rm -r folder1/

Если права доступа к файлу разрешают только чтение, то в терминале Linux появится запрос подтверждения, и чтобы продолжить вам нужно будет ввести букву «y» (от англ. «yes»).

Чтобы избежать такой ситуации и удалять все файлы без предупреждения нужно использовать опцию «-f». Например:

rm -f

Не редко возникает необходимость удалить папку вместе со всеми файлами и без запросов на подтверждение. В этом случае нужно комбинировать опции «-r» и «-f». В результате команда выглядит вот так:

rm -rf folder1/

Если вы, наоборот, хотите каждый раз получать запрос подтверждения, то команду «rm» нужно выполнять с опцией «-i». Например, для того чтобы удалить все файлы в текущем каталоге с запросом подтверждения нужно выполнить:

rm -i *

Также бывает полезной опция «-v». При ее использовании в терминале будет появляться подробная информация о выполняемых действиях. Например, для того чтобы удалить все файлы в текущем каталоге и вывести информацию в терминал нужно выполнить:

rm -v *

Также вывод информации можно перенаправить в файл. Для этого после команды нужно использовать оператор перенаправления вывода (>) и указать название файла. Например:

rm -v * >

Естественно все эти опции можно комбинировать, в зависимости от ваших задач.

Пишем скрипт для планировщика задач Synology

Для написания скрипта будем использовать команду FIND, так как у неё очень гибкие возможности. Если есть желание более подробно с ней ознакомится, то не составит труда эту информацию найти через поисковик. 😎 Я для вас подготовил небольшую фичу для формирования скрипта (смотрите ниже). Пример скрипта планировщика Synology:

Скопировать

find /volume1//ИМЯ_ДИРЕКТОРИИ/ -mmin +10080 -delete

Верхний скрипт удаляет ☕ только файлы, а если вам необходимо удалить директории вместе с файлами старше N дней, то вам необходим скрипт ниже

find /volume1//ИМЯ_ДИРЕКТОРИИ/ -type d -mmin +10080 -exec rm -rf {} \;

Почему в минутах? Точно не знаю почему, но -mtime +7 никак не хотел работать. Выводилась ошибка:

find: `+7′: No such file or directory

Настройка расписания скрипта удаления старых файлов с NAS Synology

И так. Скрипт есть, осталось дело за малым — настройка планировщика задач. Заходим на NAS Synology и далее в раздел Панель управления 👉🏻 Планировщик задач 👉🏻 Создать 👉🏻 Запланированная задача 👉🏻 Скрипт, заданный пользователем Даём имя скрипту в основной вкладке, а затем вставляем сгенерированный ранее нами скрипт в поле Скрипт, заданный пользователем по вкладке Настройки задач. Теперь настраиваем расписание через вкладку Расписание (логично же 😂). Думаю там у вас вопросов не возникнет, а если вдруг, то пишите в комментарии!

Читайте также:  Как проверить ping и трассировку через командную строку

Панель управления NAS SynologyРасписание задачи

Если вы затрудняетесь на каком у вас разделе лежит та или иная папка общего доступа, то вы можете посмотреть тут: Панель управления 👉🏻 Папка общего доступа. Там под названием каждого каталога будет указано на каком разделе он находится!

Заключение

Вот и всё! Вы за 5 минут настроили скрипт удаления старых файлов с NAS сервера Synology по расписанию. Было просто.

$ — выражения переменных

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

Вы можете использовать, echo, чтобы увидеть значение, которое содержит переменная, — просто перед именем переменной следует знак доллара ($), как показано ниже:

echo $ USER

echo $ HOME

echo $ PATH

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

ThisDistro=Ubuntu

MyNumber=2001

echo $ThisDistro

echo $MyNumber

Добавьте фигурные скобки ({}) вокруг знака доллара и выполните расширение параметра, чтобы получить значение переменной и разрешить дальнейшие преобразования значения.

Это создает переменную, которая содержит строку символов, как показано ниже:

MyString = 123456qwerty

Используйте следующую команду для вывода строки в окно терминала:

echo $ {MyString}

Чтобы вернуть подстроку, начиная с позиции 6 всей строки, используйте следующую команду (смещение нуля, поэтому первая позиция равна нулю):

echo $ {myString: 6}

Если вы хотите отобразить подстроку, которая начинается с нулевой позиции и содержит следующие шесть символов, используйте следующую команду:

echo $ {myString: 0: 6}

Используйте следующую команду, чтобы отобразить подстроку, которая начинается с четвертой позиции и содержит следующие четыре символа:

echo $ {myString: 4: 4}