Создайте текстовый файл и заполните его, используя bash - PullRequest
55 голосов
/ 12 января 2011

Мне нужно создать текстовый файл (если он еще не существует) и записать новую строку в файл, используя bash.

Я уверен, что это просто, но кто-нибудь может мне это объяснить?

Ответы [ 5 ]

71 голосов
/ 12 января 2011

Создание текстового файла в Unix может быть сделано через текстовый редактор (vim, emacs, gedit и т. Д.).Но то, что вы хотите, может быть что-то вроде этого

echo "insert text here" > myfile.txt

Это поместит текст «вставить текст сюда» в файл myfile.txt.Чтобы убедиться, что это сработало, используйте команду 'cat'.

cat myfile.txt

Если вы хотите добавить файл, используйте эту

echo "append this text" >> myfile.txt
26 голосов
/ 12 января 2011

Если вы хотите использовать это как скрипт, следующий скрипт Bash должен делать то, что вы хотите (плюс сообщит вам, когда файл уже существует):

#!/bin/bash
if [ -e $1 ]; then
  echo "File $1 already exists!"
else
  echo >> $1
fi

Если вы не хотите, чтобы сообщение «уже существовало», вы можете использовать:

#!/bin/bash
if [ ! -e $1 ]; then
  echo >> $1
fi

Редактировать об использовании:

Сохраните любую версию с именем, которое вам нравится, скажем, "create_file" (цитирует мое, вы не хотите, чтобы они были в имени файла) Затем, чтобы сделать файл исполняемым, в командной строке выполните:

chmod u+x create_file

Поместите файл в каталог по вашему пути , затем используйте его с:

create_file NAME_OF_NEW_FILE

$ 1 - это специальная переменная оболочки, которая принимает первый аргумент в командной строке после имени программы; т. е. $ 1 подхватит NAME_OF_NEW_FILE в приведенном выше примере использования.

14 голосов
/ 12 января 2011

Предполагая, что вы имеете в виду команды оболочки UNIX, просто запустите

echo >> file.txt

echo, чтобы распечатать новую строку, а >> говорит оболочке добавить эту новую строку в файл, создавая, если он этого не делаетуже существует.

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

echo > file.txt

РЕДАКТИРОВАТЬ: и в ответ на комментарий Джастина, если вы хотите добавить только новую строкуесли файл еще не существует, вы можете сделать

test -e file.txt || echo > file.txt

По крайней мере, это работает в Bash, я не уверен, что это также работает в других оболочках.

2 голосов
/ 28 ноября 2018
#!/bin/bash
file_location=/home/test/$1.json
if [ -e $policy ]; then
  echo "File $1.json already exists!"
else
  cat > $file_location <<EOF
{
      "contact": {
          "name": "xyz",
          "phonenumber":   "xxx-xxx-xxxx"
      }
    }
EOF
fi

Этот код проверяет, присутствует ли данный JSON-файл пользователя в домашнем каталоге теста или нет. Если его нет, он создаст его с контентом. Вы можете изменить местоположение и содержимое файла в соответствии с вашими потребностями.

2 голосов
/ 12 января 2011

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

echo >> name_of_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...