فایل، پوشه و مسیر
فایل و پوشه و درخت پوشهها، مسیر مطلق و نسبی (. و .. و ~)، پسوند فایل فقط بخشی از اسم است، فایل پنهان، حساس بودن لینوکس به حروف بزرگ و کوچک، دیدن اطلاعات فایل با stat و ls، پیدا کردن فایل با find، و پشت پرده: چرا جابهجا کردن فایل فوری است ولی کپی زمان میبرد.
- حدود ۲۱ دقیقه مطالعه
- ۷ مثال اجراشده
- ۳ تمرین با جواب
- مقدماتی (از صفر مطلق)
- بهروزرسانی: ۲۹ مهر ۱۴۰۵
توی این درس یاد میگیری فایل و پوشه دقیقاً چه هستند، چطور هر فایل در کامپیوتر یک آدرس (مسیر) دارد، و فرق مسیر مطلق و مسیر نسبی چیست. میبینی پسوند فایل (مثل .png) فقط بخشی از اسم است و محتوای فایل را عوض نمیکند، چرا بعضی فایلها پنهاناند، و چرا در لینوکس Index.html و index.html دو فایل جدا هستند. همهی اینها مستقل از سیستمعامل است و در تمام دورههای بعدی به آن نیاز داری.
مسئله: «فایلم کجاست؟»
Section titled “مسئله: «فایلم کجاست؟»”همهی ما دیدهایم که فایلی را دانلود کردهایم و بعد پیدایش نکردهایم. علتش تقریباً همیشه یکی است: نمیدانیم فایل در کدام پوشه است. کامپیوتر هم دقیقاً همین را میپرسد: «کدام فایل؟ در کدام پوشه؟». هر بار که برنامهای فایلی را باز میکند، باید آدرس دقیق آن را بداند. این آدرس مسیر (path) نام دارد.
تشبیه: آدرس پستی
Section titled “تشبیه: آدرس پستی”مسیر دقیقاً مثل آدرس پستی است. آدرس کامل: «ایران، تهران، خیابان ولیعصر، پلاک ۱۰». هر کس در هر جای دنیا باشد با همین آدرس خانه را پیدا میکند. به آن مسیر مطلق میگوییم. آدرس نسبی: «دو در بعد، سمت چپ». درست است، ولی فقط وقتی که بدانی کجا ایستادهای. اگر از جای دیگری شروع کنی، به خانهی دیگری میرسی. به آن مسیر نسبی میگوییم.
فایل و پوشه
Section titled “فایل و پوشه”- فایل (file): یک اسم + محتوا (بایتهایی که در دو درس قبل دیدی) + اطلاعات جانبی (اندازه، زمان آخرین تغییر، صاحب، دسترسی).
- پوشه (folder یا directory): ظرفی که فایلها و پوشههای دیگر را در خود دارد. پوشهها داخل پوشهها میروند، و همین یک درخت میسازد.
- ریشه (root): بالاترین پوشهی درخت، که همهچیز زیر آن است.
مسیر مطلق و نسبی
Section titled “مسیر مطلق و نسبی”| مسیر مطلق | مسیر نسبی | |
|---|---|---|
| از کجا شروع میشود | از ریشه (/ در لینوکس و مک، C:\ در ویندوز) |
از پوشهای که الان در آن هستی |
| مثال | /home/ali/shop/css/style.css |
css/style.css یا ../js/app.js |
| همیشه یک معنی دارد؟ | بله | نه؛ بستگی به جایی دارد که هستی |
| کی استفاده کنم؟ | تنظیمات و سرور و جایی که نباید اشتباه شود | کار روزمره داخل یک پروژه |
چند نماد در مسیرها:
| نماد | معنی |
|---|---|
/ |
ریشه (اول مسیر)، یا جداکنندهی پوشهها (وسط مسیر) |
. |
همین پوشهای که الان هستی |
.. |
پوشهی بالایی (والد) |
~ |
پوشهی خانهی کاربر فعلی (در این درس /home/ali) |
مثالهای عملی
Section titled “مثالهای عملی”دستورها روی یک کامپیوتر لینوکسی آزمایشی اجرا شدهاند. اگر ویندوز داری، همین کارها را در File Explorer هم میبینی؛ ما فقط برای دقیق بودن از ترمینال استفاده میکنیم. هر دستور را توضیح میدهیم و لازم نیست حفظش کنی (در دورهی لینوکس یاد میگیری).
مثال ۱: «الان کجا هستم؟» (pwd) و «چه چیزهایی اینجا هست؟» (ls)
Section titled “مثال ۱: «الان کجا هستم؟» (pwd) و «چه چیزهایی اینجا هست؟» (ls)”دستور pwd (print working directory) مسیر مطلق پوشهی فعلی را چاپ میکند، و ls (list) محتوای آن را. ترمینال همیشه «در یک پوشه» است و مسیرهای نسبی نسبت به همان حساب میشوند:
cd ~/shoppwdls/home/ali/shopcssdocsimgindex.htmljspwdگفت الان در/home/ali/shopهستیم، یعنی پوشهیshopداخلaliداخلhomeداخل ریشه (/).lsپنج چیز را نشان داد: چهار پوشه (css،docs،img،js) و یک فایل (index.html). از روی خودlsنمیفهمی کدام پوشه است؛ باls -Fعلامت/کنار پوشهها میآید، یا باtreeکه الان میبینی.- فایل
.envرا نشان نداد؛ علتش مثال ۵ است.
مثال ۲: درخت پوشه (tree)
Section titled “مثال ۲: درخت پوشه (tree)”برای دیدن کل ساختار یکجا از tree استفاده میکنیم. -a یعنی فایلهای پنهان را هم نشان بده:
cd ~/shoptree -a.├── .env├── css│ └── style.css├── docs│ └── readme.md├── img│ └── logo.png├── index.html└── js └── app.js
5 directories, 6 filestree همان نمودار درس را با خود ساختار واقعی نشان داد: shop پنج پوشه (با خود .، یعنی خود shop، و css، docs، img، js) و شش فایل دارد. هر شاخه یک زیرپوشه است. فایل .env فقط چون -a زدیم دیده شد.
مثال ۳: یک فایل، دو آدرس
Section titled “مثال ۳: یک فایل، دو آدرس”فایل css/style.css را از دو جا آدرس میدهیم. با cat (concatenate) محتوای فایل را چاپ میکنیم:
echo "== absolute path (works from anywhere):"cat /home/ali/shop/css/style.cssecho "== relative path from ~/shop:"cd ~/shopcat css/style.cssecho "== relative path from ~/shop/js (go up with .. first):"cd ~/shop/jspwdcat ../css/style.cssecho "== the same relative path from another place fails:"cd /tmpcat css/style.css== absolute path (works from anywhere):body { margin: 0 }== relative path from ~/shop:body { margin: 0 }== relative path from ~/shop/js (go up with .. first):/home/ali/shop/jsbody { margin: 0 }== the same relative path from another place fails:cat: css/style.css: No such file or directoryهمان فایل با سه نوشتهی متفاوت خوانده شد:
- مسیر مطلق (
/home/ali/shop/css/style.css) از هر جا جواب میدهد. - مسیر نسبی
css/style.cssاز~/shopدرست بود، چونcssآنجا زیرپوشه است. - از
~/shop/jsباید اول یک پوشه بالا میرفتیم:../css/style.css. - از
/tmpهمانcss/style.cssشکست خورد (No such file or directory): در/tmpپوشهای به اسمcssنیست. نتیجه: مسیر نسبی فقط از جای درست کار میکند.
مثال ۴: پسوند فقط بخشی از اسم است
Section titled “مثال ۴: پسوند فقط بخشی از اسم است”پسوند (extension) یعنی بخش بعد از آخرین نقطهی اسم (.png، .txt). برنامهها اغلب از روی آن حدس میزنند فایل چیست، ولی محتوا را عوض نمیکند. فایل متنی را به اسم photo.png کپی میکنیم و از file میپرسیم واقعاً چیست:
cd ~/shopcp index.html photo.pngcp img/logo.png notes.txtfile index.html photo.png img/logo.png notes.txtindex.html: ASCII text, with no line terminatorsphoto.png: ASCII text, with no line terminatorsimg/logo.png: PNG image data, 1 x 1, 8-bit/color RGBA, non-interlacednotes.txt: PNG image data, 1 x 1, 8-bit/color RGBA, non-interlacedindex.html و photo.png هر دو «ASCII text» هستند: اسمی که به فایل متنی دادیم محتوا را PNG نکرد. برعکسش هم درست است: logo.png یک تصویر PNG واقعی است و وقتی با اسم notes.txt کپی شد (مثال دوم)، file هنوز میگوید «PNG image data». خیلی از برنامهها از پسوند حدس میزنند چه کنند (مثلاً با دوبار کلیک چه برنامهای باز شود)، ولی محتوا واقعیت را میگوید. اگر پسوند را اشتباه بگذاری، برنامه یا فایل را باز نمیکند یا خطا میدهد.
مثال ۵: فایلهای پنهان
Section titled “مثال ۵: فایلهای پنهان”در لینوکس و مک، فایلی که اسمش با نقطه شروع شود، بهطور پیشفرض نمایش داده نمیشود. معمولاً تنظیمات برنامهها آنجا هستند. با ls -a (all) همه را میبینی:
cd ~/shopecho "== ls:"lsecho "== ls -a:"ls -a== ls:cssdocsimgindex.htmljsnotes.txtphoto.png== ls -a:....envcssdocsimgindex.htmljsnotes.txtphoto.pngls ساده .env را نشان نداد و ls -a نشان داد. دو ورودی عجیب هم دارد: . (خود این پوشه) و .. (پوشهی بالاتر)؛ این دو در هر پوشهای هستند و همان نمادهای مسیرند. چرا فایلهای پنهان؟ چون معمولاً تنظیمات هستند (.env تنظیمات برنامه، .gitignore و .ssh و .bashrc را در دورههای بعدی میبینی) و برای کار روزمره مزاحماند. «پنهان» محافظت نیست؛ فقط نمایش داده نمیشود.
مثال ۶: اطلاعات یک فایل (stat)
Section titled “مثال ۶: اطلاعات یک فایل (stat)”هر فایل علاوه بر محتوا، اطلاعات جانبی هم دارد. stat با قالب دلخواه (-c) اسم، اندازه (به بایت) و زمان آخرین تغییر را نشان میدهد:
cd ~/shopstat -c '%n %s bytes last changed: %y' index.html css/style.css .envecho "== ls -la (long format, all files; we keep only size, date and name):"ls -la --time-style=long-iso | awk 'NR > 1 {print $5, $6, $8}' | column -tindex.html 13 bytes last changed: 2026-10-18 14:00:54.170516172 +0000css/style.css 19 bytes last changed: 2026-10-18 14:00:54.170516172 +0000.env 20 bytes last changed: 2026-10-18 14:00:54.172320717 +0000== ls -la (long format, all files; we keep only size, date and name):4096 2026-10-18 .4096 2026-10-18 ..20 2026-10-18 .env4096 2026-10-18 css4096 2026-10-18 docs4096 2026-10-18 img13 2026-10-18 index.html4096 2026-10-18 js70 2026-10-18 notes.txt13 2026-10-18 photo.pngstat هر سه فایل را با اندازهی دقیق (۱۳ و ۱۹ و ۲۰ بایت) و زمان تغییر نشان داد (از ثانیه تا نانوثانیه). ls -la (long format، همراه فایلهای پنهان) همان اطلاعات را برای همهی فایلها در یک جدول میدهد؛ ما با awk فقط ستونهای اندازه (پنجم)، تاریخ (ششم) و اسم (هشتم) را نگه داشتیم. (ستونهای اول تا چهارم دسترسی و صاحب فایلاند که در دورهی لینوکس یاد میگیری.) اندازهی 4096 که برای پوشهها میبینی، اندازهی همان «جدول اسمها» است که پوشه نگه میدارد (در بخش «پشت پرده» توضیح دادیم)، نه مجموع فایلهای داخلش. اندازه همیشه بایت است، همان چیزی که در دو درس قبل یاد گرفتی: فایل index.html سیزده حرف انگلیسی دارد، پس سیزده بایت.
مثال ۷: پیدا کردن فایل (find)
Section titled “مثال ۷: پیدا کردن فایل (find)”وقتی نمیدانی فایل کجاست، find در پوشه و زیرپوشهها میگردد. -name الگوی اسم و -maxdepth حداکثر عمق جستجو:
cd ~/shopecho "== all .css files below here:"find . -name '*.css'echo "== everything at most 1 level deep:"find . -maxdepth 1 | sortecho "== only folders:"find . -type d | sort== all .css files below here:./css/style.css== everything at most 1 level deep:../.env./css./docs./img./index.html./js./notes.txt./photo.png== only folders:../css./docs./img./jsfind . از پوشهی فعلی شروع میکند و همهچیز زیرش را میگردد. -name '*.css' یعنی «اسمش به .css ختم شود» (ستاره یعنی هر چیزی)، که فقط یک فایل را پیدا کرد. -maxdepth 1 فقط یک سطح (خود پوشه و فرزندان مستقیم) و -type d فقط پوشهها. الگو را داخل کوتیشن بنویس، تا پوسته آن را قبل از find باز نکند.
پشت پرده: پوشه چیست و جابهجا کردن چرا فوری است؟
Section titled “پشت پرده: پوشه چیست و جابهجا کردن چرا فوری است؟”در درس اول دیدی دیسک فقط بایت نگه میدارد. پس «پوشه» و «اسم فایل» کجا هستند؟ سیستمعامل برای هر فایل یک شمارهی شناسایی (inode) میسازد و محتوا و اطلاعات جانبی را به آن شماره وصل میکند. پوشه در واقع یک فایل ویژه است که فقط یک جدول نگه میدارد: «این اسم ← این شماره». یعنی اسم جزو خود فایل نیست؛ در پوشهی والد نوشته شده.
از اینجا یک نتیجهی عملی میگیریم: تغییر اسم یا جابهجایی داخل یک دیسک فقط عوض کردن یک خط در جدول پوشه است و داده را لمس نمیکند؛ ولی کپی باید همهی بایتها را دوباره بنویسد و شمارهی جدید بگیرد. ls -i شماره را نشان میدهد:
cd ~/shopecho "original : $(ls -i css/style.css)"mv css/style.css css/main.cssecho "after mv : $(ls -i css/main.css)"cp css/main.css css/copy.cssecho "after cp : $(ls -i css/main.css css/copy.css | tr '\n' ' ')"mv css/main.css css/style.css; rm css/copy.cssoriginal : 870273 css/style.cssafter mv : 870273 css/main.cssafter cp : 870280 css/copy.css 870273 css/main.cssشمارهی inode فایل بعد از mv همان ماند (عدد اول و دوم یکیاند)، یعنی هیچ بایتی جابهجا نشد؛ فقط اسم در جدول پوشه از style.css به main.css تغییر کرد. بعد از cp یک شمارهی تازه پیدا شد (فایل copy.css شمارهی دیگری دارد)، یعنی یک فایل جدید با بایتهای کپیشده. (خود شمارهها در سیستم تو فرق میکنند؛ مهم یکی بودن و فرق داشتن است.)
برای همین جابهجا کردن یک فایل ۱۰ گیگابایتی در همان دیسک آنی است ولی کپیاش دقایقی طول میکشد. (جابهجایی بین دو دیسک مثل کپی و حذف است، چون شمارهها فقط داخل یک دیسک معنی دارند.)
اشتباهات رایج
Section titled “اشتباهات رایج”۱) فاصله در اسم
Section titled “۱) فاصله در اسم”کامپیوتر فاصله را جداکنندهی «کلمههای دستور» میداند. اسمی که فاصله دارد باید داخل کوتیشن بیاید:
cd ~mkdir "my docs"cd my docsbash: cd: too many argumentscd my docs به پوشهی my و پوشهی docs دستور داد (دو آرگومان) و cd فقط یکی میخواهد: too many arguments. راهحل: اسم را داخل کوتیشن بنویس (cd "my docs") یا بهتر: برای اسم فایل و پوشه از فاصله استفاده نکن (my-docs یا my_docs). همین فاصلهها در سرور و برنامهنویسی دردسرسازند.
۲) حروف بزرگ و کوچک در لینوکس
Section titled “۲) حروف بزرگ و کوچک در لینوکس”cd ~/shopls Index.htmlls index.htmlls: cannot access 'Index.html': No such file or directoryindex.htmlIndex.html پیدا نشد و index.html پیدا شد. روی ویندوز و مک (در حالت پیشفرض) هر دو نوشته جواب میداد؛ برای همین سایتهایی که روی لپتاپ درست کار میکنند، روی سرور لینوکس ممکن است ۴۰۴ بدهند. راهحل: همیشه اسمها را یکدست و ترجیحاً با حروف کوچک بنویس.
۳) خواندن پوشه بهجای فایل
Section titled “۳) خواندن پوشه بهجای فایل”cd ~/shopcat csscat: css: Is a directorycat برای خواندن فایل است و css یک پوشه است. برای دیدن محتوای پوشه از ls css استفاده کن.
۴) فرض کردن «پوشهی فعلی همان است که فکر میکنم»
Section titled “۴) فرض کردن «پوشهی فعلی همان است که فکر میکنم»”مسیر نسبی بدون اینکه بدانی کجا هستی، اشتباه میشود (مثال ۳، آخرین دستور). پیش از هر کار با مسیر نسبی pwd بزن. راهحل کلی: وقتی مطمئن نیستی، مسیر مطلق بنویس.
مسیر مطلق فایل app.js و مسیر نسبی آن را از داخل پوشهی css پیدا کن. با cat ثابت کن هر دو یک فایل را نشان میدهند.
دیدن جواب
cd ~/shop/cssecho "absolute: $(readlink -f ../js/app.js)"echo "relative: ../js/app.js"cat /home/ali/shop/js/app.jscat ../js/app.jsabsolute: /home/ali/shop/js/app.jsrelative: ../js/app.jsconsole.log("hi")console.log("hi")هر دو مسیر یک فایل را نشان دادند. readlink -f یک مسیر (حتی نسبی) را به مسیر مطلق کامل تبدیل میکند؛ ابزار خوبی برای وقتی که مطمئن نیستی فایل دقیقاً کجاست.
از ریشهی سیستم (/) شروع کن و فقط با مسیر نسبی (بدون / در ابتدای مسیر) به /home/ali/shop/css برسی. بعد با .. از آنجا به /home/ali برگرد.
دیدن جواب
cd /cd home/ali/shop/csspwdcd ../..pwd/home/ali/shop/css/home/aliاز / با cd home/ali/shop/css (بدون / ابتدایی، یعنی نسبی) به css رسیدیم؛ pwd همین را تأیید کرد. بعد cd ../.. دو پوشه بالا رفت: اولین .. از css به shop و دومی از shop به ali. پس به /home/ali رسیدیم. اگر یک .. بیشتر میزدی، به /home میرسیدی. شمردن ..ها آسانترین جای اشتباه است؛ بعد از هر cd یک pwd بزن.
تمرین اصلی درس: یک اسکریپت بنویس که یک فهرست مسیر را از ورودی بخواند و ساختار را بسازد (مسیری که با / تمام میشود پوشه است، بقیه فایل). بعد با find و tree ثابت کن ساختار درست است.
دیدن جواب
#!/usr/bin/env bash# usage: mkproject.sh ROOT < list-of-paths ; a path ending in / is a folder, anything else is a fileroot=${1:?usage: mkproject.sh ROOT}while read -r p; do [ -z "$p" ] && continue case "$p" in */) mkdir -p "$root/$p" ;; *) mkdir -p "$root/$(dirname "$p")"; : > "$root/$p" ;; esacdonecat > layout.txt <<'EOF'src/src/main.pysrc/utils/src/utils/text.pytests/test_main.pyREADME.md.gitignoreEOFbash mkproject.sh demo < layout.txttree -a demoecho "files: $(find demo -type f | wc -l), folders (without root): $(find demo -mindepth 1 -type d | wc -l)"rm -rf demo layout.txt mkproject.shdemo├── .gitignore├── README.md├── src│ ├── main.py│ └── utils│ └── text.py└── tests └── test_main.py
4 directories, 5 filesfiles: 5, folders (without root): 3اسکریپت هر خط را خواند: خطی که با / تمام میشد پوشه شد (mkdir -p)، بقیه فایل (اول پوشهی والدش را ساخت، بعد با : > یک فایل خالی). tree پنج فایل و سه زیرپوشه را نشان داد؛ find همان را شمرد (۵ فایل و ۳ پوشه، بدون خود demo). دقت کن .gitignore که پنهان است، فقط با tree -a دیده شد. (-p در mkdir یعنی «اگر پوشههای والد نیستند، آنها را هم بساز» و اگر هست خطا نده.)
آزمونک
Section titled “آزمونک”در پوشهی /home/ali/shop/css هستی. مسیر نسبی ../js/app.js به کدام فایل اشاره میکند؟
جواب درست: /home/ali/shop/js/app.js
.. یعنی یک پوشه بالاتر، یعنی از css به shop. بعد وارد js و فایل app.js میشویم: /home/ali/shop/js/app.js.
فرق مسیر مطلق و مسیر نسبی چیست؟
جواب درست: مطلق از ریشه شروع میشود و همیشه یک معنی دارد؛ نسبی از پوشهی فعلی شروع میشود و بسته به جای تو فرق میکند
مسیر مطلق مثل آدرس کامل پستی است و از هر جا همان فایل را نشان میدهد. مسیر نسبی مثل «دو در بعد» است و فقط از جای درست معنی دارد.
- مطلق فقط برای فایلهای پنهان است ← پنهان بودن به اسم فایل مربوط است نه نوع مسیر.
- نسبی همیشه کوتاهتر است و همیشه بهتر ← نسبی همیشه کوتاهتر نیست (مثلاً
../../../etc/hosts) و همیشه هم بهتر نیست؛ بسته به نیاز. - هیچ فرقی ندارند ← فرق مهمی دارند: یکی از ریشه شروع میشود، دیگری از جای فعلی.
فایلی به اسم
report.pdfدر واقع یک فایل متنی ساده است. کدام درست است؟جواب درست: پسوند فقط بخشی از اسم است و محتوا را عوض نمیکند؛
fileنوع واقعی را از روی محتوا میگویدتغییر اسم محتوا را عوض نمیکند. برنامهها پسوند را فقط بهعنوان یک «راهنما» میخوانند. برای فهمیدن نوع واقعی،
fileچند بایت اول محتوا را نگاه میکند.- حتماً از دست رفته و خراب است ← فایل سالم است؛ فقط پسوندش با محتوایش نمیخواند.
- کامپیوتر آن را خودکار به PDF تبدیل میکند ← کامپیوتر محتوا را بهخاطر اسم تبدیل نمیکند.
- پسوند PDF فقط روی ویندوز معنی دارد ← پسوند روی همهی سیستمعاملها فقط بخشی از اسم است.
در پوشهی
~/shopدستورlsفایل.envرا نشان نمیدهد ولیls -aنشان میدهد. چرا؟جواب درست: اسمی که با نقطه شروع شود «پنهان» حساب میشود و
lsآن را نمایش نمیدهد مگر با-aقراردادی قدیمی در لینوکس و مک: فایلهایی که با نقطه شروع میشوند (معمولاً تنظیمات) مزاحم دید روزمره نباشند. «پنهان» یعنی نمایش داده نمیشود، نه اینکه امن یا مخفی باشد.
.envخراب است ← فایل سالم است و با-aدیده میشود.ls -aفایلهای جدید میسازد ←ls -aفقط نمایش را عوض میکند و چیزی نمیسازد..envفقط برای مدیر سیستم است ← پنهان بودن ربطی به دسترسی مدیر ندارد؛ هر کسی باls -aمیبیند.
روی لینوکس فایل
index.htmlداری. دستورcat Index.htmlچه میشود؟جواب درست: خطای
No such file or directory، چون لینوکس به حروف بزرگ و کوچک حساس استدر لینوکس
Index.htmlوindex.htmlدو اسم متفاوتاند. ویندوز معمولاً فرق نمیگذارد. یکی از دلایل رایج اینکه «روی لپتاپ کار میکرد ولی روی سرور نه».- همان فایل را نشان میدهد ← این رفتار ویندوز است، نه لینوکس.
- فایل را به اسم تازه تبدیل میکند ←
catفقط میخواند و اسم فایل را تغییر نمیدهد. - فقط خط اول را نشان میدهد ←
catکل فایل را چاپ میکند، اما اینجا اصلاً فایلی با این اسم نیست.
چرا جابهجا کردن (
mv) یک فایل بزرگ داخل همان دیسک آنی است ولی کپی (cp) زمان میبرد؟جواب درست:
mvفقط اسم را در جدول پوشه عوض میکند و بایتها سر جایشان میمانند؛cpهمهی بایتها را دوباره مینویسداسم در پوشهی والد (در جدول «اسم ← شماره») نگه داشته میشود؛
mvفقط همان خط را عوض میکند و شمارهی inode تغییر نمیکند (در مثال دیدی).cpشمارهی جدید میگیرد و باید همهی بایتها را بنویسد.mvفایل را فشرده میکند ←mvفشردهسازی انجام نمیدهد.cpاز اینترنت کمک میگیرد ← کپی داخل همان کامپیوتر انجام میشود و به اینترنت ربطی ندارد.mvفایل را حذف میکند و دیگر وجود ندارد ← فایل بعد ازmvکاملاً وجود دارد، فقط اسم یا جایش عوض شده.
جمعبندی
Section titled “جمعبندی”- فایل = اسم + محتوا (بایت) + اطلاعات جانبی. پوشه ظرفی است که جدول «اسم ← فایل» دارد و همهی پوشهها یک درخت از ریشه میسازند.
- مسیر مطلق از ریشه شروع میشود (
/home/ali/shop/css/style.css) و همیشه یک معنی دارد؛ مسیر نسبی از پوشهی فعلی (css/style.css،../js/app.js)..یعنی همینجا،..یعنی بالاتر،~یعنی خانه. - پسوند فقط بخشی از اسم است. برای فهمیدن نوع واقعی از
fileاستفاده کن. - اسمهایی که با نقطه شروع شوند پنهاناند (
ls -aنشان میدهد). - لینوکس به حروف بزرگ و کوچک حساس است؛ ویندوز معمولاً نه. اسم فایل را همیشه یکدست (ترجیحاً کوچک) بنویس.
- اسم فاصله نداشته باشد (یا داخل کوتیشن باشد).
mvداخل یک دیسک فوری است (فقط جدول پوشه)،cpهمهی بایتها را مینویسد.
| دستور | کاری که میکند |
|---|---|
pwd | مسیر مطلق پوشهی فعلی |
ls | محتوای پوشهی فعلی |
ls -a | همراه فایلهای پنهان |
tree -a | درخت پوشهها با فایلهای پنهان |
cd ../js | رفتن به پوشهی js کنار پوشهی فعلی |
cat path | چاپ محتوای یک فایل متنی |
file path | نوع واقعی فایل (از روی محتوا) |
stat path | اندازه و زمان و اطلاعات فایل |
find . -name '*.css' | پیدا کردن فایل با اسم |
ls -i path | شمارهی inode فایل |