Створіть, запишіть та збережіть файл із сценарію Shell


10

Я не хочу писати файл вручну, тому я зробив сценарій оболонки. Чи є спосіб написати і зберегти файл автоматично, не змушуючи користувача натискати клавіші?

sudo nano blah
#write stuff to file
#save file
#continue

^ Це буде у файлі * .sh

Або є інший спосіб створити простий текстовий файл у сценарії?


1
Я підозрюю, що ви задаєте неправильне запитання тут. Є набагато простіші способи записати у файл програмно, ніж намагатися керувати таким редактором, як nano. Скажіть нам, що ви хочете зробити з файлом.
Уоррен Хілл

Я просто хочу його створити і написати купу рядків.
Zarkopafilis

Ви запитуєте рішення, як-от Autoit для Windows, яке може автоматизувати програми графічного інтерфейсу серед іншого, або як написати, наприклад, текстовий скрипт оболонки $echo "Some text" > afile.txt?
Стеф К

@Zarkopafilis - я відредагував ваше запитання, щоб зрозуміти, що ви маєте на увазі. Якщо я вас зрозумів неправильно, ви завжди можете повернути його назад. Я також опублікував відповідь для вас.
Warren Hill

Відповіді:


14

Для більш складних послідовностей команд слід розглянути можливість використання catкоманди тут . Основний формат -

command > file << END_TEXT
some text here
more text here
END_TEXT

Існує дві тонко різні поведінки залежно від того, належить чи цитується ярлик END_TEXT:

  1. котировка без котирування : вміст записується після звичайного розширення оболонки

  2. цитується мітка : вміст документа тут обробляється буквально, без звичних розширень оболонок

Наприклад, розглянемо наступний сценарій

#!/bin/bash

var1="VALUE 1"
var2="VALUE 2"

cat > file1 << EOF1
do some commands on "$var1" 
and/or "$var2"
EOF1

cat > file2 << "EOF2"
do some commands on "$var1" 
and/or "$var2"
EOF2

Результати є

$ cat file1
do some commands on "VALUE 1" 
and/or "VALUE 2"

і

$ cat file2
do some commands on "$var1" 
and/or "$var2"

Якщо ви виводите команди оболонки зі свого скрипту, ви, мабуть, хочете цитованої форми.


Людина, як довго я шукав це ^^ одне питання: чи працює це лише в сценарії чи можливо також використовувати його безпосередньо в оболонці?
derHugo

@derHugo ви можете використовувати його безпосередньо в оболонці - у такому випадку було б звичайніше опустити END_TEXTі просто використовувати CTRL-Dдля передачі сигналу про закінчення введення. Дивіться, наприклад, як сигналізувати про закінчення вводу stdin
steeldriver

7

Для цього не потрібно возитися з редактором.

Ви можете додати щось до файлу за допомогою простої команди ехо. Наприклад

echo "Hello World" >> txt

Додасть до файлу "Hello world" txt. якщо файл не існує, він буде створений.

Або якщо файл може вже існувати, і ви хочете його перезаписати

echo "Hello World" > txt

Для першого рядка: і

echo "I'm feeling good" >> txt
echo "how are you" >> txt 

Для наступних рядків.

У найпростішому випадку .shсценарій міг просто містити набір команд ехо.

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