برق و الکترونیک *دانلود پروژه رایگان
Open in Telegram
2 293
Subscribers
No data24 hours
No data7 days
+330 days
Posts Archive
📌 آموزش دستور `grep` در لینوکس
🔎 دستور
grep یکی از پرکاربردترین دستورات لینوکس برای جستجو در متن فایلهاست.
به کمک این دستور میتونید هر کلمه یا عبارت خاصی رو داخل فایلها پیدا کنید.
---
### ✨ مثالهای کاربردی:
🔹 ۱. جستجو در یک فایل خاص
grep "STORAGE_TYPE" config.txt
➡️ این دستور بررسی میکنه آیا کلمهی STORAGE_TYPE در فایل config.txt وجود دارد یا نه.
---
🔹 ۲. جستجو در همه فایلهای یک شاخه
grep "STORAGE_TYPE" *
➡️ همهی فایلهای موجود در پوشهی فعلی بررسی میشن.
---
🔹 ۳. جستجو در کل شاخه و زیرشاخهها
grep -R "STORAGE_TYPE" .
* -R یعنی بازگشتی (recursive) → همه زیرشاخهها هم بررسی میشن.
* . یعنی از همین پوشه فعلی شروع کن.
---
🔹 ۴. نمایش شماره خط همراه با نتیجه
grep -Rn "STORAGE_TYPE" .
* -n شماره خط رو هم نشون میده.
* -R همه زیرشاخهها رو جستجو میکنه.
---
🔹 ۵. فقط بررسی وجود یا عدم وجود
grep -Rq "STORAGE_TYPE" .
echo $?
➡️ خروجی echo $? اگر 0 بود یعنی پیدا شد، اگر 1 بود یعنی پیدا نشد.
---
### 🛠 نکات حرفهای:
* برای نادیده گرفتن بزرگی یا کوچکی حروف (case-insensitive):
grep -Ri "storage_type" .
* برای جستجو در فایلهایی با پسوند خاص (مثلاً فقط .c و .h):
grep -Rn "STORAGE_TYPE" --include="*.c" --include="*.h" .
---
✅ به همین راحتی میتونید هر چیزی رو داخل فایلها و پروژههای لینوکسی پیدا کنید.
grep یکی از ابزارهایی هست که هر کاربر لینوکس باید یاد بگیره! 🚀🎈 بزرگترین گناه کبیره
🎀 قَالَ آيَةُ اَللهِ اَلْعُظْمَى اَلْإِمَامُ اَلْبَاقِرُ صَلَوَاتُ اَللهِ عَلَيْهِ : أَكْبَرُ الْكَبَائِرِ صَاحِبُ الْقَوْلِ الَّذِی يَقُولُ أَنَا أَبْرَأُ مِمَّنْ يَبْرَأُ مِنْ أَبِی بَكْرٍ وَ عُمَرَ .
❤️ حضرت آیت الله العظمی امام باقر صلوات الله علیه می فرمایند : بزرگترین گناه کبیره برای آن شخصی است که می گوید من تبرّی میجویم از کسی که از ابوبکر و عمر بیزاری می جوید.
📕مستدرك الوسائل جلد ۱۱ صفحه ۳۵۸ حدیث ۱۳۲۵۶
💡 آموزش Mutex در برنامهنویسی چندریسمانی (POSIX / pthread)
🔹 Mutex یعنی چی؟
Mutex مخفف Mutual Exclusion به معنی «排除 متقابل» هست.
تصور کن یک اتاق کوچک داری که فقط یک نفر میتونه واردش بشه. وقتی یک نفر داخل اتاقه، بقیه باید پشت در منتظر بمونن تا اون بیاد بیرون. این اتاق همون بخش بحرانی برنامهست و درش همون Mutex هست.
---
🔹 چرا بهش نیاز داریم؟
فرض کن دو نفر همزمان میخوان روی یک برگه یادداشت بنویسن. اگر هر دو با هم شروع کنن، نوشتهها قاطی میشه و برگه خراب میشه.
در برنامهنویسی هم وقتی دو نخ (Thread) همزمان روی یک متغیر یا بافر مشترک کار کنن، دادهها خراب میشه یا نتیجه اشتباه درمیاد. Mutex مثل یک نگهبان جلوی در میایسته و میگه: «صبر کن، نوبتت میشه!»
---
🔹 مثال واقعی از پروژه ما
در برنامه دریافت داده از UART:
- یک نخ مخصوص دریافت داده از سریال داریم که دادهها رو توی یک بافر ذخیره میکنه.
- حلقه اصلی LVGL همون بافر رو میخونه و روی صفحه یا ترمینال نمایش میده.
اگر Mutex نذاریم، ممکنه وسط خوندن داده توسط LVGL، نخ UART بیاد و بافر رو تغییر بده. نتیجه؟ متن نصفهنیمه یا خراب روی صفحه.
با Mutex، قبل از دستکاری بافر، نخها قفل میگیرن و بعد از اتمام کار، قفل رو آزاد میکنن.
---
🔹 کجاها کاربرد داره؟
- وقتی چند نخ به یک فایل مشترک مینویسن 📄
- وقتی چند نخ به یک دیتابیس یا متغیر مشترک دسترسی دارن 📊
- وقتی چند نخ از یک سختافزار مشترک استفاده میکنن (مثل پورت سریال یا سنسور) ⚙️
---
🔹 نکات مهم
- Mutex فقط در برنامههای چندریسمانی معنی داره.
- اگر قفل رو باز نکنی، برنامه قفل میکنه (Deadlock) 🔒
- برای دادههایی که فقط خونده میشن و تغییر نمیکنن، معمولاً Mutex لازم نیست.
---
🔹 نمونه کد ساده
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&lock); // قفل گرفتن
// بخش بحرانی: فقط یک نخ در این لحظه اینجا رو اجرا میکنه
pthread_mutex_unlock(&lock); // آزاد کردن قفل
---
🔥 جمعبندی
Mutex مثل یک صف نوبتدهی منظم برای نخهاست. باعث میشه همه چیز مرتب و بدون قاطی شدن پیش بره.
در پروژه ما، این یعنی دادههای UART همیشه سالم و کامل به LVGL میرسه و نمایش داده میشه.🌟 آموزش سریع دیدن فایلها و پوشهها در ترمینال لینوکس 🌟
وقتی روی پروژه یا پوشهای کار میکنید، خوبه بدونید چه فایلها و زیرشاخههایی دارید! 💻✨
---
### ۱️⃣ دیدن فایلها و پوشههای اصلی
ls
🔹 فقط فایلها و پوشههای همسطح را نشان میدهد.
---
### ۲️⃣ دیدن تمام زیرشاخهها (بازگشتی)
ls -R
🔹 همه پوشهها و زیرشاخهها را نمایش میدهد.
---
### ۳️⃣ دیدن جزئیات فایلها
ls -l
🔹 اندازه، تاریخ، مجوزها و مالک فایلها را نشان میدهد.
برای تمام زیرشاخهها و جزئیات کامل:
ls -lR
---
### ۴️⃣ نمایش بصری ساختار پوشهها 🌳
۱️⃣ نصب دستور tree:
sudo apt-get install tree
۲️⃣ استفاده:
tree
🔹 همه پوشهها و زیرشاخهها را به صورت درختی نمایش میدهد.
🔹 راحت میبینید ساختار پروژه چطور سازماندهی شده است.
---
💡 نکته طلایی:
قبل از کپی، جابجایی یا حذف فایلها، با این دستورات یک تصویر کامل از ساختار پوشهها داشته باشید ✅