Файл уншиж бичих
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 нь файлд шинэ мөр нэмэгдэх бүрт автоматаар харуулдаг:
# Лог файлыг амьд дагах
tail -f /var/log/syslog
Файлд бичих (redirect)
> тэмдэг нь командын гаралтыг файлд хадгална. Хэрэв файл байгаа бол устгаж дахин үүсгэнэ:
# Шинэ файл үүсгэж бичих (байгаа файлыг дарж бичнэ)
echo "Сайн уу!" > greeting.txt
# Файлын агуулгыг шалгах
cat greeting.txt
Гаралт:
Сайн уу!
>> тэмдэг нь файлын төгсгөлд нэмж бичнэ — байгаа агуулгыг устгахгүй:
echo "Нэгдүгээр мөр" > log.txt
echo "Хоёрдугаар мөр" >> log.txt
echo "Гуравдугаар мөр" >> log.txt
cat log.txt
Гаралт:
Нэгдүгээр мөр
Хоёрдугаар мөр
Гуравдугаар мөр
Олон мөр нэг дор бичих (heredoc)
<<EOF бол олон мөрт текст бичих хялбар арга — heredoc гэж нэрлэдэг:
cat > config.txt << EOF
Нэр: Батболд
Нас: 25
Хот: Улаанбаатар
EOF
cat config.txt
Гаралт:
Нэр: Батболд
Нас: 25
Хот: Улаанбаатар
EOF гэдэг нь "End Of File" гэсэн үг бөгөөд хаалтын тэмдэг болж ажилладаг. Та дурын үгийг хаалтын тэмдэг болгон ашиглаж болно — зөвхөн нээлт, хаалт хоёр ижил байх ёстой.
Файлын мэдээлэл авах
# Файлын мөрийн тоо, үгийн тоо, байтын тоо
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-д файлыг мөр мөрөөр уншиж боловсруулах:
#!/bin/bash
# names.txt файлыг мөр мөрөөр унших
while IFS= read -r line; do
echo "Сайн уу, $line!"
done < names.txt
names.txt дотор:
Батболд
Оюун
Энхбаяр
Script-г ажиллуулахад:
Сайн уу, Батболд!
Сайн уу, Оюун!
Сайн уу, Энхбаяр!
IFS= нь мөрийн эхэн, төгсгөлийн хоосон зайг хадгалдаг. read -r нь \ тэмдгийг тусгай утгагүйгээр уншдаг. Одоо эдгээрийг цаашид ойлгох болно — дадлага хийх явцад танил болно.
Дараагийн хичээлд:
Pipe (|) ба redirect командуудыг судална — олон командыг хооронд нь холбож, гаралтыг чиглүүлэх хүчирхэг арга.