خب این تاپیک ایجاد شده که داخلش دستورات مفید پوسته رو با توضیحات کوتاه و به همراه مثال معرفی کنیم :)
برای شروع من از 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
کمک میکند خروجیهایی که بهصورت خطی یا چندتایی هستند، به صورت منظم به دستورات دیگر پاس داده شوند تا مشکل طول زیاد آرگومانها یا کار با فایلهای زیاد حل شود.
3 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
میتونیم به فایلهای سیستمی هم بنویسیم بدون نیاز به ادیتور
2 Likes
دستور: tr
برای جایگزینی، حذف یا فیلتر کردن کاراکترها در ورودی استاندارد استفاده میشود و معمولاً در پردازش متن و دادههای خط فرمان کاربرد دارد.
echo “hello world” | tr ‘a-z’ ‘A-Z’
cat file.txt | tr -d ‘\n’
echo “a,b,c,d” | tr ‘,’ ‘\n’
cat text.txt | tr -s ’ ’
دستور tr داده را از stdin میگیرد و تغییرات را در stdout چاپ میکند. گزینهی -d برای حذف کاراکترهاست، -s تکرارهای متوالی از یک کاراکتر را یکی میکند، و میتوان با آن تبدیلهای سادهی حروف یا جداکنندهها را انجام داد. برخلاف sed یا awk، در فایلها مستقیماً نمینویسد بلکه فقط جریان داده را تغییر میدهد، پس برای کارهای سریع و خطی در پردازش متن ابزار بسیار سبکی محسوب میشود.