Files
khorasan-doc/site/exercise10/index.html
T
nearology 99fb7f0e82 Add sitemap and styles for Persian font integration
- Created a new sitemap.xml file for better SEO.
- Added a compressed version of the sitemap as sitemap.xml.gz.
- Introduced extra.css for custom styles, including Persian font support (IRANSansX).
- Defined font-face rules for regular and bold styles of IRANSansX.
- Implemented various text styles and layout adjustments for better readability.
- Enhanced Mermaid diagram styles to support Persian text rendering.
2026-04-28 15:27:18 +03:30

2651 lines
48 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="fa" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="../exercise9/">
<link rel="next" href="../programming-languages/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
<title>تمرین ۱۰: ادغامگرِ گزارش‌ها - کارگاه آزمایشگاه سیستم عامل</title>
<link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="stylesheet" href="../stylesheets/extra.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="rtl" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#cat" class="md-skip">
پرش به محتویات
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="سرتیتر">
<a href=".." title="کارگاه آزمایشگاه سیستم عامل" class="md-header__button md-logo" aria-label="کارگاه آزمایشگاه سیستم عامل" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
کارگاه آزمایشگاه سیستم عامل
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
تمرین ۱۰: ادغامگرِ گزارش‌ها
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="جستجو" placeholder="جستجو" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="جستجو">
<button type="reset" class="md-search__icon md-icon" title="بازنشانی" aria-label="بازنشانی" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
راه‌اندازی جستجو
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="هدایت" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="کارگاه آزمایشگاه سیستم عامل" class="md-nav__button md-logo" aria-label="کارگاه آزمایشگاه سیستم عامل" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
کارگاه آزمایشگاه سیستم عامل
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
صفحه اصلی
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
📚 لیست دروس
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
📚 لیست دروس
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1" checked>
<label class="md-nav__link" for="__nav_2_1" id="__nav_2_1_label" tabindex="0">
<span class="md-ellipsis">
سیستم عامل گنو/لینوکس
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2_1">
<span class="md-nav__icon md-icon"></span>
سیستم عامل گنو/لینوکس
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../linux-course/" class="md-nav__link">
<span class="md-ellipsis">
توضیح درس
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_2" >
<label class="md-nav__link" for="__nav_2_1_2" id="__nav_2_1_2_label" tabindex="0">
<span class="md-ellipsis">
📚 فصل یک
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_1_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_1_2">
<span class="md-nav__icon md-icon"></span>
📚 فصل یک
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../chapter1/" class="md-nav__link">
<span class="md-ellipsis">
📄 معرفی فصل
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_2_2" >
<label class="md-nav__link" for="__nav_2_1_2_2" id="__nav_2_1_2_2_label" tabindex="0">
<span class="md-ellipsis">
📘 درسنامه‌ها
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_1_2_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_1_2_2">
<span class="md-nav__icon md-icon"></span>
📘 درسنامه‌ها
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../lesson1/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۱: دستورات pwd و cd
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲: ساختار کلی دستورات در لینوکس
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳: دستور ls
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson4/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۴: مدیریت تاریخچه و صفحهٔ ترمینال
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson5/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۵: ساخت و حذف دایرکتوری‌ها
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson6/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۶: ساخت فایل و نمایش محتوا با touch و cat
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson7/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۷: مدیریت فایل‌ها با cp، mv و rm
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson8/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۸: مستندات دستورات و یادگیری عمیق در لینوکس
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson9/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۹: مدیریت تاریخ و تقویم با date و cal
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson10/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۱۰: استاندارد استریم‌ها در لینوکس
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson11/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۱۱: ساخت پایپ‌لاین در خط فرمان لینوکس
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_2_3" >
<label class="md-nav__link" for="__nav_2_1_2_3" id="__nav_2_1_2_3_label" tabindex="0">
<span class="md-ellipsis">
🧩 تمرین‌ها
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_1_2_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_1_2_3">
<span class="md-nav__icon md-icon"></span>
🧩 تمرین‌ها
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../exercise1/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۱: دیدن سخت
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise2/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۲: بازی بازی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise3/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۳: دفترچه تیمی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise4/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۴: بایگانی پروژه
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise5/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۵: شکار گزینهٔ درست
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise6/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۶: تقویم تیم پشتیبان
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise7/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۷: پایپ‌لاین خطاگیر
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise8/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۸: یادداشتِ مریخی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise9/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۹: مرکز پشتیبانی و cat
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
تمرین ۱۰: ادغامگرِ گزارش‌ها
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
تمرین ۱۰: ادغامگرِ گزارش‌ها
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="فهرست موضوعات">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
فهرست موضوعات
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
<span class="md-ellipsis">
صورت سؤال
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
<span class="md-ellipsis">
ورودی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
<span class="md-ellipsis">
خروجی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
<span class="md-ellipsis">
محدودیت‌ها
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
<span class="md-ellipsis">
نمونه
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_3" >
<label class="md-nav__link" for="__nav_2_1_3" id="__nav_2_1_3_label" tabindex="0">
<span class="md-ellipsis">
📚 فصل دو
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_1_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_1_3">
<span class="md-nav__icon md-icon"></span>
📚 فصل دو
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../chapter2/" class="md-nav__link">
<span class="md-ellipsis">
📄 معرفی فصل
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_3_2" >
<label class="md-nav__link" for="__nav_2_1_3_2" id="__nav_2_1_3_2_label" tabindex="0">
<span class="md-ellipsis">
📘 درسنامه‌ها
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_1_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_1_3_2">
<span class="md-nav__icon md-icon"></span>
📘 درسنامه‌ها
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../lesson2-1/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۱: آشنایی با file و du
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-2/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۲: ادیتورهای پیش‌فرض لینوکس (nano و vim)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-3/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۳: دایرکتوری‌های مهم و ساختار فایل‌بندی لینوکس
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-4/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۴: مشاهدهٔ محتوا با more، less، head و tail
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-5/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۵: برش متن با cut
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-6/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۶: مرتب‌سازی و شمارش با sort و wc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-7/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۷: جست‌وجو در متن با grep
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-8/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۸: جست‌وجوی فایل‌ها با find
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-9/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۹: وایلدکاردها (Wildcards) در شل
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-10/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۱۰: فشرده‌سازی و آرشیو فایل‌ها
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson2-11/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۲-۱۱: مقدمه‌ای بر awk
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_4" checked>
<label class="md-nav__link" for="__nav_2_1_4" id="__nav_2_1_4_label" tabindex="0">
<span class="md-ellipsis">
📚 فصل سه
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_1_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2_1_4">
<span class="md-nav__icon md-icon"></span>
📚 فصل سه
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../chapter3/" class="md-nav__link">
<span class="md-ellipsis">
📄 معرفی فصل
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_4_2" >
<label class="md-nav__link" for="__nav_2_1_4_2" id="__nav_2_1_4_2_label" tabindex="0">
<span class="md-ellipsis">
📘 درسنامه‌ها
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_1_4_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_1_4_2">
<span class="md-nav__icon md-icon"></span>
📘 درسنامه‌ها
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../lesson3-1/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۱: چرا Bash و اسکریپت؟
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3-2/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۲: ساخت اولین اسکریپت Bash
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3-3/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۳: متغیرها در Bash
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3-4/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۴: گرفتن ورودی از کاربر و آرگومان‌ها
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3-5/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۵: شرط‌ها در Bash (if)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3-6/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۶: مجوز اجرا و اجرای اسکریپت
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3-7/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۷: حلقه‌ها در Bash (for و while)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3-8/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۸: ساخت منوی ساده با case و حلقه
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lesson3-9/" class="md-nav__link">
<span class="md-ellipsis">
درسنامه ۳-۹: توابع در Bash و تمیزکردن اسکریپت‌ها
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_4_3" checked>
<label class="md-nav__link" for="__nav_2_1_4_3" id="__nav_2_1_4_3_label" tabindex="0">
<span class="md-ellipsis">
🧩 تمرین‌ها
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_1_4_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2_1_4_3">
<span class="md-nav__icon md-icon"></span>
🧩 تمرین‌ها
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../exercise8/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۸: یادداشتِ مریخی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exercise9/" class="md-nav__link">
<span class="md-ellipsis">
تمرین ۹: مرکز پشتیبانی و cat
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
تمرین ۱۰: ادغامگرِ گزارش‌ها
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
تمرین ۱۰: ادغامگرِ گزارش‌ها
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="فهرست موضوعات">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
فهرست موضوعات
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
<span class="md-ellipsis">
صورت سؤال
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
<span class="md-ellipsis">
ورودی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
<span class="md-ellipsis">
خروجی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
<span class="md-ellipsis">
محدودیت‌ها
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
<span class="md-ellipsis">
نمونه
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2" >
<label class="md-nav__link" for="__nav_2_2" id="__nav_2_2_label" tabindex="0">
<span class="md-ellipsis">
زبان‌های برنامه‌نویسی
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_2">
<span class="md-nav__icon md-icon"></span>
زبان‌های برنامه‌نویسی
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../programming-languages/" class="md-nav__link">
<span class="md-ellipsis">
توضیح درس
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="فهرست موضوعات">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
فهرست موضوعات
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
<span class="md-ellipsis">
صورت سؤال
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
<span class="md-ellipsis">
ورودی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
<span class="md-ellipsis">
خروجی
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
<span class="md-ellipsis">
محدودیت‌ها
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
<span class="md-ellipsis">
نمونه
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="cat">تمرین ۱۰: ادغامگرِ گزارش‌ها (شبیه <code>cat</code> با <code>&gt;</code> و <code>&gt;&gt;</code>)</h1>
<h2 id="_1">صورت سؤال</h2>
<p>یک ابزار ساده دارید که با منطق دستور <code>cat</code> و تغییر مسیر (<code>&gt;</code> و <code>&gt;&gt;</code>) گزارش‌ها را می‌سازد. شما باید خروجی نهایی فایل <code>final.txt</code> را بعد از اجرای دستورها به دست آورید.</p>
<p>دستورهای ممکن:</p>
<ul>
<li><code>touch f</code> اگر فایل <code>f</code> وجود نداشته باشد آن را خالی می‌سازد؛ اگر وجود داشته باشد، محتوا تغییر نمی‌کند.</li>
<li><code>write f s</code> محتوای فایل <code>f</code> را دقیقاً برابر یک خط <code>s</code> قرار می‌دهد (بازنویسی کامل).</li>
<li><code>append f s</code> یک خط <code>s</code> را به انتهای فایل <code>f</code> اضافه می‌کند.</li>
<li><code>merge a b &gt; c</code> محتوای فعلی فایل <code>a</code> سپس محتوای فعلی فایل <code>b</code> را پشت سر هم در نظر بگیرید و نتیجه را <strong>کامل روی</strong> فایل <code>c</code> بنویسید (بازنویسی کامل).</li>
<li><code>merge a b &gt;&gt; c</code> همان ادغام است، با این تفاوت که نتیجه باید <strong>به انتهای</strong> فایل <code>c</code> اضافه شود.</li>
</ul>
<p>نکته: اگر فایل‌های <code>a</code> یا <code>b</code> وجود نداشتند، در عملیات <code>merge</code> به عنوان فایل خالی در نظر بگیرید.</p>
<p>در پایان، اگر <code>final.txt</code> وجود نداشت یا خالی بود باید دقیقاً <code>EMPTY</code> چاپ شود.</p>
<h2 id="_2">ورودی</h2>
<p>در خط اول عدد <code>q</code> تعداد دستورها آمده است.<br />
در <code>q</code> خط بعدی، هر خط یکی از دستورهای بالا است.</p>
<p>نام فایل‌ها فقط شامل حروف انگلیسی، عدد، <code>_</code> و <code>.</code> است.<br />
<code>s</code> یک متن یک‌خطی است که می‌تواند شامل فاصله باشد و تا انتهای خط ادامه دارد.</p>
<h2 id="_3">خروجی</h2>
<p>محتوای نهایی <code>final.txt</code> را چاپ کنید (هر خط جداگانه).<br />
اگر فایل وجود نداشت یا خالی بود، فقط <code>EMPTY</code> چاپ کنید.</p>
<h2 id="_4">محدودیت‌ها</h2>
<ul>
<li><code>1 ≤ q ≤ 2×10^4</code></li>
<li>طول <code>s</code> حداکثر 100 کاراکتر است.</li>
</ul>
<h2 id="_5">نمونه</h2>
<p><strong>ورودی نمونه</strong>
<div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>10
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>write a.txt A1
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>append a.txt A2
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>write b.txt B1
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>touch final.txt
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a>merge a.txt b.txt &gt; final.txt
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a>append b.txt B2
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a>merge a.txt b.txt &gt;&gt; final.txt
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a>touch a.txt
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a>write a.txt NEW
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a>merge a.txt missing.txt &gt;&gt; final.txt
</span></code></pre></div></p>
<p><strong>خروجی نمونه</strong>
<div class="language-text highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>A1
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>A2
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>B1
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>A1
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>A2
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>B1
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a>B2
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>NEW
</span></code></pre></div></p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": [], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "\u06a9\u067e\u06cc \u0634\u062f", "clipboard.copy": "\u06a9\u067e\u06cc \u06a9\u0631\u062f\u0646", "search.result.more.one": "1 \u0645\u0648\u0631\u062f \u062f\u06cc\u06af\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647", "search.result.more.other": "# \u0645\u0648\u0631\u062f \u062f\u06cc\u06af\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647", "search.result.none": "\u0633\u0646\u062f\u06cc \u06cc\u0627\u0641\u062a \u0646\u0634\u062f", "search.result.one": "1 \u0633\u0646\u062f \u06cc\u0627\u0641\u062a \u0634\u062f", "search.result.other": "# \u0633\u0646\u062f \u06cc\u0627\u0641\u062a \u0634\u062f", "search.result.placeholder": "\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u062c\u0633\u062a\u062c\u0648 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f", "search.result.term.missing": "\u0645\u0648\u062c\u0648\u062f \u0646\u06cc\u0633\u062a", "select.version": "\u0627\u0646\u062a\u062e\u0627\u0628 \u0648\u06cc\u0631\u0627\u06cc\u0634"}, "version": null}</script>
<script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
<script src="https://unpkg.com/mermaid@11.10.1/dist/mermaid.min.js"></script>
<script src="../javascripts/mermaid-init.js"></script>
<script src="../javascripts/mathjax.js"></script>
<script src="https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js"></script>
</body>
</html>