/ut-linux-guide

GNU General Public License v3.0GPL-3.0

GNU/Linux

فهرست مطالب

مقدمه + تاریخچه ریز

آقای ریچارد استالمن سیستم‌عامل GNU رو در سال ۱۹۸۵ منتشر کرد که هدف اصلی این پروژه گسترش سیستم‌عاملی در راستای ارزش‌های نرم‌افزار آزاد و احترام به حریم خصوصی و آزادی کاربر بود. ایشون بنیاد نرم افزار آزاد هم بنیان‌گذاری کرده و به علاوه پروژه‌هایی از قبیل GCC و Emacs هم کلید زده. سیستم عامل گنو همون طور که از اسم مخففش پیداست (GNU’s not unix) سیستم‌عاملی مشابه سیستم عامل Unix هست و از فلسفه های مشابه اون در منطق اجرای برنامه ها پیروی می‌کنه. در سال ۱۹۹۱ هم یک دانشجوی فنلاندی در زمان آقای لینوس توروالدز که الان پشت پروژه هایی همچون گیت هم هست، از ابزارهای توسعه نرم‌افزار گنو استفاده کرد و کرنل لینوکس رو توسعه داد و لایسنس آزاد هم براش قرار داد. بعد از این قضیه این کرنل در پروژه گنو به عنوان کرنل اصلی سیستم‌عامل استفاده شد و امروزه به‌خاطر راحتی و خوش‌اسم بودن به جای سیستم عامل گنو/لینوکس بیشتر با اسم لینوکس بهش اشاره میشه.

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/stallman.jpg

عکس آقای استالمن و ژست دختر کشش

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/torvalds.jpg

عکس آقای توروالدز در دوران طفولیت

سیستم عامل Unix

یونیکس امروزه به خانواده‌ای از سیستم‌عامل‌های چند کاربره گفته می‌شود که برگرفته از سیستم‌عامل اصلی Unix که در سال ۱۹۶۹ در مرکز تحقیقات Bell Labs (که الکساندر گراهام بل افتتاح کرده بود و چند مرحله دست به دست شده و آخرین تغییرش خریده شدن توسط Nokia در سال ۲۰۱۶ بوده، و بسیاری از پروژه‌های مهم نرم‌افزاری اونجا کلید خورده) توسط دنیس ریچی و کن تامپسن، که دو طراح زبان C هم هستند، توسعه‌اش آغاز شد. که هدف اولیه آن ایجاد محیطی مناسب برای توسعه نرم‌افزار برای برنامه نویس ها بود.

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/thompson-ritchie.jpg

عکس آقایان ریچی و تامپسن (تامپسن فرد نشسته پشت میز است)

قدم اول

طبق طبیعتی که این پروژه داره و نرم‌افزار آزاد هست، یه دو راهی که چه عرض کنم، هزار راهی اول کار جلوی کاربر هست که کدوم توزیع رو نصب کنه. یه کلیتی از توزیع های لینوکس رو میشه توی سایت distrowatch ببینید. توصیه من اینه که توزیع ها مخصوصا توزیع های just works مثل اوبونتو و لینوکس مینت و پاپ او اس و … همشون در باطن عین همن و فرقی نداره کدوم رو نصب کنید. مهم محیط میز کاره (Desktop Environment) که پروژه های متنوعی از جمله gnome، kde، xfce، cinnamon و تعداد کثیر دیگه ای موجوده. این اسامی که گفتم رو جستجو کنید محیطش رو ببینید. ببینید با کدوم بیشتر حال می‌کنید و نسخه از توزیع‌های بالا که گفتم رو با اون محیط نصب کنید. مثلا kubuntu اوبونتو همراه با kde هست. نصب هم ویدیو های زیادی روی اینترنت هست که نصبش رو آموزش میدن و به مراتب از نصب ویندوز ساده‌تره با یه جستجوی ساده مثل “install filan distro on virtualbox” می‌تونید یاد بگیرید و انجام بدید و برید سراغ مراحل بعد و آموزش استفاده. چون اوبونتو پر نصب ترین توزیعه در ادامه بیشتر توضیحاتی که می‌دم در محیط اوبونتو خواهد بود ولی با یه سری تغییرات یا حتی بدون تغییرات قابل تعمیم به سایر توزیع‌ها است.

چند نما از محیط‌های مختلف میز کار

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/cinnamon-desktop.png

Cinnamon

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/gnome.jpg

Gnome

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/kde-plasma-desktop.jpg

KDE Plasma

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/xfce.png

XFCE

قدم صفرم

تو این هدینگ می خوام دلایلی رو بگم که یک نفر نباید لینوکس بریزه:

  • خیلی به گیمینگ می‌پردازه. (البته آپشن ماشین مجازی رو داره یا می تونه رو یه لپتاپ دیگه ای بریزه)، شرکت valve خیلی داره رو گیمینگ رو لینوکس سرمایه‌گذاری می کنه و سرویس هایی مثل steam و lutris و تعداد کثیری بازی موجوده ولی بازم هنوز با ویندوز فاصله معنی داری داره.
  • ارادت و نیاز مبرم به برنامه‌های خاص که فقط نسخه ویندوز یا مک دارن. البته این مساله هست که برنامۀ جایگزین روی لینوکس زیاده ولی برنامه هایی مثل Adobe Suite اگه خیلی بهشون عادت دارید و نمی تونید یه workflow جدید یاد بگیرید. یا مثلا 3D Max و Katia و اینجور چیزا. در حوزه توسعه نرم افزار تنها IDE های معروفی که می دونم روی لینوکس موجود نیست Visual Studio و Xcode هستن (VSCode روی لینوکس هست).
  • حوصله یاد گرفتن مهارت جدید و یا گذروندن یه learning curve یکی دو هفته ای رو نداشته باشه.
  • کامپیوترتون برای خودتون نباشه و کس دیگه ای هم قراره ازش استفاده کنه. تو این حالت هم از ماشین مجازی استفاده کنید.
  • لپتاپ های مک که SOC های جدید اپل (M1) رو دارن دارید. قراره پشتیبانی اینا به کرنل اضافه بشه تا جایی که می‌دونم ولی فعلا ساپورت نشدن.

قدم نیمم

تو این هدینگ دلایلی رو می‌گم که چرا یه نفر خوبه لینوکس بریزه:

  • در حوزه توسعه نرم افزار خیلی کارش راحت تر می‌شه و به طور کلی آشنایی با فلسفه Unix باعث می‌شه برنامه نویس بهتری بشه.
  • اکثر سرور های عالم روشون لینوکس نصبه پس اگه بخواید وارد حوزه شبکه بشید یا توی دیتا سنتری جایی کار کنید نیاز به آشنایی با لینوکس دارید.
  • دلیل وجود لینوکس اول از همه چیز احترام به آزادی و حریم خصوصی کاربره پس این دلیل به خودی خودش برای ترغیب به نصب لینوکس کمک می‌کنه.
  • میم شده و همه دوستاتون دارن لینوکس میریزن پس تو هم بریز که از قافله عقب نمونی. (چون برخی از نکات مثبتش تا استفاده نکنید دستتون نمی‌یاد این روش peer pressure در این موارد زیاد بکار می‌آد حتی کاربران توزیع هایی مثل Arch از این روش برای تبلیغ توزیعشون استفاده می‌کنن).

نصب

توضیح مراحل نصب کار به نسبت باطلیه چون سخت افزار ها فرق میکنه. ولی اگر سخت افزارتون خیلی جدید نباشه نباید به مشکل خاصی بخورید. توصیه می‌شه قبل نصب live mode بالا میارید و تست کنید (گزینه try ubuntu). فیلم آموزش نصب اوبونتو. اگر فیلم فارسی هم مد نظرتونه آقای صحرايی هم فیلم نصب اوبونتو روی ویرچوال باکس همراه مخلفاتی از bash و یک سکته ناقص رو پر کرده. انواع نصب:

  1. نصب به عنوان تنها سیستم عامل: برای این کار حتما اطلاعات روی کامپیوتر رو backup بگیرید. موقع نصب هم گزینه erase all disks رو بزنید.
  2. دوال بوت: نصب لینوکس همراه ویندوز و انتخاب بین اینها موقع بوت. برای اینکار به دوستی که بلده مراجعه کنید و خودتون سراغش نرید.
  3. ماشین مجازی: اجرای سیستم‌عاملی درون سیستم‌عامل میزبان. نرم‌افزار‌های استفاده شده Virtualbox، VMware و …

در ضمن بهتره ورژنی که می‌ریزید از بین ورژن های LTS باشه تا مشکلات کمتری براتون پیش بیاد

ملاحظات دوال‌بوت

خب وقتی دوال‌ بوت می‌کنین یه سری مغایرت‌ها بین دوتا سیستم عامل کار می‌دن دستتون.

درست کردن مشکل به‌هم ریختن زمان ویندوز و اوبونتو

sudo timedatectl set-local-rtc 1

نرم‌افزار‌ها

نرم‌افزار‌هایی که برای کار‌های روزمره‌تون ممکنه نیاز بشه:

  1. مرورگر: هر مرورگری روی ویندوز موجوده روی لینوکس هم موجوده. فقط نصب مرورگر‌هایی که انحصاری ان مثل Google Chrome و Edge سخت‌تره و کلا توصیه نمی‌شه. به حریم شخصی خودتون احترام بذارید و یا Firefox بریزید یا اگر مرورگر Chromium base می‌خواید Chromium و Brave موجودن.
  2. مشاهده و مدیریت گرافیکی فایل ها: روی Gnome که اوبونتو ازش استفاده می کنه Nautilus موجوده و انتخاب های دیگری هم هست اگر از File Manager روی اوبونتو خوشتون نیومده.
  3. پخش فیلم و موزیک: MPV، VLC، Rhythmbox و کلی برنامه دیگه برای این منظور موجوده.
  4. برای کار‌های طراحی مثلا شبیه PhotoShop گزینه‌هایی مثل GIMP و Krita هست.
  5. برای طراحی‌های سه بعدی یا حتی تدوین Blender هم موجوده که توی ویندوز و مک هم محبوبه. برای تدوین البته Kdenlive هم هست.
  6. به تعداد کثیری هم text editor موجوده از Vim و Emacs گرفته تا VSCode و Notepadqq که شبیه Notepad++ تو ویندوزه.
  7. برای office suite پروژه بسیار خوب LibreOffice به جای استفاده از Microsot Office موجوده که فایل های ساخته شده با آفیس مایکروسافت رو هم باز می‌کنه. نسخه ویندوز و مک LibreOffice هم موجوده.
  8. برنامه‌های یادداشت برداری: Joplin،‌Gnome Todo برای عملکردی مشابه One Note و Microsoft Tasks

این هم یه لیست خیلی خوب و جامع از نرم‌افزار‌های در دسترس بر روی لینوکس.

مقدمه ای بر ترمینال و شل

شل (shell) به برنامه تفسیرگری (interpreter) که درون commandline اجرا می‌شه گفته می‌شود که کاربر با وارد کردن دستور عملیات هایی که می‌خواهد را در آن اجرا کند. ترمینال (Terminal Emulator) به برنامه‌ای گفته می‌شود که در محیط گرافیکی اجرا شده و اجازه تعامل کاربر را با shell می‌دهد. در اوبونتو به طور پیشفرض از ترمینال Gnome-terminal استفاده می‌شود و شل Bash. برای باز کردن ترمینال از منوی برنامه‌ها می‌توانید اقدام کنید و یا از میان‌بر CTRL + ALT + T. صفحه ای جلوی شما باز می‌شود و در Shell prompt معمولا اطلاعاتی قبیل نام کامپیوتر، نام کاربر و آدرسی که در اون قرار دارید نمایش داده می‌شود (که خودتون می‌توانید این ها رو customize کنید). در ادامه تعدادی دستور در shell رو توضیح می‌دیم.

دستور man

این دستور که مخفف manual هست رو قبل هر دستوری بزنید documentation و راهنمایی و توضیح فلگ‌ها و آرگمان‌ها و مثال هایی از اون دستور رو براتون داخل ترمینال نشون میده. وقتی وارد buffer دستور man شدید با زدن کلید q هم ازش می‌تونید خارج بشید.

دستور cd

این دستور مخفف change directory است. بعد از آن آدرس پوشه ای که می‌خواهید بروید به آن می‌دهید و به آن پوشه می‌روید. دو نوع آدرس دهی داریم. یا می‌توانید از جایی که هستید نسبی relative آدرس بدید یا از پوشه root سیستم به صورت absolute آدرس دهی کنید.

دستور ls

این دستور فایل‌ها و پوشه‌های درون آدرس فعلی (یا آدرسی که بعد آن وارد می‌کنید) لیست می‌کند. فلگ های مختلفی هم دارد. برای مثال ls -al را بزنید و فرق آن را با ls بدون فلگ بررسی کنید.

دستور echo

با این دستور می‌تونید پیامی رو داخل ترمینال چاپ کنید. معمولا همراه با دستور‌های دیگه استفاده می‌شه.

دستور mkdir

با این دستور می‌توانید در آدرسی که در آن قرار دارید پوشه درست کنید. چیزی که بعد mkdir می‌نویسید نام پوشه است.

دستور touch

با این دستور می‌توانید فایل درست کنید که اول کار خالی خواهد بود.

دستور rm

با این دستور می‌توانید فایل یا پوشه رو حذف کنید. برای حذف پوشه از فلگ r- استفاده کنید.

دستور mv

با این دستور می‌توانید فایل یا پوشه رو جابجا (cut) و rename کنید.

دستور cp

با این دستور می‌توانید فایل یا پوشه رو copy کنید به آدرس دیگری.

دستور cat

با این دستور می‌توانید محتوای فایل‌ها رو داخل ترمینال پرینت کنید.

دستور less

اگر با دستور less فایلی یا متنی رو مشاهده کنید، در صورت طولانی بودن اون فایل صفحه رو نگه می‌داره و بهتون قابلیت بالا پایین شدن در متن رو می‌ده. با q هم از بافرش خارج می‌شید.

دستور find

با این دستور درون آدرسی که هستید یا آدرسی که بهش می‌دهید می‌تونید برای نام خاصی جستجو کنید. از regex هم می‌تونید برای تعیین الگو استفاده کنید که اگر علاقه مند بودید خودتون راجع بهش در وب یا داخل man page همین دستور مطالعه کنید.

برای مطالعه بیشتر هم در باره شل می‌تونید به اینجا مراجعه کنید.

توصیه می‌شه با این دستور ها خودتون داخل ترمینال بازی کنید تا کم کم ملکه ذهنتون بشه. مثلا یه سری کار‌ها رو به جای استفاده از file manager گرفیکی با ترمینال انجام بدید.

نصب نرم‌افزار

به طور کلی روش نصب نرم‌افزار روی لینوکس با ویندوز متفاوته که البته این از نقاط قوت اصلی این سیستم عامل هست. دیگه نیازی نیست مثل ویندوز از اینترنت فایل exe رندم دانلود کنید و رولت روسی بازی کنید که آیا ویروسی هست یا نه. روی اوبونتو یک Software Center گرافیکی هست که برای اول کار اگر هنوز دستتون توی ترمینال راه نیفتاده اکثر پکیج‌های موجود رو می‌تونید از روی اون به حالتی شبیه نصب برنامه از روی PlayStore روی موبایل نصب کنید. توزیع‌های لینوکس خودشون هم Package Manager مخصوص خودشون رو دارن که از مخازن نرم‌افزار‌های موجود اون توزیع که توسعه دهنده هاش آزمایش کردن و تایید کردن روی سیستم شما نرم‌افزار نصب می کنه. اتفاقی که پشت پرده می افته پیچیده‌تر از این حرفاست و توزیع های مختلف از Package Manager های مختلف و فلسفه‌های مختلفی بعضا برای توزیع نرم افزار استفاده می‌کنن ولی خب همین توضیحات داده شده برای اینکه اولا کار آدم راه بیفته کفایت می کنه. Ubuntu چون Debian based هست (Debian هم یه توزیع لینوکسه که بعد ها احتمالا سراغش برید) از apt استفاده میکنه. توضیح کتابی دستور apt اولش ممکنه گیج‌کننده باشه برای همین یه چند تا مثال ازش می‌زنیم خودتون وقتی باهاش دوست شدید بیشتر راجع بهش بخونید.

یه چند تا مثال

ترمینال رو باز کنید. یا از طریق منوی برنامه ها یا توی اوبونتو با کلید‌های CTRL + ALT + T.

دستور بروزرسانی کامل سیستم

sudo apt update && sudo apt upgrade

داخل گیومه این رو هم بگم که قبل دستوری sudo بزنید یه چیزی مشابه Run as Admin روی ویندوزه (اصلا شبیه نیست ولی فعلا توضیح بهتری ندارم) و ازتون پسورد خواهد خواست بعد زدن این دستور. اکثر اوقات هم داخل توزیع ها وقتی داخل ترمینال پسورد رو وارد میکنید تعداد کاراکتراشو برای مسائل امنیتی نشون نمی‌ده (فکر نکنید کیبوردتون رو نمی‌خونه). و از جاهایی که sudo به کار میاد برای حذف و اضافه نرم افزار و بروزرسانی سیستم هست.

دستور نصب نرم افزار

sudo apt install <package_name>

به جای package اسم پکیج درخواستی‌تون رو بزنید. مثلا برای نصب Htop از دستور زیر استفاده کنید. Htop یه سیستم مانیتوره توی ترمینال (مشابه Task Manager)

sudo apt install htop

دستور حذف نرم افزار

sudo apt remove <package_name>

دستور جستجوی نرم افزار

برای اینکه ببینید اسم دقیق پکیج یه نرم‌افزار چیه و آیا اصلا توی مخازن دیفالت apt موجوده یا که خیر

apt search <package_name>

دقت کنید که اینجا نیازی به sudo نداریم.

مشاهده لیست پکیج های نصب شده

apt list --installed

فعلا همین دستور ها برای شروع کار کافیه.

اسفاده از Synaptic

روی سیستم‌هایی که از apt استفاده میکنن synaptic package manager هم موجوده که یه چیزی بین حالت گرافیکی و حالت CLI هست. از اون هم برای حذف و اضافه نرم‌افزار می تونید استفاده کنید. توی لیست نرم‌افزار هاتون Synaptic باید موجود باشه.

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/synaptic.jpg

نمایی از Synaptic UI

نصب VSCode و یا هر پکیج دیگری از طریق snap

به دلایلی که نمی‌دونم چرا VSCode توی مخازن اصلی اوبونتو و دبیان موجود نیست. برای همین برای نصبش یه راه روی اوبونتو پیشنهاد می‌دم. (تنها راه نیست) ترمینال رو باز کنید و دستور زیر رو بزنید.

sudo snap install --classic code

خودم خیلی با snap دوست نیستم ولی خب راه های دیگه که بود برای اول کار یخورده پیچیده بود و بچه ها اکثرا به VSCode برای کار هاشون نیاز دارن. پایینتر روشی که خودم انتخاب می‌کردم رو گفتم. آرگمان classic هم برای سایر پکیج ها نیاز نیست.

بروزرسانی پکیج‌ها از طریق Snap

sudo snap refresh <package>

برای بروزرسانی همه پکیج‌های نصب شده از این طریق

sudo snap refresh

پاک کردن پکیج Snap

با این دستور:

sudo snap remove --purge <package_name>

پکیج منیجر Nix

پروژه NixOS خودش یه توزیع لینوکسه و نکته مثبتی که داره اینه که پکیج منیجر nix قابل استفاده در تمام سیستم های Unixlike قبیل MacOs، GNU/Linux و BSD هست. خوبی دیگش اینه پکیج ها به طور کانتینریزه شده ارائه می‌شن و قابلیت برگشتن به Generation های قبلی از سیستم رو میده. برای اطلاعات بیشتر به سایت رسمی پروژه مراجعه کنید. اما دلیلی که ما می‌خوایم از nix استفاده کنیم اینه که دبیان بدلیل استفاده اصلیش که توی سرور ها هست نیاز به stable بودن داره. برای همین بسیاری از پکیج ها به طور رسمی ارائه و ساپورت نمی‌شن (مخصوصا پکیج های مورد نیاز در دسکتاپ) و یا دیر به دیر آپدیت و بروزرسانی می‌شن. شرکت اصلی پشت اوبونتو ، Canonical، برای این مشکل SnapCraft رو درست کرده. ولی خب همون طور که بالاتر گفتم خیلی Snap رو دوست ندارم و انتقاد های زیادی بهش وارد شده و جایی غیر از اوبونتو ندیدم ازش استفاده بشه و خیلی قابل تعمیم به سایر سیستم های Unixlike نیست بر خلاف nix. البته nix در توزیع های Arch Based به دلیل وجود AUR (که فعلا راجع بهش توضیح نمی‌دم در عالم دبیان داریم به سر می‌بریم) نیاز نمی‌شه. در ادامه راه نصب و فعال سازی nix و بعد اون نصب و حذف نرم افزار از طریق اون رو آموزش می‌دم. رو این نکته تاکید کنم که nix جایگزین خوبی برای Snap هست نه apt پس اگر پکیجی توی apt وجود داره نصبش از اون طریق به جای nix ارجحیت داره.

راهنمای نصب و راه اندازی

ترمینال رو باز کنید. و دستور های زیر رو بزنید.

curl --proto '=https' --tlsv1.2 -sSfL https://nixos.org/nix/install -o nix-install.sh
chmod +x nix-install.sh
./nix-install.sh --daemon
systemctl enable nix-daemon.service
nix-channel --add https://nixos.org/channels/nixpkgs-unstable
nix-channel --update

شاید نیاز به Restart باشه بعد این دستور ها. دقت کنید اینها با موفقیت اجرا بشن. متاسفانه بعضی وقتا سر فیلترینگ اینجور چیزا ممکنه به مشکل بخورن.

نصب نرم افزار از طریق Nix

حالا برای مثال میخوایم VSCode رو که قبلا با Snap نصب کرده بودیم با Nix نصب کنیم. این کار برای هر پکیج دیگه ای هم قابل تعمیمه. به پنل جستوی پکیج Nix برید و پکیج مورد نظر رو جستجو کنید و بعد روی گزینه که می‌خواید کلیک کنید و روی زبونه nix-env و خط On Non NixOS برید و دستور اون رو کپی کنید و داخل ترمینال اجرا کنید. مشابه عکس پایین.

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/nix-example.png

و دستور داده شده رو توی ترمینال می‌زنیم. اینجا دستور نصب VSCode

nix-env -iA nixpkgs.vscodium

ممکنه برای اجرای این دستور sudo نیاز باشه. اگه گفت اجازه ندارید با sudo اجرا کنید. یه کلک هم بهتون بگم که برای اجرای دوباره آخرین دستور وارد شده می‌تونید “!!” بزنید. پس اگر بخواید همون دستور قبلی رو با sudo اجرا کنید لازمه بزنید:

sudo !!

یک موضوع دیگری هم که هست اینه من VSCode رو نصب نکردم و VSCodium رو نصب کردم به شما هم همین توصیه رو می‌کنم. VSCode با وجود اینکه اوپن سورسه ولی پدر سوختگی هایی از طرف مایکروسافت توی سورس کدش پیدا شده که توی VSCodium وجود نداره. برای اجراش هم یا از لیست GUI برنامه ها اجرا می کنید یا توی ترمینال دستور codium رو میزنید.

بروزرسانی پکیج های نصب شده از طریق Nix

nix-channel --update
nix-env -u ‘*

بازم ممکنه از شما sudo بخواد برای این دستور‌ها.

حذف پکیج

nix-env --uninstall <package_name>

اگر هم اهل آموزش فیلمی هستید این هم فیلم.

وصل شدن بی‌سیم تلفن همراه به کامپیوتر با KDEConnect

برای این کار پکیج KDEConnect رو بر روی سیستم‌تون نصب کنید. اپلیکیشن KDEConnect برای اندروید هم روی موبایلتون نصب کنید. از اینکه نسخه IOS داره یا نه اطلاعی ندارم. حواستون باشه که تلفن همراه و کامپیوترتون هر دو به یک شبکه wifi متصل باشند. یا که به HotSpot گوشیتون با کامپیوتر متصل بشید. بعد این برنامه KDEConnect رو هم روی گوشی و هم روی کامپیوتر اجرا کنید. بعد یه چند ثانیه روی صفحه برنامه اسم دستگاه های متصل به شبکه دیده میشه. اگر اینطور نشد، صفحه رو رفرش کنید و به امید خدا درست می‌شه. من که تا حالا باهاش به مشکل قطعی ای نخوردم. از یکی از دستگاه ها درخواست pair شدن بدید و توی دستگاه دیگه درخواستی که میاد رو تایید کنید. تبریک می‌گم دو دستگاه رو به هم وصل کردید. حالا می‌تونید دو طرفه فایل انتقال بدید. اعلان های دو دستگاه به هم انتقال پیدا می‌کنه. همچنین می‌تونید کلیپ بورد یه دستگاه رو با دیگری به اشتراک بذارید. با KDEConnect دو گوشی هم می‌تونید به هم به روش مشابهی به صورت بی سیم متصل کنید. با اینکه پشت پرده این برنامه احتمالا خیلی چیز عجیب غریبی نباشه و با دستور SFTP یا مشابهش کار بکنه ولی خب normie friendly هست و کار آدم رو راه میندازه.

آموزش ویم

ویم یک ویرایشگر متن خیلی قدرتمندیه. و توی لینوکس معمولا حتی اگر باهاش دوست نباشید، هر از گاهی کارتون بهش میفته و یه کلیتی بلد باشید که چطور کار می‌کنه بد نیست. داخل این ویدیو یه توضیحات ریزی راجع بهش دادم. پکیج NeoVim هم جدیدا خیلی سر و صدا کرده و یه ارتقا هایی روی ویم داده ولی خب نمی‌شه گفت که خیلی از ویم بهتره. ولی به دلایلی من خودم NeoVim رو ترجیح میدم. یکیش اینه که دیفالتش بهتر کانفیگ شده و دیگری هم اینه که vimscript هم ساپورت می‌کنه و برای اینکه از ویم به نیو‌ویم مهاجرت کنید کار خاصی نباید بکنید. حالا اگر بخواید به طور حرفه ای از NeoVim برای کار های ویرایش متنتون استفاده کنید، به نظرم Kickstart پروژه تمیزیه ولی خب بدیش اینه اول کار خودتون نمی‌فهمید چطور کار می‌کنه. تا جایی که دیدم با lua کانفیگ کرده که می‌تونید یاد بگیرید و وقتی حرفه ای تر شدید خودتون NeoVim رو شخصی‌سازی کنید. من lua بلد نیستم پس سراغ Kickstart نمی‌رم فعلا ولی اگر کسی بلد بود می‌تونه آموزشش رو درست کنه و من اینجا قرار بدم.

یه محیط توسعه جمع و جور با Neovim و Vundle

اول کار پکیج neovim رو نصب کنید. برای اطلاع از قابلیت‌های بیشتر Vundle به سایتشون مراجعه کنید. من حالا یه توضیح کوتاهی می‌دم. اول مخزن گیت Vundle رو روی پوشه کانفیگ نیو‌ویم با دستور زیر clone کنید. اگر git رو ندارید پکیجش رو نصب کنید.

#Create ~/.config folder and ~/.config/nvim/ if they don't exist
git clone https://github.com/VundleVim/Vundle.vim.git ~/.config/nvim/bundle/Vundle.vim

فایل init.vim رو باز کنید. (یا درست کنید) و محتویات زیر رو درونش قرار بدید.

syntax on
set ruler
set number relativenumber
set tabstop=4
set softtabstop=4
set expandtab
set shiftwidth=4
set autoindent
set smartindent
set cindent
set laststatus=2

set nocompatible
filetype off
set rtp+=~/.config/nvim/bundle/Vundle.vim

call vundle#begin()
    "your plugins will appear here
call vundle#end()
filetype plugin indent on
set noshowmode


inoremap " ""<left>
inoremap ' ''<left>
inoremap ( ()<left>
inoremap [ []<left>
inoremap { {}<left>
inoremap {<CR> {<CR>}<ESC>O
inoremap {;<CR> {<CR>};<ESC>O

پلاگین های ویم رو می‌تونید از سایت VimAwesome جستجو کنید و سینتکس نصب برای هر پلاگین داخل vundle هم گفته شده که اون خط رو باید بین دو خط call توی init.vim اتون اضافه کنید و دفعه بعدی که ویم رو باز کردید :PluginInstall رو بزنید تا پلاگین جدیدتون اضافه بشه این کانفیگ فعلا یه سری sensible defaults رو بهتون می‌ده. اما پلاگینی رو نصب نمی‌کنه.

استفاده از config بزرگان در Vim

با این کار تا مدت خوبی نمی‌تونید بفهمید چه جوری خودتون ویم رو کانفیگ کنید ولی خب یه کانفیگ همه چی تموم و کاربردی خواهید داشت. این کانفیگ یکی از محبوب ترین‌ها روی گیتهابه.

نحوه فعالسازی: به پوشه HOME برید (با دستور cd خالی) و دستورات زیر رو اجرا کنید. دقت کنید که git نیازه.

git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh

الان دیگه اگر ویم رو باز کنید با تنظیمات جدید اجرا می‌شه.

اضافه کردن Desktop Entry

اینجا می‌تونین از پکیج alacarte استفاده کنین، کار باهاش به این صورته که می‌تونین برای یه دستور اسم و آیکن تعریف کنین و از اون به بعد اون دستور وارد منوی برنامه‌هاتون میشه. با این روش برای اسکریپت‌های شخصی‌تون می‌تونید لانچر درست کنید. پکیج‌هایی هم که با nix نصب می‌کنید براشون روی گنوم آیکونی قرار داده نمی‌شه. با این روش یا روش بعدی می‌تونید دسکتاپ انتری درست کنید و اون مشکل هم برطرف کنید. یا می‌تونید برنامه‌هایی رو که نصب دارید با آرگمان های متفاوتی اجرا کنید.

راه غیر soydev

خودتون میتونید دستی فایل‌هایی با extension دسکتاپ درست کنید و تعیین کنید که با اجرای اون‌ها چه دستوراتی باید اجرا بشه. این صفحه تمام حالات مختلفی که می‌تونید از این قابلیت استفاده کنید تشریح داده. اگر ترسناک بنظر می‌رسه می‌تونید از همون alacarte استفاده کنید.

شخصی سازی

اگر از محیط دسکتاپی غیر از گنوم استفاده می‌کنید خودتون جستجو کنید. تا جایی که من دیدم شخصی سازی گنوم دنگ و فنگ بیشتری از باقی DE ها داره. پکیج gnome-tweaks رو نصب کنید. انواع تم‌های در دسترس رو بیشتر به جستجو در اینترنت بسنده کنید ولی سایت gnome-look انواع تم‌ها و آیکون پک‌ها رو داره. برای grub هم (بوت لودر سیستم) می‌تونید تم بریزید که هر دفعه روشن می‌کنین دستگاه رو اون صفحه نحس سیاه نیاد جلوتون. (من خودم صفحه سیاه رو ترجیح می‌دم) پروسه ریختن تم هم کار عجیبی نیست و بازم اگر سرچ کنین بالاخره یه جا نوشته، خود گنوم لوک هم یه پکیج ocs-url داره که کار رو خیلی آسون می‌کنه. مثلا برای ریختن تم شل این لینک محتوای معتبری داره. نکته: اگر هم موقع ریختن به خطا خوردید (که مثلا تو آموزش این سایته می‌خورین) متن ارور رو حتما بخونین چون مثلا تو این مورد خودش نحوه رفعش هم گفته. تعداد زیادی هم افزونه برای گنوم موجوده که تو اینجا می‌تونید مشاده کنید. با gnome tweaks می‌تونید تم ها و افزونه‌های نصب شده هم مدیریت کنید و خودش هم تنظیمات بیشتر رو در اختیارتون می‌ذاره. اگر هنوز بعد این‌ها احساس می‌کنید قابلیت های customize کردن به اندازه کافی ندارید، باید سراغ dconf editor برید که از حوزه دانش بنده خارجه و خودتون باید کار باهاش رو یاد بگیرید.

وصل شدن به اینترنت آزاد

این بخش پر چالش ترین بخش برای توضیح خواهد بود بدلیل اینکه سخته روش یکتایی پیشنهاد داد که همیشه کار کنه. مخصوصا با خرج و تلاشی که دولت برای فیلترینگ داره انجام می‌ده. ولی خب تلاشم رو می‌کنم که چند تا از راه های بهترش رو بهتون یاد بدم.

نصب VPN

روی لینوکس هم Client هایی برای بسیاری از VPN ها از جمله Express، Mullvad، Proton، Riseup، Calyx و تعداد کثیر دیگه‌ای موجوده. کلاینت برای اجرای سرور‌های Shadowsocks هم از جمله Outline و Clash موجودن و خیلیا هم با اونا وصل می‌شن.

مرورگر TOR

پروژه TOR که هدف اصلیش حفظ حریم شخصی کاربرا و دور زدن فیلترینگ‌های سنگینه، یکی از پر استفاده ترین ابزار‌ها بین افراد نیازمند حفظ هویت و Anonymization مثل سوت‌زن ها و حتی خلافکار هاست. اینجا راحت‌ترین روش رو برای اتصال به TOR آموزش می‌دم.

  • به وبگاه رسمی پروژه برید و نسخه tar.xz مخصوص لینوکس رو دانلود کنید. (متاسفانه سایتش فیلتره اگر با کامپیوتر نمی‌تونید با تلفن همراه برید یا از دوستی فایل compressed رو بگیرید)
  • برای تمیزی کار یه پوشه تحت عنوان applications در پوشه خانه کاربرتون درست کنید و فایل دانلود شده رو به اونجا انتقال بدید.
  • ترمینال رو باز کنید به پوشه applications برید و فایل فشرده رو با دستور زیر باز کنید. (دقت کنید که نام فایل tar ای که دانلود می‌کنید ممکنه با اسمی که در دستور پایین آمده متفاوت باشد)
tar -xvf tor-browser-linux64-12.0.2_ALL.tar.xz
  • برای باز کردن مرورگر دستورات زیر را بزنید.
cd ~/applications/tor-browser_en-US/
./start-tor-browser.desktop

اگر می‌خواهید که از ترمینال مرورگر رو اجرا نکنید باید با یکی از روش هایی که “داخل اضافه کردن Desktop Entry” گفتیم برای مرورگر تور لانچر درست کنید.

  • حتما از پل snowflake استفاده کنید. در غیر این صورت وصل نمی‌شه. داخل تنظیمات خود مرورگر تو بخش Connections و بعد Bridges گزینه Select a built-in bridge رو بزنید و از بین گزینه ها snowflake رو انتخاب کنید.
  • تو این مرحله پس از اتصال مرورگر تور داخل خود مرورگر می‌تونید به سایت‌های فیلتر مراجعه کنید.

تونل کردن پروکسی

از این روش می‌تونید برای تونل کردن ترافیک‌تون از طریق تور استفاده کنید و یا هر پروکسی HTTPS یا SOCKS دیگه‌ای. مثلا اگر بخواید VPN روی موبایلتون رو با EveryProxy به اشتراک بذارید.

تونل کردن مرورگر (Firefox based/Chromium based)

افزونه ProxySwitchyOmega رو روی مرورگرتون نصب کنید. وارد تنظیمات افزونه بشید. تو بخش profiles رو گزینه New profile بزنید و آدرس پروکسی رو وارد کنید. مثلا بعد اینکه تور متصل شد آدرس پروکسیش localhost:9150 خواهد بود. مشابه تصویر زیر یک پروفایل به نام tor به پروفایل های ProxySwitchy اضافه کنید. و هر وقت بخواید بهش متصل بشید از آیکون افزونه که بالای مرورگر اضافه شده پروفایلتون رو از Direct به tor تغییر بدید و وقتی هم کارتون باهاش تموم شد برعکس.

https://github.com/erfan-mirshams/ut-linux-guide/blob/master/src/proxy-switchy.png

تونل کردن با proxychains

برای این کار پکیج proxychains رو نصب کنید. دستور زیر رو برای اضافه کردن پروکسی تور یا هر پروکسی دیگری به لیست proxychains اجرا کنید. (بدیهتا آدرس پروکسی غیر تور با دستور پایین متفاوت خواهد بود. حواستون به تعیین نوعش هم باشه)

#switch to the root user
sudo su
#modify the address and proxy protocol accordingly. The below line is using the TOR proxy
echo "socks5 127.0.0.1 9150" >> /etc/proxychains.conf
#swith back from the root user
exit

برای استفاده‌اش هم اگر قبل دستوری داخل ترمینال proxychains رو بزنید اتصالات اون برنامه رو تونل می‌کنه. اگر هم بخواید یه ترمینال تونل شده داشته باشید با دستور:

proxychains -qt gnome-terminal

این کار البته توصیه نمی‌شه.

برای مثال به جای استفاده از افزونه می‌تونید با دستور:

proxychains firefox &

یک مرورگر تونل شده داشته باشید.

نکته: آخر دستوری اگر یک & بذارید اون دستور رو به نوعی detach می‌کنه و براش یه پراسس جدید تعریف می‌کنه و بعد زدن اون دستور می‌تونید از shell session ای که اجراش کردید دستور‌های دیگه ای هم بزنید.

برای مطالعه درباره قابلیت های proxychains به این مقاله مراجعه کنید.