دستورات مفید پوسته

خب این تاپیک ایجاد شده که داخلش دستورات مفید پوسته رو با توضیحات کوتاه و به همراه مثال معرفی کنیم :‌)

برای شروع من از 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) نمایش میده و در یک یا چند فایل هم ذخیره میکنه.
یعنی یه جورایی دوشاخه‌ی خروجیه :slight_smile:

کجا کاربرد داره؟
مثلا وقتی ذخیره هم‌زمان خروجی بدون از دست دادن نمایش در ترمینال نیازه
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، در فایل‌ها مستقیماً نمی‌نویسد بلکه فقط جریان داده را تغییر می‌دهد، پس برای کارهای سریع و خطی در پردازش متن ابزار بسیار سبکی محسوب می‌شود.