🌟 آموزش سریع دیدن فایلها و پوشهها در ترمینال لینوکس 🌟
وقتی روی پروژه یا پوشهای کار میکنید، خوبه بدونید چه فایلها و زیرشاخههایی دارید! 💻✨
---
### ۱️⃣ دیدن فایلها و پوشههای اصلی
🔹 فقط فایلها و پوشههای همسطح را نشان میدهد.
---
### ۲️⃣ دیدن تمام زیرشاخهها (بازگشتی)
🔹 همه پوشهها و زیرشاخهها را نمایش میدهد.
---
### ۳️⃣ دیدن جزئیات فایلها
🔹 اندازه، تاریخ، مجوزها و مالک فایلها را نشان میدهد.
برای تمام زیرشاخهها و جزئیات کامل:
---
### ۴️⃣ نمایش بصری ساختار پوشهها 🌳
۱️⃣ نصب دستور
۲️⃣ استفاده:
🔹 همه پوشهها و زیرشاخهها را به صورت درختی نمایش میدهد.
🔹 راحت میبینید ساختار پروژه چطور سازماندهی شده است.
---
💡 نکته طلایی:
قبل از کپی، جابجایی یا حذف فایلها، با این دستورات یک تصویر کامل از ساختار پوشهها داشته باشید ✅
وقتی روی پروژه یا پوشهای کار میکنید، خوبه بدونید چه فایلها و زیرشاخههایی دارید! 💻✨
---
### ۱️⃣ دیدن فایلها و پوشههای اصلی
ls
🔹 فقط فایلها و پوشههای همسطح را نشان میدهد.
---
### ۲️⃣ دیدن تمام زیرشاخهها (بازگشتی)
ls -R
🔹 همه پوشهها و زیرشاخهها را نمایش میدهد.
---
### ۳️⃣ دیدن جزئیات فایلها
ls -l
🔹 اندازه، تاریخ، مجوزها و مالک فایلها را نشان میدهد.
برای تمام زیرشاخهها و جزئیات کامل:
ls -lR
---
### ۴️⃣ نمایش بصری ساختار پوشهها 🌳
۱️⃣ نصب دستور
tree
:sudo apt-get install tree
۲️⃣ استفاده:
tree
🔹 همه پوشهها و زیرشاخهها را به صورت درختی نمایش میدهد.
🔹 راحت میبینید ساختار پروژه چطور سازماندهی شده است.
---
💡 نکته طلایی:
قبل از کپی، جابجایی یا حذف فایلها، با این دستورات یک تصویر کامل از ساختار پوشهها داشته باشید ✅
💡 آموزش Mutex در برنامهنویسی چندریسمانی (POSIX / pthread)
🔹 Mutex یعنی چی؟
Mutex مخفف Mutual Exclusion به معنی «排除 متقابل» هست.
تصور کن یک اتاق کوچک داری که فقط یک نفر میتونه واردش بشه. وقتی یک نفر داخل اتاقه، بقیه باید پشت در منتظر بمونن تا اون بیاد بیرون. این اتاق همون بخش بحرانی برنامهست و درش همون Mutex هست.
---
🔹 چرا بهش نیاز داریم؟
فرض کن دو نفر همزمان میخوان روی یک برگه یادداشت بنویسن. اگر هر دو با هم شروع کنن، نوشتهها قاطی میشه و برگه خراب میشه.
در برنامهنویسی هم وقتی دو نخ (Thread) همزمان روی یک متغیر یا بافر مشترک کار کنن، دادهها خراب میشه یا نتیجه اشتباه درمیاد. Mutex مثل یک نگهبان جلوی در میایسته و میگه: «صبر کن، نوبتت میشه!»
---
🔹 مثال واقعی از پروژه ما
در برنامه دریافت داده از UART:
- یک نخ مخصوص دریافت داده از سریال داریم که دادهها رو توی یک بافر ذخیره میکنه.
- حلقه اصلی LVGL همون بافر رو میخونه و روی صفحه یا ترمینال نمایش میده.
اگر Mutex نذاریم، ممکنه وسط خوندن داده توسط LVGL، نخ UART بیاد و بافر رو تغییر بده. نتیجه؟ متن نصفهنیمه یا خراب روی صفحه.
با Mutex، قبل از دستکاری بافر، نخها قفل میگیرن و بعد از اتمام کار، قفل رو آزاد میکنن.
---
🔹 کجاها کاربرد داره؟
- وقتی چند نخ به یک فایل مشترک مینویسن 📄
- وقتی چند نخ به یک دیتابیس یا متغیر مشترک دسترسی دارن 📊
- وقتی چند نخ از یک سختافزار مشترک استفاده میکنن (مثل پورت سریال یا سنسور) ⚙️
---
🔹 نکات مهم
- Mutex فقط در برنامههای چندریسمانی معنی داره.
- اگر قفل رو باز نکنی، برنامه قفل میکنه (Deadlock) 🔒
- برای دادههایی که فقط خونده میشن و تغییر نمیکنن، معمولاً Mutex لازم نیست.
---
🔹 نمونه کد ساده
---
🔥 جمعبندی
Mutex مثل یک صف نوبتدهی منظم برای نخهاست. باعث میشه همه چیز مرتب و بدون قاطی شدن پیش بره.
در پروژه ما، این یعنی دادههای UART همیشه سالم و کامل به LVGL میرسه و نمایش داده میشه.
🔹 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 میرسه و نمایش داده میشه.
🎈 بزرگترین گناه کبیره
🎀 قَالَ آيَةُ اَللهِ اَلْعُظْمَى اَلْإِمَامُ اَلْبَاقِرُ صَلَوَاتُ اَللهِ عَلَيْهِ : أَكْبَرُ الْكَبَائِرِ صَاحِبُ الْقَوْلِ الَّذِی يَقُولُ أَنَا أَبْرَأُ مِمَّنْ يَبْرَأُ مِنْ أَبِی بَكْرٍ وَ عُمَرَ .
❤️ حضرت آیت الله العظمی امام باقر صلوات الله علیه می فرمایند : بزرگترین گناه کبیره برای آن شخصی است که می گوید من تبرّی میجویم از کسی که از ابوبکر و عمر بیزاری می جوید.
📕مستدرك الوسائل جلد ۱۱ صفحه ۳۵۸ حدیث ۱۳۲۵۶
🎀 قَالَ آيَةُ اَللهِ اَلْعُظْمَى اَلْإِمَامُ اَلْبَاقِرُ صَلَوَاتُ اَللهِ عَلَيْهِ : أَكْبَرُ الْكَبَائِرِ صَاحِبُ الْقَوْلِ الَّذِی يَقُولُ أَنَا أَبْرَأُ مِمَّنْ يَبْرَأُ مِنْ أَبِی بَكْرٍ وَ عُمَرَ .
❤️ حضرت آیت الله العظمی امام باقر صلوات الله علیه می فرمایند : بزرگترین گناه کبیره برای آن شخصی است که می گوید من تبرّی میجویم از کسی که از ابوبکر و عمر بیزاری می جوید.
📕مستدرك الوسائل جلد ۱۱ صفحه ۳۵۸ حدیث ۱۳۲۵۶
📌 آموزش دستور `grep` در لینوکس
🔎 دستور
به کمک این دستور میتونید هر کلمه یا عبارت خاصی رو داخل فایلها پیدا کنید.
---
### ✨ مثالهای کاربردی:
🔹 ۱. جستجو در یک فایل خاص
➡️ این دستور بررسی میکنه آیا کلمهی
---
🔹 ۲. جستجو در همه فایلهای یک شاخه
➡️ همهی فایلهای موجود در پوشهی فعلی بررسی میشن.
---
🔹 ۳. جستجو در کل شاخه و زیرشاخهها
*
*
---
🔹 ۴. نمایش شماره خط همراه با نتیجه
*
*
---
🔹 ۵. فقط بررسی وجود یا عدم وجود
➡️ خروجی
---
### 🛠 نکات حرفهای:
* برای نادیده گرفتن بزرگی یا کوچکی حروف (case-insensitive):
* برای جستجو در فایلهایی با پسوند خاص (مثلاً فقط
---
✅ به همین راحتی میتونید هر چیزی رو داخل فایلها و پروژههای لینوکسی پیدا کنید.
🔎 دستور
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
یکی از ابزارهایی هست که هر کاربر لینوکس باید یاد بگیره! 🚀
برق و الکترونیک *دانلود پروژه رایگان
https://github.com/xboot/xfel
نسخه تست شده قابل استفاده برای تراشه t113-s3 👍
## 🧠 آموزش کاربردی binwalk در پروژه T113-S3
📌 موضوع: بررسی محتوای فایلهای ایمیج در پروژههای لینوکسی با چیپ Allwinner T113-S3
🛠 ابزار کلیدی:
🎯 هدف: فهمیدن اینکه داخل فایلهای
---
### 🔍 binwalk چیه؟
- آیا کرنل (
- آیا فایلسیستم مثل
- آیا
- آیا ایمیج ناقصه یا با تنظیمات برد ناسازگاره؟
---
### ⚙️ نصب binwalk
---
### 🧪 مثال واقعی از پروژه T113-S3
فرض کن یه فایل
📥 خروجی نمونه:
✅ یعنی کرنل داخلشه
❌ ولی اگه ramdisk فقط چند بایت باشه، یعنی rootfs نداره → سیستم بعد از OP-TEE گیر میکنه
---
یا مثلاً میخوای ببینی داخل ایمیج نهایی
📥 خروجی نمونه:
❗️ ولی اگه توی
---
### 💡 نکته حرفهای
با binwalk میتونی قبل از فلش کردن ایمیج مطمئن بشی که:
- فایلها کاملن
- نوع فایلسیستم با تنظیمات
- کرنل و dtb داخل
- و هیچ چیز حیاتی مثل
---
### 🎯 نتیجهگیری
در پروژههای embedded مثل T113-S3، binwalk یه ابزار حیاتی برای دیباگ بوته. اگه سیستم بعد از OP-TEE گیر میکنه یا کرنل بالا نمیاد، اولین چیزی که باید چک کنی همین binwalkه.
بزن binwalk رو نصب کن، ایمیج رو باز کن، و ببین واقعاً چی داخلشه—قبل از اینکه وقتت رو با فلشهای تکراری تلف کنی 😎
📌 موضوع: بررسی محتوای فایلهای ایمیج در پروژههای لینوکسی با چیپ Allwinner T113-S3
🛠 ابزار کلیدی:
binwalk
🎯 هدف: فهمیدن اینکه داخل فایلهای
.img
مثل boot.img
یا tina_t113-mq_r_uart3.img
دقیقاً چی هست و چرا سیستم ممکنه بوت نشه---
### 🔍 binwalk چیه؟
binwalk
یه ابزار قدرتمند برای آنالیز فایلهای باینریه. مخصوصاً وقتی با ایمیجهای سیستمعامل، بوتلودر، یا فایلسیستمهای فشرده سروکار داریم. باهاش میتونیم بفهمیم:- آیا کرنل (
zImage
) داخل ایمیج هست؟- آیا فایلسیستم مثل
SquashFS
, UBIFS
, یا YAFFS
وجود داره؟- آیا
ramdisk
یا initrd
داخل boot.img
هست یا نه؟- آیا ایمیج ناقصه یا با تنظیمات برد ناسازگاره؟
---
### ⚙️ نصب binwalk
sudo apt update
sudo apt install binwalk
---
### 🧪 مثال واقعی از پروژه T113-S3
فرض کن یه فایل
boot.img
ساختی و میخوای ببینی آیا کرنل و ramdisk داخلش هست یا نه:binwalk -e boot.img
📥 خروجی نمونه:
0x0 Android bootimg, kernel size: 4247424 bytes
0x824 Linux kernel ARM boot executable zImage
0x460C gzip compressed data
✅ یعنی کرنل داخلشه
❌ ولی اگه ramdisk فقط چند بایت باشه، یعنی rootfs نداره → سیستم بعد از OP-TEE گیر میکنه
---
یا مثلاً میخوای ببینی داخل ایمیج نهایی
tina_t113-mq_r_uart3.img
چه فایلسیستمی هست:binwalk -e tina_t113-mq_r_uart3.img
📥 خروجی نمونه:
0x7A3400 Squashfs filesystem, version 4.0
❗️ ولی اگه توی
env.txt
نوشته باشی `rootfstype=ubifs`، این mismatch باعث میشه کرنل نتونه rootfs رو mount کنه → بوت ناقص---
### 💡 نکته حرفهای
با binwalk میتونی قبل از فلش کردن ایمیج مطمئن بشی که:
- فایلها کاملن
- نوع فایلسیستم با تنظیمات
env.cfg
هماهنگه- کرنل و dtb داخل
boot.img
هستن- و هیچ چیز حیاتی مثل
sboot
یا ramdisk
جا نیفتاده---
### 🎯 نتیجهگیری
در پروژههای embedded مثل T113-S3، binwalk یه ابزار حیاتی برای دیباگ بوته. اگه سیستم بعد از OP-TEE گیر میکنه یا کرنل بالا نمیاد، اولین چیزی که باید چک کنی همین binwalkه.
بزن binwalk رو نصب کن، ایمیج رو باز کن، و ببین واقعاً چی داخلشه—قبل از اینکه وقتت رو با فلشهای تکراری تلف کنی 😎
🎓 تفاوت nand_root در لینوکسهای نهفته مثل Tina Linux
اگه با بردهایی مثل T113-S3 کار میکنی، احتمالاً توی فایل env یا bootargs دیدی که بعضیها نوشتن:
و بعضیها هم:
🤔 خب فرق این دو تا چیه؟ کدومش رو باید استفاده کنیم؟
---
🔹 ubiblock0_5
این یه دیوایس بلوکمحور هست که از volume شماره ۵ در UBI ساخته شده.
📦 مناسب برای فایلسیستمهای فقط خواندنی مثل
✅ وقتی rootfs از نوع squashfs باشه، باید از این استفاده کنی
---
🔹 ubi0_5
این فقط یه volume منطقی در سیستم UBI هست
📝 مناسب برای فایلسیستمهای قابل نوشتن مثل
✅ وقتی میخوای rootfs قابل نوشتن باشه، باید از این استفاده بشه
---
📌 پس انتخاب درست بستگی به نوع فایلسیستم rootfs داره:
- اگه
- اگه
---
💡 نکته حرفهای:
برای دیدن نوع فایلسیستم فعلی، توی ترمینال برد بزن:
و دنبال
اگه با بردهایی مثل T113-S3 کار میکنی، احتمالاً توی فایل env یا bootargs دیدی که بعضیها نوشتن:
nand_root=/dev/ubiblock0_5
و بعضیها هم:
nand_root=ubi0_5
🤔 خب فرق این دو تا چیه؟ کدومش رو باید استفاده کنیم؟
---
🔹 ubiblock0_5
این یه دیوایس بلوکمحور هست که از volume شماره ۵ در UBI ساخته شده.
📦 مناسب برای فایلسیستمهای فقط خواندنی مثل
squashfs
یا cramfs
✅ وقتی rootfs از نوع squashfs باشه، باید از این استفاده کنی
---
🔹 ubi0_5
این فقط یه volume منطقی در سیستم UBI هست
📝 مناسب برای فایلسیستمهای قابل نوشتن مثل
ubifs
✅ وقتی میخوای rootfs قابل نوشتن باشه، باید از این استفاده بشه
---
📌 پس انتخاب درست بستگی به نوع فایلسیستم rootfs داره:
- اگه
rootfstype=squashfs
باشه → بنویس nand_root=/dev/ubiblock0_5
- اگه
rootfstype=ubifs
باشه → بنویس nand_root=ubi0_5
---
💡 نکته حرفهای:
برای دیدن نوع فایلسیستم فعلی، توی ترمینال برد بزن:
cat /proc/cmdline
و دنبال
rootfstype=
بگرد🧠 آموزش ذخیرهسازی تنظیمات در برد T113-S3 با استفاده از UDISK
اگه با بردهای نهفته مثل T113-S3 کار میکنی و سیستمعاملت با Tina Linux راهاندازی شده، حتماً برات پیش اومده که بخوای تنظیمات برنامهات رو یه جایی ذخیره کنی که بعد از ریست شدن برد هم باقی بمونه. چون فایلسیستم rootfs معمولاً از نوع squashfs هست و فقط خواندنیه، نمیتونی تنظیمات رو اونجا بنویسی. ولی یه راه حرفهای و مطمئن وجود داره: استفاده از پارتیشن UDISK
---
📦 UDISK چیه و چرا مناسب ذخیرهسازیه؟
در فایل پارتیشنبندی
و توی ترمینال برد میتونی با این دستور ببینی که mount شده یا نه:
اگه خروجی چیزی مثل این بود، یعنی آمادهی استفادهست:
---
📝 ساخت فایل تنظیمات تکخطی
برای ساخت یه فایل ساده که یه مقدار تنظیمات داخلش باشه، این دستور رو بزن:
این فایل داخل مسیر
برای دیدن محتواش:
---
📄 ساخت فایل تنظیمات چندخطی
اگه بخوای چند خط تنظیمات داخل فایل بذاری، چند روش مختلف داری. اینجا چندتا از راحتترینهاش رو میگم:
🔹 روش اول: استفاده از echo با >>
🔹 روش دوم: استفاده از heredoc
🔹 روش سوم: استفاده از vi یا nano (اگر نصب باشه)
بعد از باز شدن ویرایشگر، متن رو بنویس و با
---
🔁 تست بعد از ریست برد
بعد از ریست شدن کامل برد، دوباره وارد ترمینال بشو و بزن:
اگه محتوا باقی مونده بود، یعنی تنظیماتت بهدرستی ذخیره شدن و قابل استفاده هستن
---
🔐 نکته امنیتی
اگه تنظیماتت شامل رمز یا اطلاعات حساس هستن، بهتره دسترسی فایل رو محدود کنی:
---
🎯 جمعبندی کاربردی
پارتیشن UDISK بهترین جا برای ذخیرهسازی تنظیمات، لاگها، و دادههای دائمی در بردهای T113-S3 هست. با چند دستور ساده میتونی فایل بسازی، محتوا بنویسی، و بعد از هر بوت دوباره بخونی. این روش کاملاً پایدار و امنه و توی پروژههای صنعتی هم استفاده میشه
اگه با بردهای نهفته مثل T113-S3 کار میکنی و سیستمعاملت با Tina Linux راهاندازی شده، حتماً برات پیش اومده که بخوای تنظیمات برنامهات رو یه جایی ذخیره کنی که بعد از ریست شدن برد هم باقی بمونه. چون فایلسیستم rootfs معمولاً از نوع squashfs هست و فقط خواندنیه، نمیتونی تنظیمات رو اونجا بنویسی. ولی یه راه حرفهای و مطمئن وجود داره: استفاده از پارتیشن UDISK
---
📦 UDISK چیه و چرا مناسب ذخیرهسازیه؟
در فایل پارتیشنبندی
sys_partition_nor.fex
معمولاً یه پارتیشن به نام UDISK
تعریف میشه که روی فلش NAND سوار میشه و با فایلسیستم ubifs
به صورت خواندن/نوشتن mount میشه. مسیرش معمولاً اینه:/mnt/UDISK
و توی ترمینال برد میتونی با این دستور ببینی که mount شده یا نه:
mount | grep UDISK
اگه خروجی چیزی مثل این بود، یعنی آمادهی استفادهست:
/dev/ubi0_8 on /mnt/UDISK type ubifs (rw,...)
---
📝 ساخت فایل تنظیمات تکخطی
برای ساخت یه فایل ساده که یه مقدار تنظیمات داخلش باشه، این دستور رو بزن:
mkdir -p /mnt/UDISK/configs
echo "mode=debug" > /mnt/UDISK/configs/myapp.conf
این فایل داخل مسیر
/mnt/UDISK/configs
ساخته میشه و بعد از ریست شدن برد هم باقی میمونهبرای دیدن محتواش:
cat /mnt/UDISK/configs/myapp.conf
---
📄 ساخت فایل تنظیمات چندخطی
اگه بخوای چند خط تنظیمات داخل فایل بذاری، چند روش مختلف داری. اینجا چندتا از راحتترینهاش رو میگم:
🔹 روش اول: استفاده از echo با >>
echo "wifi_ssid=BraveNet" >> /mnt/UDISK/configs/myapp.conf
echo "wifi_pass=12345678" >> /mnt/UDISK/configs/myapp.conf
echo "mode=production" >> /mnt/UDISK/configs/myapp.conf
🔹 روش دوم: استفاده از heredoc
cat <<EOF > /mnt/UDISK/configs/myapp.conf
wifi_ssid=BraveNet
wifi_pass=12345678
mode=production
EOF
🔹 روش سوم: استفاده از vi یا nano (اگر نصب باشه)
vi /mnt/UDISK/configs/myapp.conf
بعد از باز شدن ویرایشگر، متن رو بنویس و با
ESC
و :wq
ذخیره کن---
🔁 تست بعد از ریست برد
بعد از ریست شدن کامل برد، دوباره وارد ترمینال بشو و بزن:
cat /mnt/UDISK/configs/myapp.conf
اگه محتوا باقی مونده بود، یعنی تنظیماتت بهدرستی ذخیره شدن و قابل استفاده هستن
---
🔐 نکته امنیتی
اگه تنظیماتت شامل رمز یا اطلاعات حساس هستن، بهتره دسترسی فایل رو محدود کنی:
chmod 600 /mnt/UDISK/configs/myapp.conf
---
🎯 جمعبندی کاربردی
پارتیشن UDISK بهترین جا برای ذخیرهسازی تنظیمات، لاگها، و دادههای دائمی در بردهای T113-S3 هست. با چند دستور ساده میتونی فایل بسازی، محتوا بنویسی، و بعد از هر بوت دوباره بخونی. این روش کاملاً پایدار و امنه و توی پروژههای صنعتی هم استفاده میشه
🔐 آموزش سطح دسترسی فایلها در برد T113-S3 با لینوکس Tina
وقتی با بردهای نهفته مثل T113-S3 کار میکنی، خیلی مهمه بدونی چطور فایلهایی مثل تنظیمات یا لاگها رو طوری بسازی که فقط برنامهات بتونه بخونه یا تغییر بده. مخصوصاً وقتی از پارتیشن UDISK استفاده میکنی که قابل نوشتن و پایدار هست، باید حواست به امنیت فایلها باشه
لینوکس برای کنترل دسترسی به فایلها از سیستم permission استفاده میکنه. هر فایل سه سطح دسترسی داره: مالک فایل، گروه فایل، و سایر کاربران. هرکدوم از اینها میتونن اجازهی خواندن، نوشتن یا اجرا داشته باشن
مثلاً وقتی اینو میبینی:
یعنی مالک فایل میتونه بخونه و بنویسه، گروه فقط میتونه بخونه، و سایر کاربران هم فقط میتونن بخونن
برای تغییر این سطح دسترسی از دستور
این دستور یعنی فقط مالک فایل میتونه بخونه و بنویسه، و هیچکس دیگهای نمیتونه فایل رو ببینه یا تغییر بده
عدد 600 یعنی:
مالک: خواندن و نوشتن
گروه: هیچ دسترسی
سایر کاربران: هیچ دسترسی
اگه فایل تنظیماتت شامل رمز وایفای یا اطلاعات حساس باشه، این سطح دسترسی خیلی مهمه چون جلوی دسترسی ناخواسته رو میگیره
برای دیدن سطح دسترسی فعلی فایل، اینو بزن:
خروجی باید چیزی مثل این باشه:
یعنی فقط کاربر root میتونه فایل رو بخونه و بنویسه
اگه برنامهات با کاربر دیگهای اجرا میشه، باید مالک فایل رو تغییر بدی. مثلاً:
با این تنظیمات، کاربر
این روشها باعث میشن فایلهای تنظیماتت هم امن باشن، هم پایدار، و هم فقط توسط برنامهات قابل استفاده باشن
وقتی با بردهای نهفته مثل T113-S3 کار میکنی، خیلی مهمه بدونی چطور فایلهایی مثل تنظیمات یا لاگها رو طوری بسازی که فقط برنامهات بتونه بخونه یا تغییر بده. مخصوصاً وقتی از پارتیشن UDISK استفاده میکنی که قابل نوشتن و پایدار هست، باید حواست به امنیت فایلها باشه
لینوکس برای کنترل دسترسی به فایلها از سیستم permission استفاده میکنه. هر فایل سه سطح دسترسی داره: مالک فایل، گروه فایل، و سایر کاربران. هرکدوم از اینها میتونن اجازهی خواندن، نوشتن یا اجرا داشته باشن
مثلاً وقتی اینو میبینی:
-rw-r--r--
یعنی مالک فایل میتونه بخونه و بنویسه، گروه فقط میتونه بخونه، و سایر کاربران هم فقط میتونن بخونن
برای تغییر این سطح دسترسی از دستور
chmod
استفاده میشه. مثلاً:chmod 600 /mnt/UDISK/configs/myapp.conf
این دستور یعنی فقط مالک فایل میتونه بخونه و بنویسه، و هیچکس دیگهای نمیتونه فایل رو ببینه یا تغییر بده
عدد 600 یعنی:
مالک: خواندن و نوشتن
گروه: هیچ دسترسی
سایر کاربران: هیچ دسترسی
اگه فایل تنظیماتت شامل رمز وایفای یا اطلاعات حساس باشه، این سطح دسترسی خیلی مهمه چون جلوی دسترسی ناخواسته رو میگیره
برای دیدن سطح دسترسی فعلی فایل، اینو بزن:
ls -l /mnt/UDISK/configs/myapp.conf
خروجی باید چیزی مثل این باشه:
-rw------- 1 root root 78 Sep 8 10:59 myapp.conf
یعنی فقط کاربر root میتونه فایل رو بخونه و بنویسه
اگه برنامهات با کاربر دیگهای اجرا میشه، باید مالک فایل رو تغییر بدی. مثلاً:
chown myuser:myuser /mnt/UDISK/configs/myapp.conf
chmod 640 /mnt/UDISK/configs/myapp.conf
با این تنظیمات، کاربر
myuser
میتونه فایل رو بخونه، ولی بقیه نمیتونناین روشها باعث میشن فایلهای تنظیماتت هم امن باشن، هم پایدار، و هم فقط توسط برنامهات قابل استفاده باشن