Мне нужно проверить, есть ли файл в системе, если он есть, мне нужно добавить в него строку. Я должен сделать это в сценарии, поэтому я хочу, чтобы это было сделано без перерывов. Лучший способ, которым я могу думать, является следующим:

sudo rm -rf /etc/apt/sources.list.d/docker.list
sudo touch /etc/apt/sources.list.d/docker.list
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee -a /etc/apt/sources.list.d/docker.list

Мне интересно, если есть, возможно, более элегантный способ сделать это. Я знаю, что все вышеперечисленное работает, но просто хотел узнать, чтобы расширить мои знания о командной строке Linux.

1 ответ1

2

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

В любом случае, мой подход заключается в использовании операторов перенаправления. Это или > или >> так:

Чтобы перезаписать (или написать новый файл, если файл отсутствует):

echo "string for file" > "/path/to/file"

Чтобы добавить в файл (также создаст новый файл, если он отсутствует):

echo "string to append to file" >> "/path/to/file"

Если вы хотите проверить наличие файла в системе, вы можете использовать:

locate "filename"

или в сценарии вы можете сделать:

#!/bin/sh
if [ -f "/path/to/filename" ]
then
    echo "found filename"
else
    echo "filename is missing"
fi

Я предлагаю вам проверить man [ и man sh (или man bash) для большего количества примеров.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .