Ninja Learn | نینجا لرن
1.26K subscribers
96 photos
36 videos
11 files
307 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

📄 Send me post: https://t.iss.one/NoronChat_bot?start=sec-fdggghgebe

👥 ɢʀᴏᴜᴘ: https://t.iss.one/+td1EcO_YfSphNTlk
Download Telegram
Boost Your Django DX (Adam Johnson) (Z-Library)-2.pdf
21.7 MB
اینم کتاب Boost your DjangoDX
امید وارم لذت ببرید :) ❤️

#️⃣ #book


🥷 CHANNEL | GROUP
18🔥3
کوکی‌کاتر خودمو زدم

میتونید با fastapi-cookiecutters یه پروژه FastAPI تمیز و آماده بسازین. و دیتابیس، Docker، هر چی بخوای اضافه می‌کنه

از PyPI میتونید دانلود کنید:

pip install fastapi-cookiecutters


تست کنین و بگین چطوره🚀

#️⃣ #package


🥷 CHANNEL | GROUP
👍10👎1🔥1
فرآیند بوت شدن سیستم های لینوکسی 🚀
خب توی این پست فرآیند بوت شدن سیستم هایی که از لینوکس استفاده میکنن رو بررسی میکنیم.

1️⃣ فاز اولیه: اجرا شدن فریمور (BIOS/UEFI)
وقتی دکمه‌ی پاور رو می‌زنی، اولین چیزی که اجرا می‌شه، BIOS (تو سیستم‌های قدیمی‌تر) یا UEFI (تو سیستم‌های جدید) هست. این قسمت سخت‌افزار رو بررسی می‌کنه و مطمئن می‌شه که قطعات اصلی (مثل رم، پردازنده و دیسک‌ها) درست کار می‌کنن.

تست اولیه: این مرحله به اسم POST (Power-On Self Test) شناخته می‌شه و اگه مشکلی باشه، مثلاً رم خراب باشه، معمولاً با یه سری بوق یا پیام خطا هشدار می‌ده.

پیدا کردن بوت لودر: بعد از تست سخت‌افزار، BIOS/UEFI دنبال دیسک قابل بوت می‌گرده (مثل SSD یا USB) و بوت‌لودر رو اجرا می‌کنه.

2️⃣ بوت‌لودر (GRUB یا systemd-boot)
بعد از اینکه دیسک بوت پیدا شد، بوت‌لودر (معمولاً GRUB) اجرا می‌شه. بوت‌لودر یه برنامه‌ی کوچیکه که وظیفه‌ی لود کردن کرنل لینوکس رو داره.

انتخاب سیستم‌عامل:
اگه چند تا سیستم‌عامل نصب کرده باشی (مثلاً لینوکس و ویندوز)، اینجا می‌تونی انتخاب کنی که کدوم یکی بوت بشه.

بارگذاری کرنل:
بعد از انتخاب سیستم‌عامل (یا بعد از چند ثانیه اگه گزینه‌ای انتخاب نشه)، بوت‌لودر کرنل لینوکس (فایل vmlinuz) رو بارگذاری می‌کنه.

3️⃣ بارگذاری کرنل و initramfs
اینجا کرنل لینوکس اجرا می‌شه و شروع به کنترل سخت‌افزار می‌کنه. اما چون هنوز فایل‌سیستم اصلی (Root) بارگذاری نشده، یه چیز به اسم initramfs وارد ماجرا می‌شه.

‏initramfs چیه؟
یه فایل موقتی که شامل درایورها و ابزارهای اولیه برای شناسایی و اتصال فایل‌سیستم اصلیه. به کرنل کمک می‌کنه که بتونه پارتیشن‌های دیسک رو بشناسه و مونت کنه.

4️⃣ مونت شدن روت و اجرای systemd
بعد از اینکه کرنل تونست به فایل‌سیستم اصلی دسترسی پیدا کنه، حالا سیستم آماده‌ی راه‌اندازی سرویس‌ها و بقیه‌ی چیزهاست.

ورود systemd:
تو اکثر توزیع‌های مدرن لینوکس، systemd اجرا می‌شه و وظیفه‌ی مدیریت سرویس‌ها و فرآیندهای سیستم رو به عهده داره.

راه‌اندازی سطح سیستم:
اینجا کلی سرویس اجرا می‌شن، مثل:
مدیریت شبکه (NetworkManager یا systemd-networkd)

مدیریت لاگ‌ها (journald)

راه‌اندازی محیط گرافیکی (GDM، SDDM یا LightDM)


5️⃣ نمایش صفحه‌ی لاگین
در نهایت، بعد از اینکه همه سرویس‌های لازم اجرا شدن، یه ترمینال لاگین (TTY) یا محیط گرافیکی دسکتاپ (مثل KDE Plasma یا GNOME) نمایش داده می‌شه و می‌تونی با یوزرنیم و پسورد وارد سیستم بشی.

جمع‌بندی:
1.‏ BIOS/UEFI اجرا می‌شه و سخت‌افزار رو بررسی می‌کنه.
2. بوت‌لودر (GRUB) کرنل لینوکس رو لود می‌کنه.
3. کرنل و initramfs فایل‌سیستم رو راه‌اندازی می‌کنن.
4.‏ systemd مدیریت سرویس‌ها رو انجام می‌ده.
5. صفحه‌ی لاگین نمایش داده می‌شه و سیستم آماده‌ی استفاده‌ست!

#️⃣ #linux #boot #kernel


🐧 CHANNEL | GROUP
👍10🔥1
Forwarded from Revisto/Tech (Revisto)
سلام سلام. من پروژه‌ای رو شروع کردم برای ترجمه‌ی آزاد مستندات و داکیومنت‌های رسمی پایتون به فارسی.
اگر این مسیر براتون جذابه و دوست دارید مشارکت کنید خیلی خوشحال میشم و ما نیاز داریم به این کامیونیتی برای ادامه و گسترش مستندات پایتون به فارسی.


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

طبق مستندات وقتی صفحه‌‌های tutorial‍, bugs, library/functions صددرصد ترجمه بشن میتونیم درخواست بدیم تا ترجمه‌مون بخشی از docs.python.org و عمومی بشه.
کاری که من کردم اینه که یک دور این صفحات رو با Google Translate ترجمه کردم و الان فقط نیاز دارن که هر بخش بازبینی (review) بشه.

ترجمه هم در سایت Transifex اتفاق میفته که توی ویدیو خیلی دقیق‌تر گفتم چجوری میشه شروعش کرد.


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

@RevistoTech
🔥8👍2
Revisto/Tech
Photo
ریا نباشه منم دارم داکیومنت FastAPI رو ترجمه میکنم 😁✌️ ( اگه وقت کنم توی این پروژه هم مشارکت می‌کنم)
18🔥5
خب خب خب Alembic 🧪

مروز می‌خوام درباره یه ابزار کاربردی تو دنیای پایتون حرف بزنم: Alembic اگه با دیتابیس کار می‌کنین و دنبال یه راه ساده برای مدیریت تغییراتش هستین، این پست برای شماست. بیاین با هم ببینیم Alembic چیه، چطوری کار می‌کنه و چرا باید ازش استفاده کنین.

🧠 Alembic چیه؟

Alembic یه ابزار متن‌باز (open-source) برای مدیریت مهاجرت‌های دیتابیس (database migrations) تو پایتونه. این ابزار بیشتر با SQLAlchemy (یه ORM معروف) جفت‌وجوره و بهتون کمک می‌کنه تغییرات ساختاری دیتابیستون رو (مثل اضافه کردن جدول، تغییر ستون یا حذف فیلد) به صورت خودکار و منظم مدیریت کنین. به جای اینکه دستی کوئری‌های SQL بنویسین و دیتابیس رو عوض کنین، Alembic این کار رو براتون ساده و خودکار می‌کنه.

فکر کنین یه جدول جدید به پروژه‌تون اضافه کردین یا یه ستون رو تغییر دادین؛ Alembic این تغییرات رو به یه فایل مهاجرت (migration script) تبدیل می‌کنه که می‌تونین هر وقت خواستین اعمالش کنین یا حتی برگردونین (rollback).

📚 Alembic چطوری کار می‌کنه؟

‏Alembic مثل یه مدیر پروژه برای دیتابیستونه. بیاین قدم‌به‌قدم ببینیم چطوری کار می‌کنه:

1⃣ نصب و راه‌اندازی:
اول با
pip install alembic

نصبش می‌کنین. بعد با دستور
alembic init نام اختیاری

یه پوشه برای تنظیماتش می‌سازین (معمولاً به اسم alembic).

2⃣ ساخت Migration:
وقتی مدل‌های SQLAlchemy‌تون رو تغییر می‌دین (مثلاً یه ستون به کلاس اضافه می‌کنین)، با دستور زیر Alembic تغییرات رو تشخیص می‌ده و یه اسکریپت Migration می‌سازه:

   alembic revision --autogenerate -m "اضافه کردن ستون جدید"

این اسکریپت دو تا تابع داره:
**‏upgrade()** برای اعمال تغییرات و

**‏downgrade()** ‏برای برگردوندنش.


3⃣ اعمال migration:
با دستور زیر تغییرات رو روی دیتابیس اعمال می‌کنین:

   alembic upgrade head


اگه بخواین برگردین به نسخه قبلی:

   alembic downgrade -1


4⃣ مدیریت نسخه‌ها:
‏ Alembic یه جدول به اسم alembic_version تو دیتابیستون می‌سازه و نسخه فعلی رو اونجا نگه می‌داره تا همیشه بدونین کجای کار هستین.

🚀 چرا Alembic به وجود اومد؟
قبل از ابزارهایی مثل Alembic، اگه می‌خواستین دیتابیستون رو تغییر بدین، باید خودتون کوئری‌های SQL می‌نوشتین و دستی اجرا می‌کردین. این چندتا مشکل داشت:

خطا:
یه اشتباه کوچیک تو کوئری می‌تونست دیتابیس رو به هم بریزه.

پیچیدگی:
تو پروژه‌های تیمی، هماهنگ کردن تغییرات دیتابیس بین اعضا سخت بود.

بازگشت پذیری:
اگه یه تغییر اشتباه می‌کردین، برگردوندنش یه کابوس بود.


Alembic اومد که:

اتوماسیون:
تغییرات رو خودکار تشخیص بده و اسکریپت
بسازه.

نسخه بندی:
تاریخچه تغییرات رو نگه داره و بتونه عقب و
جلو بره.

هماهنگی:
تو تیم‌ها همه بتونن با یه سیستم مشخص کار کنن.


🛠 یه مثال ساده

فرض کنین یه مدل Sqlalchemy دارین
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)

حالا می‌خواین یه ستون email اضافه کنین:

class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)

با دستور
 alembic revision --autogenerate -m "add email"

‏Alembic یه فایل می‌سازه که تغییرات رو اعمال می‌کنه بعد با
 alembic upgrade head 

دیتابیستون آپدیت می‌شه. به همین راحتی 😎

جمع‌بندی
Alembic یه ابزار قدرتمند و باحاله که مدیریت Migrations های دیتابیس رو تو پایتون به یه تجربه لذت‌بخش تبدیل می‌کنه. با Alembic دیگه لازم نیست نگران کوئری‌های خام یا هماهنگی تیمی باشین؛ همه‌چیز خودکار و منظمه. اگه با SQLAlchemy کار می‌کنین، حتماً یه امتحانش کنین و ببینین چقدر زندگی‌تون رو راحت می‌کنه.

#️⃣ #db #alembic #sqlalchemy


🥷 CHANNEL | GROUP
🔥11👍31
This media is not supported in your browser
VIEW IN TELEGRAM
سال نو مبارک:) ❤️

امید وارم سال ۱۴۰۴ پر از شادی و خبرای خوب برای همگیمون باشه
❤‍🔥201🔥1
مغزم gc نداره دچار مموری لیک شده
🤣16
This media is not supported in your browser
VIEW IN TELEGRAM
خب خب خب NoSQL 🚀
امروز می‌خوام درباره یه موضوع جذاب تو دنیای دیتابیس‌ها باهاتون حرف بزنم NoSQL اگه دنبال یه راه‌حل برای مدیریت داده‌های بزرگ، انعطاف‌پذیر و سریع هستین، Nosql گزینه خیلی خوبیه. بیاین با هم ببینیم NoSQL چیه.


🧠 ‏NoSQL چیه؟
NoSQL (که مخفف "Not Only SQL" هست) یه دسته از دیتابیس‌های غیررابطه‌ایه که برعکس دیتابیس‌های سنتی رابطه‌ای (مثل MySQL یا PostgreSQL) از ساختار جدول و اسکیما (schema) ثابت استفاده نمی‌کنه (schema less). این دیتابیس‌ها برای مدیریت داده‌های بدون ساختار (unstructured)، نیمه‌ساختار (semi-structured) یا ساختاریافته (structured) طراحی شدن و بهتون انعطاف‌پذیری و مقیاس‌پذیری بالایی می‌دن.

به زبان ساده، NoSQL اومد که بگه "داده‌هات هر شکلی که هستن، من مدیریتشون می‌کنم 😎"


📚 انواع NoSQL
‏NoSQL چند مدل اصلی داره که هر کدوم برای یه نوع داده و کاربرد خاص بهینه شدن:

1️⃣Key-Value (کلید-مقدار):
ساده‌ترین نوعه، مثل یه دیکشنری بزرگ. یه کلید می‌دی، یه مقدار می‌گیری
مثال: Redis، DynamoDB


2️⃣‏ Document (سندی):
داده‌ها رو به صورت داکیومنت (مثل JSON یا XML) ذخیره می‌کنه. هر داکیومنت می‌تونه ساختار متفاوتی داشته باشه.
مثال: MongoDB، CouchDB

3️⃣‌‏ Column-Family (ستونی):
داده‌ها رو تو ستون‌ها ذخیره می‌کنه و برای دیتاهای بزرگ و تحلیلی عالیه.
مثال: Cassandra، ScyllaDB

4️⃣Graph:
داده‌ها رو به صورت گراف (node) و یال (edge) ذخیره می‌کنه، مناسب روابط پیچیده هست.
مثال: Neo4j، ArangoDB


چرا NoSQL به وجود اومد؟
🚀

دیتابیس‌های رابطه‌ای (RDBMS) برای سال‌ها پادشاه بودن، ولی با رشد تکنولوژی و داده‌ها، مشکلاتی پیش اومد:

حجم داده‌ها: وب، اپلیکیشن‌های موبایل و IoT حجم داده‌ها رو به شکل انفجاری زیاد کردن و RDBMSها تو مقیاس بزرگ کند شدن.
ساختار ثابت: جدول‌های RDBMS نیاز به اسکیما دارن و تغییرشون سخت بود، ولی داده‌های امروزی انعطاف‌پذیر و متنوع شدن.
مقیاس‌پذیری عمودی: RDBMSها فقط با ارتقای سخت‌افزار (vertical scaling) بزرگ می‌شن، که گرون و محدوده.
سرعت: تو اپلیکیشن‌های بلادرنگ (مثل چت یا بازی آنلاین)، تاخیر RDBMS جواب نمی‌داد.

‏NoSQL اومد که:
مقیاس‌پذیری افقی:
با اضافه کردن سرورهای بیشتر (horizontal scaling) بزرگ بشه.
انعطاف‌پذیری:
بدون نیاز به اسکیما، هر نوع داده‌ای رو مدیریت کنه.
سرعت:
برای عملیات سریع و بلادرنگ بهینه بشه.


🔍 مزایا و معایب NoSQL
مزایا:
مقیاس‌پذیری: به راحتی با اضافه کردن نود (node) بزرگ می‌شه.
انعطاف‌پذیری: برای داده‌های متنوع و بدون ساختار عالیه.
سرعت: تو عملیات سنگین و بلادرنگ حرف نداره.
توزیع‌شده: به صورت ذاتی برای سیستم‌های توزیع‌شده طراحی شده.

معایب:
عدم تطابق کامل (Consistency): تو بعضی مدل‌ها (مثل BASE به جای ACID)، ممکنه داده‌ها لحظه‌ای ناسازگار باشن.
یادگیری: هر نوع NoSQL دستورات خاص خودش رو داره و یادگیریش زمان میبره.
کمبود تراکنش پیچیده: برای عملیات پیچیده مثل تراکنش‌های بانکی، RDBMS هنوز بهتره.


🎯 کجا از NoSQL استفاده کنیم؟

اپلیکیشن‌های وب و موبایل: برای ذخیره داده‌های کاربرها (مثل پروفایل‌ها).
داده‌های بلادرنگ: چت، اعلان‌ها، بازی‌های آنلاین.
داده‌های بزرگ: تحلیل لاگ‌ها، IoT، سری‌های زمانی.
پروژه‌های مقیاس‌پذیر: وقتی نمی‌دونی داده‌هات چقدر قراره رشد کنن.

جمع‌بندی ✍️
NoSQL یه انقلاب تو دنیای دیتابیس‌ها بود که برای دنیای مدرن و داده‌محور امروز طراحی شده. با انعطاف‌پذیری، سرعت و مقیاس‌پذیریش، یه انتخاب خوب برای پروژه‌هاییه که نمی‌خوان تو چارچوب‌های سفت و سخت RDBMS گیر کنن. از MongoDB برای اپلیکیشن‌های وب گرفته تا ScyllaDB برای داده‌های بلادرنگ، NoSQL برای هر نیازی یه جواب داره.

#️⃣ #db #nosql


🥷 CHANNEL | GROUP
👍105❤‍🔥1🔥1👌1
این داداشمون میگه ۸ تا از سریع ترین زبان های برنامه نویسی اینان
و پایتون از سه تای پایینیش سریع تره :))))))))

#️⃣ #wtf


🥷 CHANNEL | GROUP
🤣30👍1
Damn

#️⃣ #wtf


🥷 CHANNEL | GROUP
🤣33👍1
توی این مقاله درمورد اصول نامگذاری کامیت ها صحبت میکنم :]

ممنون میشم با لایک و کامنت حمایت کنید ❤️

لینک مقاله

#️⃣ #refrence


🥷 CHANNEL | GROUP
🔥15💔1
چرا نباید لاجیک پروژه رو تو سریالایزرهای DRF پیاده‌سازی کنیم؟ 🚫

یه موضوع مهم هست که چرا نباید لاجیک پروژه‌مون رو تو سریالایزرها پیاده‌سازی کنیم؟ خیلی از افرادی که میشناسم متاسفانه اینکارو میکنن (پیاده سازی لاجیک توی سریالایزر ها) اگه شماهم حزو این دسته افراد هستید این پست براتون مناسبه

اول از همه سریالایزر تو DRF چیه؟

سریالایزرها تو DRF مسئول تبدیل داده‌ها بین فرمت‌های مختلف (مثل JSON و مدل‌های Django) هستن. کارشون اینه که داده‌ها رو بگیرن، اعتبارسنجی (validation) کنن و به شکل مناسب تحویل بدن. مثلاً یه مدل User رو به JSON تبدیل می‌کنن یا برعکس. تا اینجا همه‌چیز اوکیه، ولی مشکل از جایی شروع می‌شه که بخوایم لاجیک اصلی پروژه رو تو همین سریالایزرها پیاده سازی کنیم.

🚫 چرا این کار بده؟
بعضی‌ها عادت دارن تو متدهای سریالایزر (مثل to_representation یا validate) لاجیک‌های پیچیده بنویسن، مثلاً محاسبات، فیلتر کردن داده‌ها یا حتی آپدیت دیتابیس. اما این کارا چندتا مشکل بزرگ به وجود میاره

1⃣ نقض اصل Single Responsibility:
سریالایزرها برای تبدیل و اعتبارسنجی داده‌ها طراحی شدن، نه برای مدیریت لاجیک پروژه.
وقتی لاجیک رو اونجا می‌نویسین، کدتون از یه سریالایزر ساده تبدیل میشه به سریالایزر خیلی گنده که بعداً نگهداریش سخت می‌شه.

2⃣ کاهش Readability و Testability:
اگه لاجیک تو سریالایزر باشه، پیدا کردنش تو پروژه سخت‌تره و تست کردنش هم پیچیده می‌شه. مثلاً برای تست یه محاسبه، باید کل سریالایزر رو تست کنین، نه فقط اون لاجیک خاص.

3⃣ مشکلات Scalability:
تو پروژه‌های بزرگ، وقتی لاجیک‌ها تو سریالایزرها پخش بشن، دیگه نمی‌تونین به راحتی تغییرشون بدین یا جابه‌جاشون کنین. یه تغییر کوچیک تو لاجیک ممکنه کل API رو به هم بریزه.

4⃣ وابستگی بیش از حد:
سریالایزرها به مدل‌ها و داده‌ها وابسته‌ ان. اگه لاجیک پروژه رو اونجا بذارین، هر تغییری تو مدل‌ها یا ساختار داده‌ها می‌تونه لاجیک‌تون رو خراب کنه.

5⃣ سخت شدن دیباگ:
وقتی یه باگ پیش میاد، نمی‌دونین مشکل از تبدیل داده‌ست یا از لاجیک پروژه، چون همه‌چیز قاطی شده.

سخن اخر 🗣
پیاده‌سازی لاجیک پروژه تو سریالایزرهای DRF مثل اینه که بخوای با چاقو سوپ بخوری؛ می‌شه، ولی چرا؟! سریالایزرها برای تبدیل و اعتبارسنجی داده‌ها طراحی شدن، نه برای نگه داشتن لاجیک پیچیده. با انتقال لاجیک به مدل‌ها یا سرویس‌ها، کدتون تمیزتر، قابل‌نگهداری‌تر و حرفه‌ای‌تر می‌شه. دفعه بعد که خواستین تو سریالایزر لاجیک بنویسین، یه لحظه وایسید و بگین: اینجا جای این کارا نیست 😊

#️⃣ #backend #drf #django #api


🥷 CHANNEL | GROUP
👍203
همه میدونن چرا این پست انقدر ریکشن خنده داره 🤣


🥷 CHANNEL | GROUP
🤣76
Forwarded from Denver
🛠 چند alias کاربردی برای هر کاربر لینوکس
حتما با alias ها آشنایی دارین، همون لقب دادن به دستوراتمون.
کاربردش چیه؟ میتونیم کلی دستور طولانی یا حتی دستورایی که تایپ کردنشون هر دفعه مثل یه کابوس میمونه رو توی دستور مورد نظر خودمون خلاصه کنیم.
ساده تر بگیم، درواقع با اینکار داریم به شل(zsh, bash, fish) میگیم که دستور مورد نظر a معادل دستور طولانی b هست.


با این aliasها توی فایل ~/.bashrc یا ~/.zshrc می‌تونی کلی زمان تو ترمینال صرفه‌جویی کنی 💻⚡️

# ====== System Management ======
alias update="sudo apt update && sudo apt upgrade -y" # Fast system update
alias clean="sudo apt autoremove && sudo apt autoclean" # Clean cache and unnecessary packages
alias reboot="sudo reboot" # Reboot the system
alias ping="ping -c 5" # Ping with 5 packets

# ====== Navigation Shortcuts ======
alias home='cd ~' # Go to home directory
alias cd..='cd ..' # One directory up
alias ..='cd ..' # One directory up (short)
alias ...='cd ../..' # Two directories up
alias ....='cd ../../..' # Three directories up
alias .....='cd ../../../..' # Four directories up

# ====== File Search ======
alias f="find . -name" # Find file by name in current directory and subdirectories

# ====== Listing (ls) Aliases ======
alias la='ls -Alh' # List all files including hidden
alias ls='ls --color=always' # Enable colored output
alias lx='ls -lXBh' # Sort by extension
alias lk='ls -lSrh' # Sort by size
alias lc='ls -lcrh' # Sort by change time
alias lu='ls -lurh' # Sort by access time
alias lr='ls -lRh' # Recursive listing
alias lt='ls -ltrh' # Sort by date
alias lw='ls -xAh' # Wide listing format
alias ll='ls -Flsh' # Long listing format with type indicators
alias labc='ls -lap' # Alphabetical listing with hidden files
alias lf="ls -l | egrep -v '^d'" # List only files
alias ldir="ls -l | egrep '^d'" # List only directories

🔗برای راحتی کار میتونید فایل آماده ی alias هارو از لینک زیر دانلود کنید:
فایل آماده ی alias ها

📌 نکته: بعد از اضافه کردن aliasها، فراموش نکن که ترمینالت رو یه بار ببندی و باز کنی یا دستور زیر رو وارد کنی:
source ~/.bashrc  # or ~/.zshrc


#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
13