خب این تاپیک ایجاد شده که داخلش دستورات مفید پوسته رو با توضیحات کوتاه و به همراه مثال معرفی کنیم :)
برای شروع من از xargs میگم.
دستور: xargs
برای اجرای یک دستور با آرگومانهایی که از ورودی استاندارد یا خروجی دستور دیگر گرفته میشوند استفاده میشود؛ مخصوصاً زمانی که دادهها زیاد یا چندخطی باشند.
cat list.txt | xargs rm
find . -name "*.log" | xargs gzip
echo "file1 file2 file3" | xargs -n1 echo "Processing:"
find /var/log -type f | xargs -I{} cp {} /backup/logs/
دستور xargs کمک میکند خروجیهایی که بهصورت خطی یا چندتایی هستند، به صورت منظم به دستورات دیگر پاس داده شوند تا مشکل طول زیاد آرگومانها یا کار با فایلهای زیاد حل شود.
6 Likes
یکی از دستورات مفیدی که به نظرم خوبه بهش اشاره بشه دستور tee هستش.
دستور tee خروجی یک دستور رو همزمان روی صفحه (stdout) نمایش میده و در یک یا چند فایل هم ذخیره میکنه.
یعنی یه جورایی دوشاخهی خروجیه 
کجا کاربرد داره؟
مثلا وقتی ذخیره همزمان خروجی بدون از دست دادن نمایش در ترمینال نیازه
ls -lh /etc | tee etc_list.txt
خروجی لیست etc/ روی صفحه نشون داده میشه و در فایل etc_list.txt ذخیره میشه.
یا افزودن به فایل (append mode) بخواد اتفاق بیوفته
dmesg | tee -a logs.txt
خروجی دستور dmesg به آخر فایل logs.txt اضافه میشه بدون اینکه اطلاعات قبلی پاک بشن.
یا تو نوشتن همزمان در چند فایل خیلی کمک کننده است
echo "Backup started at $(date)" | tee log1.txt log2.txt
و برای استفاده در pipeline برای ثبت مرحلهای خروجی هم کاربرد داره
curl -s https://example.com | tee response.html | grep keyword
خروجی هم ذخیره میشه و هم فیلتر میشه
نکته جالبی که داره sudo با tee خیلی خوب جفت میشه
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
چون sudo فقط روی echo اعمال نمیشه، با tee میتونیم به فایلهای سیستمی هم بنویسیم بدون نیاز به ادیتور
3 Likes
خب یکی از ابزار هایی که این چند مدت باهاش زیاد کار کردم jq بوده.
این یه ابزار خط فرمانه برای پردازش، فیلتر، فرمت دهی، استخراج و تبدیل JSON
خیلی شبیه sed و awk هست، ولی مخصوص JSON استفاده میشه.
مثلا برای زیباسازی دیتای JSON استفاده میشه
cat data.json | jq
یا واسه استخراج یه فیلد مشخص
jq '.name' data.json
برای استخراج مقدار داخل آرایه
jq '.[0].id' data.json
واسه فیلتر کردن داده ها
مثلاً کاربرانی که active=true هستند
jq '.users[] | select(.active == true)' data.json
برای تبدیل JSON به لیست ساده
jq -r '.users[].name' data.json
حذف کردن یه فیلد
jq 'del(.password)' data.json
یه سناریو مثلا این میتونه باشه بخوای لاگ های JSON تو پایپ لاین رو فیلتر کنی
kubectl logs app | jq '.level, .message'
2 Likes