آموزش صفر تا صد ترموکس | Termux Academy :root{ --bg: #0b1020; /* پس‌زمینه اصلی (تیره) */ --bg-soft:#0f172a; /* کارت‌ها */ --bg-softer:#111827; --text:#e5e7eb; /* متن اصلی */ --muted:#9ca3af; /* متن کم‌رنگ */ --brand:#22d3ee; /* فیروزه‌ای */ --brand-2:#a78bfa; /* بنفش */ --success:#34d399; /* سبز */ --warning:#fbbf24; /* نارنجی */ --danger:#f87171; /* قرمز */ --code:#0b1220; /* پس‌زمینه کد */ --border:#1f2937; /* خط حاشیه */ --shadow: 0 10px 25px rgba(0,0,0,.25), 0 2px 6px rgba(0,0,0,.2); }
@media (prefers-color-scheme: light){ :root{ --bg:#f8fafc; --bg-soft:#ffffff; --bg-softer:#f1f5f9; --text:#0f172a; --muted:#475569; --border:#e5e7eb; --code:#0b1220; } } *{box-sizing:border-box} html,body{height:100%} body{ margin:0; font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Noto Sans Arabic", "Vazirmatn", Tahoma, Arial, "Apple Color Emoji", "Segoe UI Emoji"; background: var(--bg); color: var(--text); line-height:1.75; } a{color:var(--brand); text-decoration:none} a:hover{opacity:.9} /* Layout */ .app{ display:grid; grid-template-columns: 280px 1fr; min-height:100dvh; } aside{ border-inline-end:1px solid var(--border); background:linear-gradient(180deg, var(--bg-soft), transparent); position:sticky; top:0; height:100dvh; overflow:auto; } main{padding:24px;} /* Topbar (mobile) */ .topbar{display:none; position:sticky; top:0; z-index:50; backdrop-filter:saturate(140%) blur(10px); background:color-mix(in srgb, var(--bg), transparent 25%); border-bottom:1px solid var(--border)} .topbar-inner{display:flex; align-items:center; gap:12px; padding:10px 14px} .brand{display:flex; align-items:center; gap:10px; font-weight:800; letter-spacing:.2px} .brand-badge{display:inline-grid; place-items:center; width:28px; height:28px; border-radius:9px; background:linear-gradient(135deg,var(--brand),var(--brand-2)); box-shadow:var(--shadow); color:#081018; font-weight:900} /* Sidebar */ .nav{ padding:20px 16px 80px; } .nav .brand{margin:8px 6px 16px} .search{position:relative; margin:10px 6px 18px} .search input{ width:100%; padding:10px 12px; border-radius:12px; border:1px solid var(--border); background:var(--bg-softer); color:var(--text); } .search .hint{position:absolute; inset-inline-end:10px; inset-block:0; display:grid; place-items:center; color:var(--muted); font-size:12px} .toc{display:flex; flex-direction:column; gap:4px} .toc a{padding:8px 10px; border-radius:10px; color:var(--text)} .toc a small{color:var(--muted)} .toc a.active, .toc a:hover{background:color-mix(in srgb, var(--brand) 12%, var(--bg-soft));} /* Cards & sections */ .hero{display:grid; gap:16px; grid-template-columns: 1.2fr .8fr; align-items:center; margin-bottom:28px} .hero .card{padding:24px; background:var(--bg-soft); border:1px solid var(--border); border-radius:20px; box-shadow:var(--shadow)} .hero h1{margin-top:0; margin-bottom:6px; font-size:28px} .hero p{margin:0; color:var(--muted)} .hero .kbd{display:inline-block; background:var(--bg-softer); padding:4px 8px; border-radius:8px; border:1px solid var(--border); font-size:12px} .grid{display:grid; gap:16px} .prose{background:var(--bg-soft); border:1px solid var(--border); border-radius:20px; padding:20px; box-shadow:var(--shadow)} .prose h2{margin-top:0; font-size:22px} .prose h3{margin-bottom:6px} .prose p{margin:8px 0} .note{border-radius:14px; border:1px dashed var(--border); background:color-mix(in srgb, var(--bg-softer), transparent 10%); padding:12px 14px; font-size:.95rem} .tips{display:grid; gap:12px} .badge{display:inline-block; font-size:12px; padding:3px 8px; border:1px solid var(--border); border-radius:999px; color:var(--muted)} /* Code blocks */ pre{position:relative; margin:12px 0 18px; border-radius:14px; overflow:auto; background:var(--code); color:#e5e7eb; border:1px solid #0b1a2a} pre code{display:block; padding:14px 16px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "DejaVu Sans Mono", "Noto Sans Mono", monospace; font-size:.9rem} .copy-btn{position:absolute; inset-inline-end:8px; inset-block-start:8px; border:1px solid var(--border); background:var(--bg-softer); color:var(--text); padding:6px 10px; border-radius:10px; cursor:pointer} .copy-btn:active{transform:translateY(1px)} /* Details/Accordion */ details{background:var(--bg-softer); border:1px solid var(--border); border-radius:14px; padding:10px 12px; margin:10px 0} summary{cursor:pointer; font-weight:700} /* Footer */ footer{color:var(--muted); font-size:.9rem; margin-top:22px} /* Utilities */ .row{display:flex; gap:8px; align-items:center; flex-wrap:wrap} .pill{padding:3px 10px; border-radius:999px; background:color-mix(in srgb, var(--brand) 20%, var(--bg-soft)); color:#071a1f; font-weight:700} /* Responsive */ @media (max-width: 980px){ .app{grid-template-columns: 1fr} aside{display:none} .topbar{display:block} .hero{grid-template-columns: 1fr} } 
☰ Tx Termux Academy Tx Termux Academy
نسخه ۱.۰ · بدون کتابخانه خارجی

آموزش صفر تا صد ترموکس

همه‌چیز برای شروع حرفه‌ای با Termux در اندروید: از نصب امن تا توسعهٔ واقعی با Git، Python، Node.js و مدیریت نشست‌ها با tmux — همراه با نکات امنیتی و بهترین روش‌ها.

واکنش‌گرا بهینه بدون وابستگی RTL
میانبرها
  • / بازکردن جستجو
  • g رفتن به بالای صفحه
  • t تغییر حالت تیره/روشن
این وب‌اپ برای آموزش استفادهٔ قانونی و اخلاقی از ترموکس ساخته شده. اجرای دستورات از منابع نامعتبر می‌تونه خطرناک باشه. همیشه دستورها رو بفهمید، بعد اجرا کنید.

۱) معرفی ترموکس

ترموکس یک شبیه‌ساز ترمینال به‌همراه مخزن بسته‌هاست که محیط لینوکسی را بدون روت روی اندروید می‌آورد. برای توسعه، یادگیری لینوکس و اجرای ابزارهای خط فرمان عالی است.

  • بدون نیاز به روت
  • مخزن‌های امن و به‌روز
  • پشتیبانی از معماری‌های ARM و x86

۲) نصب ترموکس (منبع امن)

نسخه‌های داخل بعضی فروشگاه‌ها قدیمی‌اند. به‌صورت امن از F-Droid یا مخزن رسمی‌اش نصب کنید. پس از نصب:

pkg upgrade -y 

termux-change-repo # در صورت نیاز به انتخاب آینه‌های سریع‌تر termux-setup-storage # دسترسی امن به حافظه داخلی نکتهٔ سرعت و آینه‌ها 

اگر دانلودها کند است از termux-change-repo برای انتخاب آینهٔ نزدیک‌تر استفاده کنید.

۳) شروع سریع

pkg update && pkg upgrade -y 

pkg install -y git curl wget nano vim tmux python nodejs clang make 

پس از این، ابزارهای ضروری برای توسعه آماده‌اند.

۴) مدیریت بسته‌ها: pkg و apt

# جستجو 

pkg search 

نصب/حذف

pkg install  pkg uninstall 

لیست به‌روزرسانی‌ها

apt list --upgradable

پاکسازی کش

apt clean 

۵) ساختار فایل و دسترسی‌ها

  • $HOME مسیر خانگی شماست.
  • termux-setup-storage پوشهٔ storage را در $HOME اضافه می‌کند.
  • دسترسی به حافظهٔ مشترک از طریق ~/storage/shared.
ls -la 

cd ~/storage/shared mkdir Projects && cd Projects 

۶) دستورات پایهٔ لینوکس

pwd # مسیر فعلی 

ls -lah # فهرست با جزئیات cd .. # بازگشت یک پوشه cp, mv, rm, mkdir, rmdir cat, less, head, tail 

۷) ویرایشگرها (nano و vim)

pkg install -y nano vim 

nano file.txt vim file.txt میانبرهای سریع nano 

Ctrl+S ذخیره · Ctrl+X خروج · Ctrl+W جستجو

۸) مدیریت نشست‌ها با tmux

tmux # شروع نشست 

Ctrl+b سپس c # پنجره جدید Ctrl+b سپس % یا " # تقسیم عمودی/افقی Ctrl+b سپس d # جدا شدن از نشست tmux ls # فهرست نشست‌ها tmux attach -t 0 # اتصال مجدد 

۹) Git و کلید SSH

pkg install -y git openssh 

ssh-keygen -t ed25519 -C "your_email@example.com" cat ~/.ssh/id_ed25519.pub # کلید عمومی برای GitHub

تنظیم نام و ایمیل

git config --global user.name "Your Name" git config --global user.email "you@example.com" 

۱۰) پایتون و محیط مجازی

pkg install -y python 

python -V python -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install requests rich رفع خطای Build برای بعضی پکیج‌ها 

اگر به ابزارهای کامپایل نیاز شد: pkg install -y clang python-dev libffi libffi-dev openssl openssl-dev

۱۱) Node.js و npm

pkg install -y nodejs 

node -v && npm -v mkdir myapp && cd myapp npm init -y npm i axios 

۱۲) ابزارهای ساخت: clang, make

pkg install -y clang make cmake 

نمونهٔ ساده C

cat > hello.c <<'EOF' #include  int main(){ printf("Hello from Termux!\n"); return 0; } EOF clang hello.c -o hello ./hello 

۱۳) شبکه: curl, wget, ssh

curl -I https://example.com 

wget https://example.com/file.zip ssh user@server.example 

۱۴) سفارشی‌سازی شِل

# نمایش شاخه فعلی در پرامپت 

cat >> ~/.bashrc <<'EOF' PS1='\u@termux:\w$ ' EOF source ~/.bashrc zsh (اختیاری) 

pkg install -y zsh سپس chsh -s zsh (خروج و ورود مجدد). برای افزونه‌های گرافیکی از نصب اسکریپت‌های ناشناس خودداری کنید.

۱۵) proot-distro (پیشرفته)

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

pkg install -y proot-distro 

proot-distro list proot-distro install ubuntu proot-distro login ubuntu 

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

۱۶) عیب‌یابی رایج

  • شکستن مخزن‌ها: فقط از مخزن‌های رسمی استفاده کنید. با pkg update --allow-downgrade گاهی حل می‌شود.
  • اجازهٔ حافظه: دوباره termux-setup-storage را اجرا کنید و از تنظیمات اندروید دسترسی فایل را بررسی کنید.
  • کمبود فضا: پوشهٔ $PREFIX/var/cache را با apt clean خالی کنید.

۱۷) امنیت و بهترین روش‌ها

  • هیچ‌وقت curl | sh از منابع ناشناس اجرا نکنید.
  • قبل از اجرای هر دستور، آن را بخوانید و بفهمید چه می‌کند.
  • از اجرای ابزارهای تهاجمی روی شبکه‌های غیرخودی خودداری کنید. این وب‌اپ صرفاً آموزشی و اخلاق‌محور است.
  • نسخهٔ پکیج‌ها را به‌روز نگه دارید.

۱۸) پروژهٔ نمونه: اسکرپر ساده با Python

pkg install -y python 

python -m venv .venv && source .venv/bin/activate pip install requests beautifulsoup4 cat > scrape.py <<'PY' import requests from bs4 import BeautifulSoup url = 'https://example.com' html = requests.get(url, timeout=10).text soup = BeautifulSoup(html, 'html.parser') print('عنوان:', soup.title.string if soup.title else 'ندارد') PY python scrape.py 

۱۹) منابع و لینک‌ها

برای امنیت، همیشه از منابع رسمی استفاده کنید: F-Droid (برای نصب)، و مخزن GitHub پروژهٔ Termux (برای مستندات و باگ‌ها). لینک‌ها را دستی در مرورگر خود وارد کنید.

// --- قابلیت‌ها: فهرست خودکار، جستجو، دکمهٔ کپی، حالت تیره/روشن --- // تولید فهرست بخش‌ها از h2 ها const toc = document.getElementById('toc'); const sections = Array.from(document.querySelectorAll('article.prose')); sections.forEach((sec, idx) => { const title = sec.dataset.title || sec.querySelector('h2')?.textContent || `بخش ${idx+1}`; const id = sec.id || `sec-${idx+1}`; sec.id = id; const a = document.createElement('a'); a.href = `#${id}`; a.textContent = title; a.setAttribute('data-title', title.toLowerCase()); toc.appendChild(a); }); // اسکرول فعال‌سازی لینک فعلی const tocLinks = Array.from(toc.querySelectorAll('a')); const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { const idx = sections.indexOf(entry.target); if(entry.isIntersecting){ tocLinks.forEach(l => l.classList.remove('active')); if(tocLinks[idx]) tocLinks[idx].classList.add('active'); } }) }, {rootMargin: '0px 0px -80% 0px', threshold: .1}); sections.forEach(s => observer.observe(s)); // جستجو در فهرست (بدون تزریق HTML) const search = document.getElementById('search'); function filterTOC(q){ const query = (q||'').toString().toLowerCase(); tocLinks.forEach(a => { const match = a.getAttribute('data-title').includes(query); a.style.display = match ? 'block' : 'none'; }); } search.addEventListener('input', (e)=> filterTOC(e.target.value)); window.addEventListener('keydown', (e)=>{ if(e.key === '/'){ e.preventDefault(); search.focus(); }}); // دکمهٔ کپی برای بلوک‌های کد document.querySelectorAll('pre').forEach(pre => { const btn = pre.querySelector('.copy-btn'); if(!btn) return; btn.addEventListener('click', async ()=>{ try{ const code = pre.querySelector('code')?.innerText || ''; await navigator.clipboard.writeText(code); btn.textContent = 'کپی شد'; setTimeout(()=> btn.textContent = 'کپی', 1300); }catch(err){ btn.textContent = 'خطا'; setTimeout(()=> btn.textContent = 'کپی', 1300); } }); }); // باز/بستن سایدبار در موبایل const sidebar = document.getElementById('sidebar'); document.getElementById('openNav').addEventListener('click', ()=>{ if(sidebar.style.display === 'block'){ sidebar.style.display = 'none'; } else{ sidebar.style.display = 'block'; sidebar.style.position='fixed'; sidebar.style.inset='0 0 0 auto'; sidebar.style.width='82%'; sidebar.style.zIndex='60'; sidebar.style.background = 'var(--bg-soft)'; } }); // بستن با کلیک بیرون (ساده) document.addEventListener('click', (e)=>{ const within = sidebar.contains(e.target) || e.target.id === 'openNav'; if(!within && window.innerWidth < 980){ sidebar.style.display='none'; } }); // میانبرها window.addEventListener('keydown', (e)=>{ if(e.key === 'g') window.scrollTo({top:0, behavior:'smooth'}); if(e.key === 't') toggleTheme(); }); // حالت تیره/روشن با ذخیره‌سازی محلی function toggleTheme(){ const current = document.documentElement.getAttribute('data-theme') || 'auto'; const next = current === 'light' ? 'dark' : current === 'dark' ? 'auto' : 'light'; document.documentElement.setAttribute('data-theme', next); localStorage.setItem('theme', next); } // اعمال CSS سفارشی برای theme const theme = localStorage.getItem('theme'); if(theme){ document.documentElement.setAttribute('data-theme', theme); } // بدون افزودن استایل خطرناک؛ فقط سوئیچ منطقی const themeObserver = new MutationObserver(() => {}); themeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme']});