۲۰ دستور لینوکس که هر برنامهنویس وب باید بلد باشه
🔺مقدمه
در دنیای توسعه نرم افزار و مهندسی نرم افزار، تسلط بر سیستم عامل لینوکس دیگر یک امتیاز اضافی نیست، بلکه یک ضرورت حیاتی است. تقریباً تمام سرورهای تولید (Production) در اینترنت، از سایت های کوچک شخصی گرفته تا غول های تکنولوژی مانند گوگل و آمازون، بر پایه لینوکس اجرا میشوند. برای هر برنامه نویس وب (Web Developer)، چه در حوزه فرانت اند که با ابزارهای بیلد کار میکند و چه در بک اند که مستقیماً با سرور تعامل دارد، آشنایی با محیط خط فرمان (CLI) لینوکس کلید موفقیت و افزایش بهره وری است.
اگر در حال یادگیری برنامه نویسی از طریق دوره های **نت کالج** هستید یا قصد دارید مسیر حرفه ای خود را در این حوزه دنبال کنید، شناخت دستورات پایه ای لینوکس میتواند تفاوت بین یک توسعه دهنده معمولی و یک مهندس نرم افزار حرفه ای را رقم بزند. در این مقاله جامع، به بررسی **۲۰ دستور لینوکس** میپردازیم که تسلط بر آن ها برای هر توسعه دهنده وب الزامی است.
🔺چرا تسلط بر دستورات لینوکس برای برنامه نویسان وب ضروری است؟
پیش از آنکه وارد لیست دستورات شویم، بیایید بدانیم چرا این مهارت چقدر اهمیت دارد. وقتی کد شما روی سرور میزبانی (Hosting) یا سرور ابری (Cloud) اجرا میشود، معمولاً رابط گرافیکی (GUI) در دسترس نیست. شما باید بتوانید فایل ها را مدیریت کنید، مجوزها (Permissions) را تغییر دهید، پروسه های در حال اجرا را کنترل کنید و مشکلات را از طریق لاگ ها (Logs) عیب یابی کنید. همه این کارها از طریق دستورات لینوکس انجام میشوند. عدم آشنایی با این دستورات باعث میشود وابستگی شما به تیم DevOps یا سرور ادمین ها افزایش یابد و فرآیند دیپلوی (Deploy) و دیباگ (Debug) کند و دشوار شود.
🔺مدیریت فایل ها و پوشه ها (File and Directory Management)
بخش اول و پایه ای هر کار با لینوکس، مدیریت فایل هاست. برنامه نویسان وب مدام در حال جابجایی، کپی و ایجاد فایل های کد هستند.
🔹 دستور `ls`( لیست کردن فایلها)
سادهترین و پرکاربردترین دستور برای مشاهده محتویات یک دایرکتوری است.
* **کاربرد:** مشاهده فایل ها و پوشه های موجود.
* **نکته حرفه ای:** از پرچم `-l` برای دیدن جزئیات (مجوزها، مالک، تاریخ ایجاد) و `-a` برای نمایش فایلهای مخفی با نقطه شروع مانند `.env` یا `.git` استفاده کنید. ترکیب آنها (`ls -la`) بسیار رایج است.
🔹 دستور `cd`( تغییر دایرکتوری)
برای حرکت بین پوشه ها استفاده میشود.
* **کاربرد:** ورود به پوشه پروژه، پوشه های سیستمی و غیره.
* **نکته:** برای بازگشت به دایرکتوری قبلی، از `cd -` و برای رفتن به خانه کاربر (Home) از `cd ~` استفاده کنید.
🔹 دستور `mkdir` (ایجاد دایرکتوری)
برای ساختن پوشه های جدید استفاده میشود.
* **کاربرد:** ساخت پوشه های پروژه، پوشه های asset یا پوشه های پیکربندی.
* **نکته:** با پرچم `-p` میتوانید چندین پوشه تو در تو را به صورت همزمان بسازید مثلاً `mkdir -p project/src/components`.
🔹 دستور `cp` (کپی کردن)
برای کپی کردن فایل ها یا پوشه ها استفاده میشود.
* **کاربرد:** بکاپ گرفتن از فایل های کد، کپی کردن فایل های پیکربندی.
* **نکته:** برای کپی کردن پوشه ها، باید از پرچم `-r` (recursive) استفاده کنید (`cp -r source dest`).
🔹 دستور `mv` (جابجایی یا تغییر نام)
این دستور هم برای جابجایی فایلها از یک پوشه به پوشه دیگر و هم برای تغییر نام فایل ها استفاده میشود.
* **کاربرد:** مرتب سازی فایل ها، تغییر نام فایلهای کد.
🔹 دستور `rm` (حذف فایل یا پوشه)
دستوری خطرناک اما ضروری برای حذف فایل ها.
* **کاربرد:** پاک کردن فایل های موقت (temp files) یا پروژه های قدیمی.
* **هشدار:** هرگز بدون احتیاط از این دستور استفاده نکنید. برای حذف پوشه ها نیاز به پرچم `-r` و برای نادیده گرفتن خطاها (در صورت نیاز) از `-f` استفاده میشود. همیشه قبل از حذف، محتویات را چک کنید.
🔹 دستور `touch` (ایجاد فایل خالی)
اگر میخواهید یک فایل جدید با نام خاصی ایجاد کنید بدون اینکه محتوایی داشته باشد، این بهترین گزینه است.
* **کاربرد:** ایجاد فایل های پیکربندی جدید، فایل های لاگ یا فایل های `.env`
🔺مشاهده و ویرایش محتوا (Viewing and Editing Content)
برنامه نویسان وب اغلب نیاز دارند فایل های پیکربندی مانند `nginx.conf` یا `docker-compose.yml` یا لاگ ها را بخوانند و ویرایش کنند.
🔹 دستور `cat` (اتصال و نمایش فایل)
محتویات یک فایل متنی را در ترمینال نمایش میدهد.
* **کاربرد:** خواندن سریع محتویات فایل های کوچک.
* **نکته:** برای فایل های بزرگ، استفاده از `cat` توصیه نمیشود زیرا صفحه را پر میکند.
🔹 دستور `less` (مشاهده صفحه به صفحه)
برخلاف `cat`، این دستور اجازه میدهد محتویات فایل های بزرگ را صفحه به صفحه و با قابلیت جستجو مشاهده کنید.
* **کاربرد:** خواندن فایل های لاگ بزرگ یا داکیومنتیشن های طولانی.
* **نکته:** با فشردن کلید `q` از حالت خروج میگیرید. با `/` میتوانید کلمه ای خاص را جستجو کنید.
🔹 دستور `nano` یا `vim` (ویرایشگر متن)
ویرایشگرهای متن خط فرمان هستند. `nano` برای مبتدیان ساده تر است، در حالی که `vim` بسیار قدرتمند اما دارای منحنی یادگیری شیب دار است.
* **کاربرد:** ویرایش فایل های کد، پیکربندی سرور و اسکریپت ها.
* **توصیه نت کالج:** یادگیری مقدماتی `nano` برای شروع سریع تر است، اما تسلط بر `vim` یک مهارت ارزشمند برای محیط های سروری است.
🔺جستجو و فیلتر کردن (Searching and Filtering)
وقتی با هزاران فایل و خط کد سروکار دارید، نیاز به ابزارهای جستجوی قدرتمند دارید.
🔹 دستور `grep` (جستجوی الگو)
یکی از قدرتمندترین ابزارها برای جستجوی متن در فایل ها.
* **کاربرد:** پیدا کردن ارورها در لاگ ها، جستجوی متغیرها در کد سورس.
* **نکته:** پرچم `-i` جستجو را حروف بزرگ/کوچک حساس نمیکند و پرچم `-r` جستجو را در تمام پوشه ها انجام میدهد.
🔹 دستور `find` (جستجوی فایلها)
برای یافتن فایل ها بر اساس نام، نوع، تاریخ ایجاد یا اندازه.
* **کاربرد:** پیدا کردن فایل های `.js` که بیش از ۱ مگابایت هستند، یا پیدا کردن فایل های تغییر یافته در هفته گذشته.
🔺مدیریت پروسه ها و مجوزها (Process and Permission Management)
کنترل منابع سرور و امنیت فایل ها بخش دیگری از کار روزانه یک توسعه دهنده است.
🔹 دستور `chmod` (تغییر مجوزها)
کنترل میکند که چه کسی میتواند فایل یا پوشه ای را بخواند، بنویسد یا اجرا کند.
* **کاربرد:** دادن مجوز اجرا به اسکریپت های پایتون یا شل، تنظیم مجوزهای صحیح برای وبسرور.
* **نکته:** اعداد ۷۷۷ بسیار خطرناک هستند. سعی کنید از مجوزهای حداقلی (Least Privilege) استفاده کنید.
🔹 دستور `chown` (تغییر مالکیت)
مالک فایل یا دایرکتوری را تغییر میدهد.
* **کاربرد:** وقتی نیاز است فایل های آپلود شده توسط کاربر وب سرور قابل دسترسی باشند، مالکیت باید به کاربر وب سرور (مثلاً `www-data`) تغییر کند.
🔹 دستور `ps` و `top` (مشاهده پروسهها)
برای دیدن پروسه های در حال اجرا و مصرف منابع (CPU/RAM).
* **کاربرد:** عیب یابی سایت های کند، تشخیص پروسه های گیر کرده (Zombie processes).
* **نکته:** `top` به صورت زنده (Real-time) نمایش میدهد، در حالی که `ps` یک عکس لحظه ای از وضعیت است.
🔹 دستور `kill` و `pkill` (توقف پروسهها)
برای توقف پروسههای غیرفعال یا مصرفکننده منابع.
* **کاربرد:** ریستارت کردن سرویسها، توقف فرآیندهای مسدود شده.
🔺شبکه و انتقال فایل (Networking and File Transfer)
ارتباط با سرورهای دور و مدیریت انتقال دادهها بخش جداییناپذیر توسعه وب است.
🔹 دستور `ssh` (دسترسی از راه دور)
برای ورود امن به سرورهای لینوکسی از راه دور.
* **کاربرد:** مدیریت سرورهای ابری، دیپلوی کد از طریق SSH.
* **نکته:** همیشه از کلیدهای عمومی/خصوصی (SSH Keys) به جای رمز عبور برای امنیت بیشتر استفاده کنید.
🔹 دستور `scp` (انتقال امن فایل)
برای کپی کردن فایل ها بین ماشین محلی و سرور راه دور (یا بین دو سرور راه دور) استفاده میشود.
* **کاربرد:** آپلود فایل های پروژه به سرور، دانلود فایلهای بکاپ.
🔹 دستور `curl` یا `wget` (دانلود و تست API)
ابزارهایی برای دانلود فایل ها یا ارسال درخواست های HTTP.
* **کاربرد:** دانلود پکیج ها، تست کردن APIهای RESTful، بررسی هدرهای پاسخ وب سرور.
* **نکته:** `curl` برای تست APIها بسیار محبوب است زیرا میتواند روشهای GET، POST و هدرهای سفارشی را شبیهسازی کند.
🔹 دستور `ping` (بررسی اتصال شبکه)
برای تست دسترسی به یک میزبان (Host) یا دامنه.
* **کاربرد:** بررسی اینکه آیا سرور مقصد آنلاین است یا خیر، عیب یابی مشکلات DNS یا اتصال شبکه.
🔺جمع بندی: قدم بعدی شما در مسیر حرفه ای شدن
تسلط بر این **۲۰ دستور لینوکس** نقطه شروع قدرتمندی برای هر برنامه نویس وب است. اما فراموش نکنید که لینوکس اقیانوسی از امکانات است. با تمرین روزانه، ترکیب این دستورات با پiping (`|`) و redirection (`>`) میتوانید اسکریپت های خودکار قدرتمندی بنویسید که کارهای تکراری را برای شما انجام میدهند.
سایت **نت کالج** با ارائه دوره های تخصصی برنامه نویسی،طراحی وب،شبکه و امنیت به شما کمک میکند تا نه تنها با دستورات، بلکه با مفاهیم عمیق تر لینوکس و نحوه مدیریت سرورها در محیط های واقعی آشنا شوید. برای شروع یادگیری و ارتقای مهارت های خود، پیشنهاد میکنیم سرفصل های دوره های لینوکس و DevOps ما را در سایت نت کالج بررسی کنید.
آیا شما از این دستورات بیشتر استفاده میکنید یا دستورات دیگری هم دارید که فکر میکنید ضروری هستند؟ نظرات خود را با ما در میان بگذارید.

دیدگاه ها (0)