Bash / Файл уншиж бичих

Файл уншиж бичих

Bash-д файлтай ажиллах нь хамгийн хэрэгтэй чадваруудын нэг юм. Лог файл уншиж дүн шинжилгээ хийх, тохиргоо хадгалах, гаралтыг файлд хадгалах — бүгд энэ хичээлд орно.

Файл унших

Файлын агуулгыг дэлгэцэнд харуулах хэд хэдэн арга бий:

bash
# cat — файлыг бүхэлд нь харуулна
cat notes.txt

# less — урт файлыг хуудас хуудсаар харуулна (q дарж гарна)
less big-file.txt

# head — файлын эхний 10 мөрийг харуулна
head notes.txt

# head -n 5 — зөвхөн эхний 5 мөрийг харуулна
head -n 5 notes.txt

# tail — файлын сүүлийн 10 мөрийг харуулна
tail notes.txt

# tail -n 20 — сүүлийн 20 мөрийг харуулна
tail -n 20 notes.txt

Лог файл шалгахад tail маш хэрэгтэй. tail -f нь файлд шинэ мөр нэмэгдэх бүрт автоматаар харуулдаг:

bash
# Лог файлыг амьд дагах
tail -f /var/log/syslog

Файлд бичих (redirect)

> тэмдэг нь командын гаралтыг файлд хадгална. Хэрэв файл байгаа бол устгаж дахин үүсгэнэ:

bash
# Шинэ файл үүсгэж бичих (байгаа файлыг дарж бичнэ)
echo "Сайн уу!" > greeting.txt

# Файлын агуулгыг шалгах
cat greeting.txt

Гаралт:

код
Сайн уу!

>> тэмдэг нь файлын төгсгөлд нэмж бичнэ — байгаа агуулгыг устгахгүй:

bash
echo "Нэгдүгээр мөр" > log.txt
echo "Хоёрдугаар мөр" >> log.txt
echo "Гуравдугаар мөр" >> log.txt

cat log.txt

Гаралт:

код
Нэгдүгээр мөр
Хоёрдугаар мөр
Гуравдугаар мөр

Олон мөр нэг дор бичих (heredoc)

<<EOF бол олон мөрт текст бичих хялбар арга — heredoc гэж нэрлэдэг:

bash
cat > config.txt << EOF
Нэр: Батболд
Нас: 25
Хот: Улаанбаатар
EOF

cat config.txt

Гаралт:

код
Нэр: Батболд
Нас: 25
Хот: Улаанбаатар

EOF гэдэг нь "End Of File" гэсэн үг бөгөөд хаалтын тэмдэг болж ажилладаг. Та дурын үгийг хаалтын тэмдэг болгон ашиглаж болно — зөвхөн нээлт, хаалт хоёр ижил байх ёстой.

Файлын мэдээлэл авах

bash
# Файлын мөрийн тоо, үгийн тоо, байтын тоо
wc notes.txt

# Зөвхөн мөрийн тоо
wc -l notes.txt

# Зөвхөн үгийн тоо
wc -w notes.txt

# Файлын хэмжээг харах
ls -lh notes.txt

# Файл байгаа эсэхийг шалгах
if [ -f notes.txt ]; then
  echo "Файл байна"
else
  echo "Файл байхгүй"
fi

Script дотор файл унших

Script-д файлыг мөр мөрөөр уншиж боловсруулах:

bash
#!/bin/bash

# names.txt файлыг мөр мөрөөр унших
while IFS= read -r line; do
  echo "Сайн уу, $line!"
done < names.txt

names.txt дотор:

код
Батболд
Оюун
Энхбаяр

Script-г ажиллуулахад:

код
Сайн уу, Батболд!
Сайн уу, Оюун!
Сайн уу, Энхбаяр!

IFS= нь мөрийн эхэн, төгсгөлийн хоосон зайг хадгалдаг. read -r нь \ тэмдгийг тусгай утгагүйгээр уншдаг. Одоо эдгээрийг цаашид ойлгох болно — дадлага хийх явцад танил болно.

Дараагийн хичээлд:

Pipe (|) ба redirect командуудыг судална — олон командыг хооронд нь холбож, гаралтыг чиглүүлэх хүчирхэг арга.