بلاگ شخصی امین

اینجاییم که باهم یاد بگیریم

12 October 2025

قسمت هشتم آموزش لینوکس - File Commands

by amin Ghorbani

مدیریت فایل‌ها

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

wildcards

اول از همه قبل از اینکه یادبگیریم چجوری در Terminal فایل های سیستم رو مدیریت کنیم چند تا wildcard رو در لینوکس خوبه یاد بگیریم:

  1. * : معنیش همه رشته هاست مثلا *a معنیش همه رشته هایی است که با a شروع میشه
  2. ? : معنیش اینه هر کاراکتری ، خب فرقش با بالایی چیه اینجا هر ? فقط یه کاراکتره یعن ?a معنیش میشه تمام رشته های دو حرفی که a شروع میشن.
  3. [abc] : معنیش میشه یا a یا b یا c
  4. [a-k] : معنیش میشه حروف بین دو کاراکتر a و k یعنی a,b,c,d,e,f,g,h,i,j
  5. [!x] : معنیش میشه هرچیزی جز x

دستور ls

ls a???

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

ls /
ls ../../..
ls -R
ls -lthr

دستورات جابه‌جایی

cp /tmp/file ..
mv /tmp/file /tmp/file2
rm log*

دستور touch

دستور touch به منظور ایجاد یک فایل به کار میرود یعنی شما با دستور زیر یک فایل خالی با نام note را میسازید.

touch note

اما اگر فایل با نام note وجود داشته باشد چی؟ اون وقت زمان ایجاد را تغییر میدهد و زمان الان را برایش set میکند

خروجی touch همچنین با سوییچ های مختلف میتوانید زمان مورد نظر خود را روی فایل set کنید

touch -d "5 nov" note

خروجی touch با سوییچ

[!Warning] نکته امنیتی شما میدانید که گاهی مهاجمین برای اینکه شما نتوانید زمان دقیق ایجاد فایل‌هایشان را تشخیص دهید و یا زمان فایل ایجاد شده را با فایل های کناریش یکسان کند از این دستور استفاده میکند

دستور file

دستور file میتواند file type دقیقا به ما بدهد این دستور برای تشخیص و تمییز انواع فایل از txt، binary,…. است. خروجی file

دستور dd

دستور dd یکی از ابزارهای قدرتمند و خطرناک لینوکس است که برای کپی، تبدیل و نوشتن داده‌ها در سطح بایت استفاده می‌شود

dd if=<input_file> of=<output_file> [options]
sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress

دستور بالا محتوای کامل دیسک /dev/sda را روی /dev/sdb کپی می‌کند. منظور از bs طول بلوک هایی است که کپی میشود.

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

sudo dd if=/dev/zero of=/dev/sdb bs=1M status=progress

در اینجا تمام پارتیشن sdb به صورت غیر قابل بازگشت wipe میشود.

[!warning] چرا میگیم غیر قابل بازگشت دیسک‌ها داده را به‌صورت بیت‌ها (۰ و ۱) در سکتورهایی ذخیره می‌کنند.
وقتی فایلی را حذف می‌کنی، سیستم‌عامل معمولاً فقط آدرس آن فایل در جدول فایل‌ها (File Table) را پاک می‌کند — نه خود داده را! ولی با dd داریم در سکتورهای هارد zero مینویسیم یعنی فایل هست اما محتوا NULL شده است.

دستور find

دستور find برای پیدا کردن فایل ها به کار میرود دستور زیر را در نظر بگیرید همه فایل ها را فارغ از اینکه hidden هستند یا خیر برای ما پیدا و لیست میکند (به صورت recursive از مسیری که هستیم داخل تک تک پوشه ها میرود)

find .

میتوانیم اینجا فیلترهایی بنویسیم مثلا فرض کنید قصد داریم فایل هایی پیدا کنیم که در اسم آن ها با log تمام میشود.

find . -iname "*log"

سوییچ دیگری که در این دستور به کار میرود type است فرض کنید من قصد دارم تمام symbolic linkها را پیدا کنم

find . -type l

و اما یه سوییچ خیلی خوبه دیگه ای که برای این دستور هست سوییچ ls هست که خروجی رو به صورت ls نشون میده :

find . -type l -ls

خروجی find

فشرده سازی فایل ها

دستور gz

دستورات مختلفی برای فشرده سازی فایل ها در لینوکس وجود دارد که ما اینجا میخواهیم درباره gzip صحبت کنیم. این دستور خیلی ساده است برای اینکه یه فایل را فشرده کنید کافیه دستور زیر را بزنید

gzip filename

پسوند این فایل ها gz. است. نکته مهم این است که این دستور فایل جدید نمیسازد و همان فایل قبلی را فشرده میکند و دیگر خود فایل وجود ندارد.

برای اینکه فایل را از حالت فشرده خارج کنیم از دستور gunzip استفاده میکنیم.

gunzip filename.gz

دستور tar

مشکل تا اینجا کجاست؟ این ها برای یه فایل بود فکر کنید میخواهیم دوتا فایل file1 و file2 را فشرده کنیم

tar cf myfile.tar file1 file2

اینجا cf به معنی create file است یعنی فایل جدیدی ساخته میشود به نام myfile.tar حالا داخلش چی هست file1 و file2

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

tar xf myfile.tar

میتونستیم به جای cf از cfz استفاده کنیم یعنی فایل ها رو با gzip فشرده هم بکن

tar cfz myfile.tar.gz file1 file2

دستور cpio

این دستور فشرده سازی لیست فایل ها را با (pipe) دریافت میکنه اما به شکل عجیبی خروجی رو در فایل نمینویسه و فقط print میکنه برای اینکه فایل فشرده رو بسازیم از < استفاده میکنیم. سوییچ o در این دستور به معنی فشرده سازی است
ls | cpio -o > file.cpio

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

cpio -id < file.cpio

سوییچ i ، به معنی extract و d به معنی ساخت پوشه هاست در صورت وجود.

tags: linux - dd  - find - gzip - tar