شما برای مطالعه این مقاله فقط 7 دقیقه وقت نیاز دارید

دستور touch در لینوکس
دسته بندی : آموزش لینوکس

آشنایی با دستور touch در لینوکس + مثال های پرکاربرد

5/5 - (4 امتیاز)

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

دستور touch از دسته دستورات بنیادی در محیط لینوکس محسوب می‌شود. اگرچه اصلی‌ترین کاربرد دستور touch در لینوکس تغییر timestampهای فایل هاست، اما این دستور برای ایجاد فایل جدید نیز به کار می‌رود. ضمنا با این دستور میتوان چندین فایل را بصورت همزمان ایجاد کرد یا برچسب زمان آن‌ها را تغییر داد.

در دریای بیکران دستورات لینوکس، دستور چندکاره و بنیادی touch به عنوان یک ابزار برجسته شناخته می‌شود. کاربرد این دستور به فراتر از به‌روزرسانی برچسب زمانی یا timestamp گام گذاشته تا دستور touch در جایگاه یک ابزار مفید با گستره‌ای از کاربردها قرار گیرد.

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

در این مقاله به بررسی ریزه‌کاری‌های دستور touch خواهیم پرداخت تا به دانش لینوکسیتان بیافزاییم. برای فهم عمیق‌تر این مطالب داشتن دانش تخصصی لینوکس و برنامه نویسی خالی از لطف نیست.

Timestamp یا مهر زمان چیست + انواع آن

بخاطر سر و کار داشتن دستور touch با برچسب‌های زمان یا همان timestamps بهتر است در ابتدای کار آشنایی نسبی با این مفهوم بدست آوریم.

کلمه timestamp از استمپ‌های جوهری گرفته شده است که برای ثبت زمان جاری بر روی اسناد کاغذی در دفاتر استفاده میشد. این کلمه در دنیای تکنولوژی در فایل‌های کامپیوتری، شبکه بلاکچین و دوربین‌های دیجیتال بکار می‌رود.

برچسب زمان، مهر زمان یا همان timestamp به معنای ثانیه‌های سپری شده از ساعت 00:00:00 UTC روز اول ژانویه سال 1970 تا همین لحظه است.

timestamp عددی بر مبنای ثانیه است و این سیستم عامل ماست که آن را برایمان به شکل زمانی متشکل از سال، ماه، روز، ساعت، دقیقه و ثانیه درمی‌آورد. بهتر است برای دقت بیشتر ساعت سیستم لینوکس را به‌روز نگهدارید.

انواع Timestamp یا برچسب زمان

یک فایل در سیستم عامل لینوکس دارای 3 نوع برچسب زمان یا همان Timestamp است:

1. زمان دسترسی یا atime (access time)

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

2. زمان اصلاح یا mtime (modify time)

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

3. زمان تغییر یا ctime (change time)

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

دستور touch چیست؟

دستور touch یک دستور اساسی و مهم در لینوکس است که برای ایجاد تغییر در timestamps بکار می‌رود اما پتانسیلی فراتر از این عملکرد پایه‌ای دارد. این دستور در مواردی مانند به‌روزرسانی timestampهای اصلاح، تغییر و دسترسی یک فایل بکار رفته و توانایی ایجاد فایل‌های جدید را نیز دارد.
این دستور ساده اما موثر از اصلی‌ترین دستورهای مورد استفاده هر کاربر لینوکس است. ترکیب دستور یا syntax برای به‌روزرسانی timestamp یک فایل با استفاده از دستور touch بصورت زیر است:

touch [options] filename

متغیر ‘filename’ نام فایلی است که مایل به ایجاد آن یا تغییر timestamp اش هستید و متغیر ‘options’ نحوه تنظیم عملکرد دستور touch را مشخص می‌کند. این دستور با و بدون options کار می‌کند.

موارد متداول استفاده از دستور touch در لینوکس

دستور touch استفاده‌های متنوعی دارد. به همین جهت در این قسمت انواع آن را باهم بررسی و تشریح می‌کنیم.

1. بروزرسانی timestampهای اصلاح و دسترسی فایل

عملکر پیش‌فرض دستور touch بدون هیچ تگی برای فایلی که وجود دارد،‌ به‌روزرسانی timestampهای اصلاح و دسترسی یا همان atime و mtime به زمان جاری سیستم‌عامل است. این کار به سادگی با قرار دادن نام فایل بعد از دستور touch و اجرای دستور اتفاق می‌افتد.

برای مثال، جهت به‌روزرسانی همزمان atime و mtime فایل ‘example.txt’ باید بدین صورت کد را اجرا کنیم:

touch example.txt

همچنین می‌توان با قراردادن کاراکترهای a- و m- به جای options به ترتیب برچسب زمان دسترسی یا atime و برچسب زمان اصلاح یا mtime فایل را به تنهایی تغییر داد:

touch -a example.txt
touch -m example.txt

2. ایجاد فایل جدید

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

اگر فایلی را گم کرده‌اید یا از وجودش مطمئن نیستید می‌توانید از دستور find برای جستجوی فایل در سیستم عامل لینوکس استفاده کنید.

دستور touch در مواقعی که نیاز به ایجاد آنی یک فایل خالی دارید شدیدا مفید است. با این دستور می‌توانید یک فایل خالی جدید ایجاد کنید:

touch <filename>

به عنوان مثال اگر فایلی با نام test وجود نداشته باشد، با وارد کردن دستور زیر ایجاد می‌شود:

touch test

ایجاد فایل جدید با دستور touch

با  کدهای زیر می‌توانید بطور همزمان چندین فایل خالی با دستور touch ایجاد کنید.

در این کد کافیست به جای <filename> اسم فایل‌ها را قرار دهید.

touch <filename> <filename>

به عنوان مثال:

touch test1 test2

ایجاد چند فایل جدید با دستور touch

برای ایجاد فایل‌های جدید و خالی بصورت انبوه از این کد می‌توانید استفاده کنید. در این دستور اسم فایل و عنصر اول و آخر اسم را باید به ترتیب به‌جای filename و start و finish قرار دهید.

touch <filename{<start>..<finish>}>

مثلا ده فایل با استفاده از ارقام 1 تا 10 میخواهیم بسازیم:

touch test{1..10}

ایجاد ده فایل با ارقام ۱ تا ۱۰ در لینوکس

یا فایل‌هایی با حروف a تا j می‌خواهیم بسازیم:

touch test_{a..j}

ایجاد فایل ها با حروف a تا j در لینوکس

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

کلیک کنید  معرفی لیست کامل توزیع های سیستم عامل لینوکس

همینطور در مواقعی که از  وجود یا عدم وجود فایلی مطلع نیستید و فقط می‌خواهید timestamp آن را در صورت وجود تغییر دهید و فایل جدیدی ایجاد نکنید، مانند کد زیرین عبارت c- را در قسمت options قرار دهید.

touch -c <filename>

مثلا دستور زیر timestamp برچسب زمانی فایل new_test را تغییر می‌دهد و در صورت عدم وجود این فایل، فایل جدیدی ایجاد نمی‌کند.

touch -c new_test

ایجاد فایل جدید در لینوکس با دستور touch

3. تنظیم یک Timestamp خاص در لینوکس

با استفاده از دستور touch می‌توان یک Timestamp خاص تنظیم کرد. این دستور در مواقعی که با اسکریپت‌ها سروکاردارید یا می‌خواهید سناریوهایی را تست کنید که به Timestampهای خاصی نیاز دارند پرکاربرد است. جهت انجام این کار چندین روش در اختیار داریم:

a) تگ t-

در اولین روش بعد از دستور touch عبارت t- را قرار داده و بعد از آن Timestamp دلخواه را در فرمت زیر وارد کنید و در آخر اسم فایل را قرار دهید.

[[CC]YY]MMDDhhmm[.ss]

شرح  فرمت زمانی از آغاز تا پایان به صورت زیر است:

  • CC: دو کاراکتر آغازین سال
  • YY: دو کاراکتر پایانی سال
  • MM: کاراکترهای ماه
  • DD: کاراکترهای روز
  • hh: کاراکترهای ساعت
  • mm: کاراکترهای دقیقه
  • ss: کاراکترهای ثانیه

برای مثال:

touch -t 199901010000 test

در این مثال timestampهای فایل test به زمان ساعت 00:00:00 یکم ژانویه 1999 تنظیم شد.

تنظیم یک Timestamp خاص در لینوکس

b) تگ d-

با استفاده از تگ d- و یک date string در دستور touch می‌توان هر سه برچسب زمانی را به زمان دلخواه تغییر داد.

touch -d <string> <filename>

اگر بخواهیم برچسب‌های زمانی فایلی را به ساعت 10:28 روز 27 می 1998 تغییر دهیم باید دستور زیر را اجرا کنیم:

touch -d '27 May 1998 10:28' example.txt

دقت کنید که رشته تاریخ یا date string باید در یک single quote قرار بگیرد.

رشته تاریخ یا date string فرمتی منعطف است که فرم‌های نوشتاری محاوره‌ای را نیز پشتیبانی می‌کند. صرفا با ارائه تاریخ در همین کد می‌توان برچسب زمان فایل را به سال جاری تغییر داد. این رشته را بصورت‌های زیر می‌توانید در کد وارد کنید:

  • تاریخ‌ در فرمت تقویم مانند 19 August 2020
  • زمانی از روز مانند 8:02am یا 9:27pm
  • روزی از روزهای هفته مانند Sunday
  • تاریخ‌های نسبی مانند 5 years ago یا yesterday و یا next tuesday

برای مثال جهت تغییر مهرزمان فایل test با تگ d- به فردا کد زیر را اجرا می‌کنیم:

touch -d tomorrow test

تغییر Timestamp فایل با دستور touch

c) تگ r-

با بهره‌گیری از آپشن r- می‌توان timestampهای فایلی را بر timestampهای یک فایل دیگر تنظیم کرد. با این کار از برچسب‌های زمانی فایلی خاص بعنوان زمان جاری برای فایل مدنظرمان استفاده می‌کنیم.

touch -r <reference file> <file>

دستور زیر مهرهای زمانی فایل test را بعنوان زمان جاری فایل new_test ست می‌کند:

touch -r test new_test

تنظیم Timestamp یک فایل با زمان فایل دیگر

d) تگ‌های ترکیبی

از آپشن‌هایی که گفته شد می‌توان بصورت ترکیبی نیز بهره برد. شرح آن چنین است:

  • تغییر atime به زمانی خاص:
touch -at <timestamp> <filename>
  • تغییر mtime به زمانی خاص:
touch -mt <timestamp> <filename>
  • تغییر همزمان mtime و atime به زمانی خاص:
touch -amt <filename>

در صورت صلاحدید می‌توانید از تگ d- نیز  بجای t- همانند مثال‌های بالا استفاده کنید.

4. به‌روزرسانی Timestamp همزمان چندین فایل

دستور touch این امکان را به شما می‌دهد تا Timestamp چند فایل را بصورت همزمان آپدیت کنید. فقط لازم است اسم فایل‌ها را بعنوان argument پشت سر هم در دستور touch بنویسید تا فایل‌ها آپدیت شوند. مثلا دستور :

touch file1.txt file2.txt file3.txt

timestampهای اصلاح و دسترسی سه فایل file1.txt و file2.txt و file3.txt را به‌روز می‌کند.

5. تغییر مهرزمان Symbolic Links

با قراردادن h- در قسمت options کد touch می‌توان برچسب زمان یک Symbolic Link را بدون تغییر Timestamp فایل‌های رفرنس‌شده تغییر داد.

touch -h <filename>

مثلا کد:

touch -h link

برچسب زمان symbolic link را به زمان جاری تغییر می‌دهد و با فایل رفرنس کاری ندارد.

تغییر مهرزمان Symbolic Links

اما اگر تگ h- را در دستور touch قرار ندهیم، دستور touch برچسب زمان فایل رفرنس‌شده را تغییر می‌دهد و برچسب زمان symbolic link را دست‌نخورده باقی می‌گذارد.

touch link

تغییر مهرزمان فایل رفرنس شده

سخن آخر

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

اگر لازم است که timestamps را آپدیت کنید، سریعا فایل جدیدی ایجاد کنید یا صرفا برای تست timestampهای خاصی تنظیم کنید، دستور touch در ساده‌سازی انجام این کارها به یاریتان خواهد شتافت.

ساده بودن کاربرد این دستور شاید باعث ایجاد تصور اشتباه در مورد قدرتش شود اما این دستور ابزاری قدرتمند برای کاربران تازه‌کار و حرفه‌ای لینوکس است.

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

مطالب مشابهی که شاید علاقمند باشید

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

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید