ادامه سلسله یادداشت ها در مورد
1) PROMPT_COMMAND
ممکن است قبلاً بدانید که چگونه دستور را برای نمایش اطلاعات مفید مختلف دستکاری کنید، اما همه نمیدانند که میتوانید هر بار که دستور نمایش داده میشود، دستور شل را اجرا کنید.
در واقع، بسیاری از دستکاریکنندههای پیچیده از این متغیر برای اجرای دستورات برای جمعآوری اطلاعاتی که در اعلان نمایش داده میشوند، استفاده میکنند.
این را در یک پوسته جدید اجرا کنید و ببینید چه اتفاقی برای جلسه می افتد:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
اگر بدوید history
در کنسول، لیستی از دستورات را دریافت خواهید کرد که قبلاً در حساب کاربری خود اجرا شده اند.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
پس از تنظیم این متغیر، ورودی های جدید زمان را همراه با دستور ضبط می کنند، بنابراین خروجی به شکل زیر خواهد بود:
1871 این را در 01/05/19 13:38:07 cat /etc/resolv.conf 1872 اجرا کردم: 01/05/19 13:38:19 curl bbc.co.uk 1873 این را در : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 این را در: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 این را اجرا کردم: 01 /05/19 13:39:25 sudo su -
قالببندی با کاراکترهایی مطابقت دارد man date
.
3) CDPATH
برای صرفه جویی در زمان در خط فرمان، می توانید از این متغیر برای تغییر دایرکتوری ها به همان راحتی که دستورات را صادر می کنید استفاده کنید.
مانند PATH
، متغیر CDPATH
لیستی از مسیرها است که با دو نقطه جدا شده است. وقتی دستور را اجرا می کنید cd
با یک مسیر نسبی (یعنی بدون اسلش اصلی)، به طور پیشفرض پوسته در پوشه محلی شما برای نامهای منطبق نگاه میکند. CDPATH
در مسیرهایی که داده اید دایرکتوری را که می خواهید به آن بروید جستجو می کند.
در صورت نصب CDPATH
به این روش:
$ CDPATH=/:/lib
و سپس وارد کنید:
$ cd /home
$ cd tmp
سپس شما همیشه در پایان خواهید داشت /tmp
مهم نیست کجا هستی.
با این حال، مراقب باشید، زیرا اگر محلی را در لیست مشخص نکنید (.
) پوشه، پس نمی توانید پوشه دیگری ایجاد کنید tmp
و طبق معمول به سراغ آن بروید:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
اوه!
این شبیه سردرگمی است که وقتی فهمیدم پوشه محلی در متغیر آشناتر گنجانده نشده است، احساس کردم. PATH
... اما شما باید این کار را در متغیر PATH خود انجام دهید زیرا ممکن است فریب بخورید و دستور جعلی را از برخی کدهای دانلود شده اجرا کنید.
من با نقطه شروع تنظیم می شود:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
آیا تا به حال به تایپ کردن فکر کرده اید exit
آیا شما را از پوسته bash فعلی خود به پوسته "والد" دیگری می برد یا فقط پنجره کنسول را به طور کامل می بندد؟
این متغیر میزان عمق لانه شما در پوسته bash را پیگیری می کند. اگر ترمینال جدیدی ایجاد کنید، روی 1 تنظیم می شود:
$ echo $SHLVL
1
سپس، اگر فرآیند پوسته دیگری را شروع کنید، تعداد افزایش می یابد:
$ bash
$ echo $SHLVL
2
این می تواند در اسکریپت هایی که مطمئن نیستید از آن خارج شوید یا نه، یا از جایی که تو در تو قرار گرفته اید را پیگیری کنید، بسیار مفید باشد.
5) LINENO
این متغیر همچنین برای تجزیه و تحلیل وضعیت فعلی و اشکال زدایی مفید است LINENO
، که تعداد دستورات اجرا شده در جلسه را تا کنون گزارش می دهد:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
این بیشتر در هنگام اشکال زدایی اسکریپت ها استفاده می شود. درج خطوط مانند echo DEBUG:$LINENO
، می توانید به سرعت تعیین کنید که در کجای اسکریپت هستید (یا نه).
6) REPLY
اگر مثل من معمولا کدی را به این صورت می نویسید:
$ read input
echo do something with $input
ممکن است تعجب آور باشد که اصلاً لازم نیست نگران ایجاد متغیر باشید:
$ read
echo do something with $REPLY
این هم همین کار را می کند.
7) TMOUT
برای جلوگیری از ماندن طولانی مدت در سرورهای تولیدی به دلایل امنیتی یا اجرای تصادفی چیزی خطرناک در ترمینال اشتباه، تنظیم این متغیر به عنوان یک محافظت عمل می کند.
اگر چیزی برای تعداد مشخصی از ثانیه وارد نشود، پوسته خارج می شود.
یعنی این یک جایگزین است sleep 1 && exit
:
$ TMOUT=1
منبع: www.habr.com