آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

خاصیت Tab Completion

سه شنبه, ۱ مرداد ۱۳۹۸، ۰۳:۰۴ ب.ظ

یک ویژگی کاربردی که سبب افزایش سرعت و عملکرد کاربران در خط فرمان می گردد. بدین صورت که با تایپ قسمتی از ابتدای دستور، نام فایل، نام دایرکتوری یا سوئیچ یک دستور و استفاده از کلید tab، آنها را تکمیل کرده و یا گزینه های در دسترس را پیشنهاد می دهد.

* مکانیزم استفاده از کلید tab :

 اگر عبارت تایپ شده تنها به یک گزینه محدود شود، یکبار فشردن کلید tab آنرا کامل می کند. اما اگر بیش از یک گزینه با این عبارت شروع شوند، با دوبار زدن کلید tab، لیست گزینه ها نمایش می یابد. با بیان مثال، به بررسی این موضوع می پردازیم.

& استفاده از کلید tab در تایپ دستور whereis : در خط فرمان کاراکتر w را تایپ کرده و کلید tab را دوبار می زنیم. با این کار تمامی دستوراتی که با کاراکتر w شروع می شوند، برای کاربر به نمایش در می آیند.

w<tab><tab>

w                       wftopfa            whois                      wsgen

wait                    wget                wipe                        wsimport

wall                    whatis             wipefs                      wvdial

watch                  whereis           withsctp                  wvdialconf

watchgnupg        which              wodim                    wvgain

wavpack              while              wpa_cli                   wvtag

wc                        whiptail          wpa_passphrase     wvunpack

wdctl                    who                wpa_supplicant 

weak-modules      whoami          write

در ادامه با تایپ کاراکتر h و دوبار زدن کلید tab، لیست بالا محدود شده و فقط دستوراتی که با wh شروع می شوند، در لیست پیشنهادی قرار می گیرند.

wh<tab><tab>

whatis       which        whiptail     whoami   

whereis      while         who          whois

در نهایت با تایپ کارکتر e و یکبار فشردن کلید tab، دستور whereis کامل می شود.

whe<tab>        =>       whereis


& استفاده از کلید tab برای تغییر مکان به دایرکتوری etc/systemd/ :

cd /e<tab>        =>       cd /etc/

cd /etc/sys<tab><tab>       

sysconfig/ sysctl.d/  systemd/  

cd /etc/syst<tab>        =>       cd /etc/systemd/

شرح دستورات بالا : در سطر اول بعد از تایپ حرف e و فشردن کلید tab، نام دایرکتوری etc در خط فرمان قرار می گیرد. این موضوع به این دلیل است که تنها یک دایرکتوری در مسیر / قرار دارد که با حرف e شروع می شود. در سطر دوم بعد از وارد کردن کلمه sys، زدن یکبار کلید tab بی تاثیر می باشد، ولی اگر دوبار از کلید tab استفاده شود، لیست دایرکتوری های که با عبارت sys شروع می شوند، برای کاربر به نمایش در می آید. در سطر سوم با وارد کردن حرف t و فشردن کلید tab، نام دایرکتوری systemd در خط فرمان قرار می گیرد.


* چند نمونه از کاربردهای خاصیت Tab Completion را در زیر مشاهده می کنید.

 & هنگام کار بر روی فایل های که دارای نام طولانی، پیچیده و همراه با کاراکترهای خاص باشند، این خاصیت بسیار مفید است.

ls

test_file     LearnLinux_TabCompletion_1398-04-25.pdf

vi L<tab>        =>       vi LearnLinux_TabCompletion_1398-04-25.pdf

در مثال بالا دو فایل در مکان جاری قرار دارند و کاربر برای ویرایش فایلی با نام طولانی، فقط عبارت vi L را تایپ کرده و با فشردن کلید tab، نام فایل کامل می شود.


& برای نمایش لیست کاربران سیستم، کافیست کاراکتر ~ را تایپ کرده و کلید tab را دوبار بزنید.

~<tab><tab>

~abrt/             ~geoclue/         ~operator/         ~sshd/

~adm/            ~halt/                ~polkitd/           ~sync/

~avahi            ~lightdm/         ~postgres          ~systemd-coredump/

~bin/              ~lp/                   ~pulse              ~systemd-network/

~chrony/        ~mail/               ~root/               ~systemd-resolve/

~colord/         ~masih/            ~rpc                  ~systemd-timesync/

~daemon/       ~rpcuser/          ~tcpdump/

~dbus/            ~rtkit/               ~unbound/

~ftp/               ~nobody/          ~setroubleshoot/  

~games/         ~openvpn/        ~shutdown/ 

 

& جهت نمایش لیست متغیرهای سیستم، کافیست کاراکتر $ را تایپ کرده و کلید tab را دوبار بزنید.

$<tab><tab>

$_                                      $LINES

$BASH                             $LS_COLORS

$BASH_ARGC                $MAIL

$BASH_ARGV                $MAILCHECK

$BASH_CMDS                $OPTERR

$BASH_COMMAND      $OPTIND

$BASH_LINENO             $PATH

$BASHOPTS                    $PIPESTATUS

$BASHPID                        $PPID

$BASH_SOURCE             $PS1

$BASH_SUBSHELL         $PS2

$BASH_VERSINFO          $PS4

 

& بصورت زیر می توان دستگاه هایی که در فایل hosts تعریف شده اند، را لیست نمود. ( فایل hosts در مسیر etc/ قرار دارد و برای تبدیل نام به آدرس IP استفاده می شود)

@<tab><tab>

@::1                   @localhost4                        @localhost6.localdomain6

@DBS_Server    @Guard_1                           @localhost.localdomain

@localhost          @localhost6

 

 

* غیرفعال نمودن خاصیت Tab Completion برای همه کاربران :

& روش اول : با ویرایش فایل etc/inputrc/ و درج عبارت مشخص شده در پایین، این خاصیت برای همه کاربران سیستم غیرفعال می شود.

vi /etc/inputrc

set disable-Completion on

نکته : از فایل inputrc در زمان ایجاد یک Bash، برای پیکربندی نقش کلیدهای صفحه کلید استفاده می گردد. (بطور مثال نقش کلیدهای Ctrl+d، خروج از Session فعلی می باشد)

نکته : تغییر ایجاد شده، در Session های جدید کاربران اعمال می گردد.

& روش دوم : با ویرایش یکی از فایل های پیکربندی سیستم (مانند etc/bashrc/) و درج یکی از دستورات زیر، می توان خاصیت Tab Completion را برای همه ی کاربران غیرفعال نمود.

vi /etc/bashrc

bind 'set disable-Completion on'

یا

bind -u complete

 

* غیرفعال نمودن خاصیت Tab Completion برای یک کاربر خاص :

& روش اول : اینکار با افزودن عبارت زیر به فایل inputrc. در Home Directory هر کاربر، قابل انجام می باشد.

vi ~/.inputrc

set disable-Completion on

نکته : تنظیمات انجام شده در فایل inputrc./~ نسبت به فایل etc/inputrc/ ارجحیت دارند.

& روش دوم : درج یکی از دو دستور زیر در فایل bashrc./~ ، سبب غیرفعال شدن خاصیت Tab Completion برای یک کاربر خاص می شود.

vi ~/.bashrc

bind 'set disable-Completion on'

یا

bind -u complete

* غیرفعال نمودن خاصیت Tab Completion در یک Session :

& این موضوع با اجرای یکی از دستورات زیر قابل انجام می باشد.

Bash --noediting

یا

bind 'set disable-Completion on'

یا

bind -u complete

 

نکته : جهت فعال نمودن دوباره خاصیت Tab Completion، می توان عبارت درج شده در فایل های پیکربندی را حذف کرده و یا به عبارت زیر تغییر داد.

set disable-Completion off

 

* غیرفعال نمودن حساسیت به حروف کوچک و بزرگ (Case Sensitive) در زمان استفاده از خاصیت Tab Completion:

همانطور که می دانید حروف کوچک و بزرگ در لینوکس متفاوت می باشند، این ویژگی در استفاده از خاصیت Tab Completion نیز صادق است. در مثال زیر به بررسی این موضوع می پردازیم.

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

touch  Amir  ahmad  Abbas  ali

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

vi a<tab><tab>

ahmad          ali   

vi A<tab><tab>

Abbas          Amir  

برای غیرفعال نمودن خاصیت Tab Completion، عبارت زیر را در فایل etc/inputrc/ قرار می دهیم.

vi /etc/inputrc

set completion-ignore-case on

بعد از اعمال تغییرات بالا، غیرفعال شدن خاصیت Case Sensitive، در خروجی دستورات زیر مشخص می باشد.

vi a<tab><tab>

Abbas     ahmad     ali    Amir  

vi A<tab><tab>

Abbas     ahmad     ali    Amir

 

۹۸/۰۵/۰۱
عیسی اسداله پور

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی