| GRMLZSHRC(5) | GRMLZSHRC(5) |
نام (NAME)
grmlzshrc - پیکربندی تعاملی zsh پروژه Grml
خلاصه دستور (SYNOPSIS)
zsh [گزینهها]...
توضیحات (DESCRIPTION)
پروژه Grml یک پیکربندی تعاملی جامع (که در سراسر این سند با عنوان grmlzshrc نامیده میشود) برای شل فوقالعاده یونیکس zsh http://zsh.sourceforge.net. فراهم میکند. این سند، کتابچه راهنمای مرجع برای آن پیکربندی است.
برای استفاده از grmlzshrc، حداقل به نگارش 5.1 از zsh نیاز دارید.
رفتار grmlzshrc بسته به اینکه کدام کاربر آن را بارگذاری میکند متفاوت است. برای کاربر ریشه (EUID == 0) تنها زیرمجموعهای از قابلیتها به صورت پیشفرض بارگذاری میشود. این رفتار را میتوان با تنظیم متغیر راهاندازی GRML_ALWAYS_LOAD_ALL تغییر داد (پایین را ببینید).
کاربران ممکن است بخواهند نگارشی بهروز از پیکربندی (احتمالاً از منابع گیت) را در ~/.zshrc نگه دارند. اگر این اتفاق در سیستمی بیفتد که zshrc سراسری آن نیز یک grmlzshrc است (اما احتمالاً نسخهای قدیمیتر)، میتوانید با اجرای دستور زیر از بارگذاری نگارش سراسری جلوگیری کنید:
echo setopt no_global_rcs >> ~/.zshenv
توجه داشته باشید که این کار تمام پروندههای سراسری را، به استثنای پرونده سراسری zshenv، غیرفعال خواهد کرد.
متغیرهای راهاندازی (STARTUP VARIABLES)
برخی رفتارهای grmlzshrc را میتوان با تنظیم متغیرهای مشخصی در شل تغییر داد. این متغیرها را میتوان هنگام راهاندازی zsh به صورت موقت به این شکل تنظیم کرد:
% GRML_DISPLAY_BATTERY=1 zsh
یا با تنظیم همیشگی آنها در zshrc.pre (بخش پروندههای کمکی در پایین را ببینید).
BATTERY
COMMAND_NOT_FOUND
GRML_COMP_CACHING
GRML_COMP_CACHE_DIR
GRML_DISPLAY_BATTERY
GRML_ZSH_CNF_HANDLER
GRML_NO_APT_ALIASES
GRML_NO_SMALL_ALIASES
GRMLSMALL_SPECIFIC
HISTFILE
HISTSIZE
MAILCHECK
NOCOR
NOETCHOSTS
NOMENU
NOPRECMD
REPORTTIME
SAVEHIST
watch
ZSH_NO_DEFAULT_LOCALE
ZSH_PROFILE_RC
COMPDUMPFILE
سبکهای ویژه GRML-ZSHRC (GRML-ZSHRC SPECIFIC STYLES)
سبکها (Styles) یک سازوکار پیکربندی حساس به زمینه در zsh هستند. شل از این سازوکار به طور گسترده در زیرسیستمهایی مانند تکمیل خودکار و اطلاعات سامانه کنترل نسخه (VCS) استفاده میکند. این سازوکار بیرون از فضای نام متغیرهای کلاسیک شل قرار دارد و از آلودگی آن جلوگیری میکند. قابلیتهای جدید در zshrc گِرمل احتمالاً به جای متغیرها از سبکها استفاده خواهند کرد. برخی از ویژگیهای این پیکربندی (مانند مدیریت پشته دایرکتوری) در حال حاضر از سبکها استفاده میکنند. آن سبکها در کنار ویژگیهای مربوطه مستند شدهاند. این بخش سبکهای عمومیتر را مستند میکند.
زمینه: :grml:completion:compinit
این زمینه مربوط به فراخوانی تابع compinit در zshrc است که سامانه تکمیل خودکار مبتنی بر تابع zsh را راهاندازی میکند.
arguments
zstyle ':grml:completion:compinit' arguments -i
تنها در صورتی این کار را انجام دهید که بدانید در صورت غیرفعال بودن compaudit چه نوع بررسیهای امنیتی غیرفعال میشوند و آیا این موضوع با پیکربندی خاص شما سازگار است یا خیر.
این سبک باید در نقطهای تنظیم شود که zshrc گرمل compinit را اجرا میکند. یک راه ممکن برای انجام این کار، تنظیم آن در ~/.zshrc.pre است (برای جزئیات به بخش پروندههای کمکی در پایین مراجعه کنید).
شرح قابلیتها (FEATURE DESCRIPTION)
این بخش شرح دقیقی از قابلیتهای غیر استاندارد پیادهسازیشده توسط grmlzshrc ارائه میدهد.
مدیریت پشته دایرکتوری (dirstack handling)
پشته دایرکتوری در grmlzshrc ماهیتی ماندگار دارد. هر بار که پوشه کاری zsh تغییر میکند، پشته در یک پرونده ذخیره میشود. این پرونده از طریق متغیر DIRSTACKFILE قابل پیکربندی است و به طور پیشفرض ~/.zdirs است. متغیر DIRSTACKSIZE در این پیکربندی به صورت پیشفرض برابر با 20 است.
پرونده DIRSTACKFILE با هر بار شروع zsh بارگذاری میشود، بنابراین نشستهای جدید zsh پشته دایرکتوری نشستی را به ارث میبرند که اخیراً DIRSTACKFILE را بهروزرسانی کرده است.
اگر مایلید ویژگی پشته دایرکتوری ماندگار را به طور کامل غیرفعال کنید، میتوانید با تنظیم سبک بولی enable روی false در زمینه مناسب این کار را انجام دهید (پیشفرض true است):
zstyle ':grml:chpwd:dirstack' enable false
امکان اعمال فیلتر بر روی نام پوشههایی که در پرونده پشته دایرکتوری ماندگار ثبت میشوند وجود دارد. دو روش برای پیکربندی این فیلتر وجود دارد: فیلتر عمومی مبتنی بر تابع و فیلتر مبتنی بر الگو. هر دو از طریق سبکها در زمینه ':grml:chpwd:dirstack' تنظیم میشوند.
برای استفاده از فیلتر مبتنی بر تابع، سبک filter را برای آن زمینه روی نام تابعی تنظیم کنید که هر بار قرار است نام پوشهای به پشته دایرکتوری ماندگار افزوده شود فراخوانی گردد. اگر مقدار بازگشتی تابع نشاندهنده موفقیت باشد (یعنی مقدار بازگشتی "0")، نام پوشه فیلتر شده و به پشته ماندگار افزوده نمیشود. مثال:
function my_dirstack_filter() { [[ $1 == /tmp(|/*) ]] }
zstyle ':grml:chpwd:dirstack' filter my_dirstack_filter
فیلتر مبتنی بر الگو از فهرستی از الگوها استفاده میکند که به سبک exclude در زمینه مذکور داده میشوند. هر الگو آزمایش میشود و اولین الگویی که مطابقت داشته باشد، از افزودن نام پوشه به پشته ماندگار جلوگیری میکند. اگر هیچیک از الگوها مطابقت نداشته باشد، نام پوشه افزوده میشود. مثال:
zstyle ':grml:chpwd:dirstack' exclude "/tmp(|/*)" "$HOME/tmp(|/*)"
فیلتر مبتنی بر تابع عمومیتر است، و راهاندازی فیلتر مبتنی بر الگو آسانتر است. اگر از هر دو نوع فیلتر به طور همزمان استفاده شود، فیلتر مبتنی بر تابع قبل از فیلتر مبتنی بر الگو اجرا خواهد شد.
اگر میخواهید فیلترهای خود را هنگام بارگذاری پرونده پشته دایرکتوری ماندگار اعمال کنید، سبک بولی filter-on-load را تنظیم کنید (پیشفرض false است):
zstyle ':grml:chpwd:dirstack' filter-on-load true
تنظیم سبکهای filter-on-load و enable باید در ".zshrc.pre" انجام شود زیرا سبکها باید هنگام اجرای پیکربندی اصلی تنظیم شده باشند! سایر سبکها این محدودیت را ندارند، اما فعالسازی سیستم و همچنین فیلتر اولیه طبیعتاً با استفاده از تنظیمات و فیلترهایی انجام خواهد شد که در آن لحظه پیکربندی شدهاند.
در مورد filter-on-load، قاعده کلی این است: اگر میخواهید هنگام بارگذاری فیلتر کنید، همه چیز را در ".zshrc.pre" تنظیم کنید؛ در غیر این صورت ".zshrc.local" نیز به همان خوبی کار میکند.
پروفایلهای مبتنی بر دایرکتوری (Directory-based Profiles)
اگر نیاز دارید هر بار که وارد درختهای دایرکتوری خاصی میشوید کارهای مشخصی انجام دهید، این همان قابلیتی است که به دنبال آن هستید.
راهاندازی اولیه (Initialisation)
برای راهاندازی سیستم، باید تابع `chpwd_profiles' را در نقطهای از `zshrc.local' خود فراخوانی کنید؛ ترجیحاً پس از پیکربندی سیستم. پیکربندی سیستم در ادامه توضیح داده شده است.
اگر نیاز به انجام اقدامات اولیهای در نخستین بار فراخوانی `chpwd_profiles' دارید (که باید در پرونده پیکربندی شما باشد)، میتوانید این کار را در تابعی به نام "chpwd_profiles_init" انجام دهید. این تابع باید قبل از فراخوانی `chpwd_profiles' تعریف شده باشد تا به درستی کار کند.
در طول فراخوانی اول `chpwd_profiles' (و در نتیجه تمام توابع پروفایل آن)، پارامتر `$CHPWD_PROFILES_INIT' وجود داشته و مقدار آن `1' است. در سایر حالات، این پارامتر به هیچ وجه وجود ندارد.
سبکها و نامهای پروفایل (Styles and Profile-names)
برای ذخیره پیکربندی، سیستم از توابع و سبکها (سامانه پیکربندی حساس به زمینه zsh) استفاده میکند، مانند این:
zstyle ':chpwd:profiles:/usr/src/grml(|/|/*)' profile grml zstyle ':chpwd:profiles:/usr/src/debian(|/|/*)' profile debian
هنگامی که این کار انجام شد و شما وارد پوشهای شدید که با الگوی بخش سوم زمینه مطابقت دارد، برای نمونه تابعی به نام chpwd_profile_grml (در صورت وجود) فراخوانی میشود.
اگر هیچ الگویی مطابقت نداشته باشد (یعنی هیچ پروفایلی شناسایی نشود)، پروفایل روی 'default' تنظیم میشود که به معنای تلاش برای فراخوانی chpwd_profile_default است.
توضیحی درباره زمینه مورد استفاده (عبارت ':chpwd:profiles:*' در دستور zstyle): بخش سوم در زمینه با ${PWD} تطبیق داده میشود. به همین دلیل استفاده از الگویی مانند /foo/bar(|/|/*) منطقی است، زیرا بدین ترتیب پروفایل برای تمام این مقادیر از ${PWD} شناسایی میشود:
/foo/bar /foo/bar/ /foo/bar/baz
بنابراین اگر میخواهید کاملاً مطمئن شوید که یک پروفایل در /foo/bar و تمام زیرپوشههای عمیقتر آن کار میکند، کافی است از (|/|/*) استفاده کنید.
نام پروفایل شناساییشده در متغیری به نام 'profile' در توابع شما در دسترس خواهد بود و نیازی به کار خاصی از سوی شما نیست.
کنترل اجرای پروفایل (Controlling Profile Execution)
در حین اجرای اولیه، سیستم یک پارامتر به نام $CHPWD_PROFILE ایجاد میکند که روی پروفایل فعال فعلی تنظیم شده است (مقدار پیشفرض "default" است). بدین ترتیب میتوانید با قرار دادن کدی مانند زیر در ابتدای تابع خود، از اجرای کد برای پروفایلی که هماکنون فعال است جلوگیری کنید:
function chpwd_profile_grml() {
[[ ${profile} == ${CHPWD_PROFILE} ]] && return 1
...
}
اگر میدانید که قرار است این کار را همیشه برای تک تک توابع پروفایل پوشه انجام دهید، میتوانید سبک `re-execute' را روی `false' تنظیم کنید (که تنها برای سازگاری با گذشته پیشفرض آن `true' است):
zstyle ':chpwd:profiles:*' re-execute false
اعلام در دسترس بودن/تغییرات پروفایل (Signaling availabily/profile changes)
اگر از این ویژگی استفاده میکنید و نیاز دارید بدانید آیا در شل فعلی شما فعال است، روشهای گوناگونی وجود دارد. در اینجا دو روش ساده آورده شده است:
الف) اگر دانستن فعال بودن قابلیت پروفایلها در هنگام شروع zsh برای شما کافی است، میتوانید از تکه کد زیر استفاده کنید:
(( ${+functions[chpwd_profiles]} )) && print "directory profiles active"
ب) اگر این کافی نیست و ترجیح میدهید هر زمان که پروفایلی تغییر میکند مطلع شوید، میتوانید هر تابع پروفایلی را که میسازید به این صورت آغاز کنید:
function chpwd_profile_myprofilename() {
[[ ${profile} == ${CHPWD_PROFILE} ]] && return 1
print "chpwd(): Switching to profile: $profile"
...
}
این کار تضمین میکند که فقط در صورت تغییر پروفایل اعلان دریافت کنید، نه با هر بار تغییر پوشه. (برای جلوگیری از این امر، میتوانید به جای بررسی در بالای تابع، سبک جدیدتر `re-execute' را همانطور که در بالا توضیح داده شد تنظیم کنید).
خروج از پروفایلها (Leaving Profiles)
هنگامی که سیستم از یک پروفایل به پروفایل دیگر تغییر وضعیت میدهد، قبل از فراخوانی تابع پروفایل جدید، تابعی به نام "chpwd_leave_profile_<PREVIOUS-PROFILE-NAME>()" را اجرا میکند.
پوششدهنده Accept-Line (Accept-Line wrapper)
ابزارک accept-line ابزارکی است که هنگام فشردن کلید Enter/Return وارد عمل میشود. grmlzshrc از یک پوششدهنده در اطراف این ابزارک استفاده میکند که قابلیتهای جدیدی میافزاید.
این پوششدهنده از طریق سبکها پیکربندی میشود. یعنی دستوراتی صادر میکنید که شبیه این هستند:
zstyle 'context' style value
فضای نام زمینهای که استفاده میکنیم 'acceptline' است. این یعنی زمینه واقعی دستورات شما به شکل ':acceptline:<subcontext>' خواهد بود.
که در آن <subcontext> یکی از موارد زیر است: default، normal، force، misc یا empty.
زمینههای شناختهشده (Recognized Contexts)
default
normal
force
empty
misc
سبکهای موجود (Available Styles)
nocompwarn
compwarnfmt
rehash
actions
default_action
call_default
اعلان خط فرمان (Prompt)
اکنون grmlzshrc سه تم اعلان خط فرمان سازگار با سامانه promptinit شل zsh ارائه میدهد. این سه تم با نامهای grml، grml-large و grml-chroot شناخته میشوند.
به طور پیشفرض از grml استفاده میشود، مگر اینکه $GRMLPROMPT روی مقداری بزرگتر از صفر تنظیم شده باشد که در این صورت از grml-large استفاده خواهد شد. در نهایت، اگر $GRML_CHROOT غیرخالی باشد، از grml-chroot استفاده میشود.
طبق معمول تمهای promptinit، کاربر میتواند با استفاده از ابزار prompt به تم دیگری تغییر وضعیت دهد:
prompt grml-large
این دستور تم اعلان grml-large را فعال میکند.
تمها بسیار قابل شخصیسازی هستند. منبع اصلی مستندات مربوط به شخصیسازی، رشته راهنمای تم اصلی grml است که با دستور زیر در دسترس است:
prompt -h grml
تمهای دیگر نیز دارای رشتههای راهنما هستند، اما راهنمای تم اصلی مرجع استاندارد برای همه آنهاست.
این قابلیت نیازمند نگارش 4.3.7 شل است. نگارشهای قدیمیتر از اعلان کلاسیک grml به عنوان جایگزین استفاده خواهند کرد.
نکتهای برای علاقهمندان به شخصیسازی: اگر برای شخصیسازی از تمهای اعلان استفاده نمیکنید، بلکه یا $PS1 (یا $PROMPT) را به صورت ایستا تنظیم میکنید یا یکی از این متغیرها را در تابع `precmd()' در zsh میسازید، اطمینان حاصل کنید که قبل از انجام این کار، سامانه تم اعلان zsh را خاموش کردهاید. یک نمونه شخصیسازی درست میتواند به شکل زیر باشد:
# خاموش کردن سامانه اعلان: prompt off # شخصیسازی اعلان توسط خودتان: PS1='%~ %# '
همچنین میتوانید با استفاده از تابع `grml_theme_add_token()' نشانههای اختصاصی خود را بیفزایید. برای دریافت مستندات دقیق درباره این فرآیند، تابع را بدون آرگومان فراخوانی کنید.
وضعیت GNU screen (GNU screen Status)
پیکربندی grmlzshrc خطوط hardstatus برنامه screen را روی دستور در حال اجرا یا در صورت بیکار بودن شل در اعلان، روی 'zsh' تنظیم میکند. اگر پوشه کاری جاری درون یک مخزن تحت کنترل نسخه باشد، وضعیت screen از طریق vcs_info در zsh روی 'zsh: <repository name>' تنظیم میشود.
تاریخچه ماندگار (Persistent History)
اگر دستوراتی دارید که به اندازه کافی برایتان مهم هستند که در تاریخچه هر شلی گنجانده شوند، میتوانید آنها را در متغیر $GRML_IMPORTANT_COMMANDS (که برای سازگاری با گذشته پیشفرض آن ~/.important_commands است) قرار دهید تا از طریق ابزارکهای معمول جستجوی تاریخچه در دسترس باشند.
مرجع (REFERENCE)
متغیرهای محیطی (Environment Variables)
پیکربندی grmlzshrc متغیرهای محیطی خاصی را تنظیم میکند که بر رفتار برنامهها تأثیر میگذارند.
COLORTERM
EDITOR
LESS_TERMCAP_*
PAGER
گزینهها (Options)
جدا از گزینههای پیشفرض zsh، پیکربندی grmlzshrc گزینههایی را تنظیم میکند که رفتار zsh را تغییر میدهند. گزینههایی که تنظیمات پیشفرض Z-shell را تغییر میدهند با <grml> مشخص شدهاند. اما توجه داشته باشید که پیشفرضهای zsh بسته به حالت شبیهسازی آن (csh، ksh، sh یا zsh) متفاوت است. برای جزئیات به zshoptions(1) مراجعه کنید.
append_history
auto_cd <grml>
auto_pushd <grml>
completeinword <grml>
extended_glob <grml>
extended_history <grml>
hash_list_all
histignorespace <grml>
longlistjobs <grml>
nobeep <grml>
noglobdots
nohup <grml>
nonomatch <grml>
notify
pushd_ignore_dups <grml>
share_history <grml>
کلیدهای میانبر (Keybindings)
جدا از کلیدهای میانبر پیشفرض zsh، پیکربندی grmlzshrc با مجموعهای از کلیدهای میانبر اختصاصی ارائه میشود. توجه داشته باشید که میانبرهایی مانند ESC-e را میتوان به صورت ALT-e نیز در صفحهکلیدهای رایانه شخصی تایپ کرد.
ESC-e
ESC-v
CTRL-x-1
CTRL-x-M()
CTRL-x-p
CTRL-x-z
CTRL-z
شخصیسازی (Customisation)
برای شخصیسازی کلیدهای میانبر، میتوانید به سادگی از ابزار bindkey در zsh استفاده کنید. با این حال، اگر قصد دارید خودتان از قلابهای `zle-line-init' یا `zle-line-finish' استفاده کنید، اطمینان حاصل کنید که توابع زیر را در قلاب مربوطه فراخوانی میکنید:
این امر الزامی است تا کلیدهای میانبر تنظیمشده توسط grmlzshrc کار کنند. دلیل این امر قرار دادن ترمینال در حالت مناسب در حین اجرای ویرایشگر خط zsh (zle) است. این کار امکان پرسوجو از terminfo درباره دنبالههای گریز برای کلیدهای ویژه را فراهم کرده و بخش کلیدهای میانبر را ساده و تعمیمپذیر میکند.
توابع شل (Shell Functions)
پیکربندی grmlzshrc با طیف گستردهای از توابع تعریفشده شل ارائه میشود تا کار کاربر را آسانتر سازد.
accessed()
any()
bk()
cdt()
changed()
check_com()
cl()
dchange()
dcopyright()
debian2hd()
deswap()
dnews()
dreadme()
edalias()
edfunc()
freload()
grml_status_features()
grml_vcs_info_toggle_colour()
hgdi()
hgstat()
hidiff()
isdarwin()
isfreebsd()
isgrml()
isgrmlcd()
isgrmlsmall()
islinux()
isopenbsd()
isutfenv()
mkcd()
modified()
nt()
% NTREF=/reference/file % ls -l *(e:nt:) % # بهصورت درخط: % ls -l *(e:'nt /reference/file':)
profile()
salias()
simple-extract()
sll()
ssl-cert-fingerprints
ssl-cert-info
ssl-cert-sha512(), ssl-cert-sha256(), ssl-cert-sha1(), ssl-cert-md5()
Start(), Restart(), Stop(), Force-Reload(), Reload()
% Restart ssh
trans()
uchange()
vim()
whatwhen()
xcat()
xsource()
xtrename()
zrcautoload()
zrclocal()
نامهای مستعار (Aliases)
پیکربندی grmlzshrc با طیف گستردهای از نامهای مستعار از پیش تعریفشده برای آسایش کاربر ارائه میشود. چند نام مستعار (مانند موارد مربوط به grep یا ls) از گزینه --color=auto برای خروجی رنگی استفاده میکنند. این گزینه بخشی از پیادهسازیهای GNU از این ابزارهاست و تنها در صورت شناسایی چنین پیادهسازی استفاده خواهد شد.
acp (apt-cache policy)
acs (apt search)
acsh (apt show)
adg (apt dist-upgrade)
ag (apt upgrade)
agi (apt install)
ati (aptitude install)
au (apt update)
afs (apt-file search)
da (du -sch)
dbp (dpkg-buildpackage)
debs-by-size (grep-status -FStatus -sInstalled-Size,Package -n "install ok installed" | paste -sd " \n" | sort -rn)
dir (ls -lSrah)
ge (grep-excuses)
grep (grep --color=auto)
grml-version (cat /etc/grml_version)
insecscp (scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null")
insecssh (ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null")
help-zshglob (H-Glob())
l (ls -l --color=auto)
la (ls -la --color=auto)
lad (ls -d .*(/))
lh (ls -hAl --color=auto)
ll (ls -l --color=auto)
llog ($PAGER /var/log/syslog)
ls (ls -C --color=auto)
lsa (ls -a .*(.))
lsbig (ls -flh *(.OL[1,10]))
lsd (ls -d *(/))
lse (ls -d *(/^F))
lsl (ls -l *(@))
lsnew (ls -rl *(D.om[1,10]))
lsnewdir (ls -rthdl *(/om[1,10]) .*(D/om[1,10]))
lsold (ls -rtlh *(D.om[1,10]))
lsolddir (ls -rthdl *(/Om[1,10]) .*(D/Om[1,10]))
lss (ls -l *(s,S,t))
lssmall (ls -Srl *(.oL[1,10]))
lsw (ls -ld *(R,W,X.^ND/))
lsx (ls -l *(*))
mdstat (cat /proc/mdstat)
mq (hg -R $(readlink -f $(hg root)/.hg/patches))
rmcdir ('cd ..; rmdir $OLDPWD || cd $OLDPWD)
screen (screen -c file)
su (sudo su)
tlog (tail --follow=name /var/log/syslog)
up (aptitude update ; aptitude safe-upgrade)
url-quote (autoload -U url-quote-magic ; zle -N self-insert url-quote-magic)
$(uname -r)-reboot (kexec -l --initrd=/boot/initrd.img-"$(uname -r)" --command-line=\"$(cat /proc/cmdline)\" /boot/vmlinuz-"$(uname -r)")
... (cd ../../)
پروندههای کمکی (AUXILIARY FILES)
مجموعهای از پروندهها که در صورت وجود، میتوانند برای سفارشیسازی رفتار grmlzshrc استفاده شوند.
.zshrc.pre در همان ابتدای grmlzshrc درونریزی و اجرا (source) میشود. از جمله کاربردهای آن تغییر دائمی متغیرهای راهاندازی grmlzshrc است (بالا را ببینید):
# نمایش وضعیت باتری در RPROMPT GRML_DISPLAY_BATTERY=1 # بارگذاری کامل تنظیمات حتی برای کاربر ریشه GRML_ALWAYS_LOAD_ALL=1
.zshrc.local درست پیش از پایان بارگذاری grmlzshrc سورس میشود. یک نگارش سراسری از این پرونده (/etc/zsh/zshrc.local) وجود دارد که قبل از پرونده اختصاصی کاربر اجرا میشود.
.zdirs فهرست پوشهها برای پشته پوشههای ماندگار (بالا را ببینید).
.important_commands فهرست دستورات مورد استفاده در تاریخچه ماندگار (بالا را ببینید).
نصب روی سامانههای غیر دبیانی (INSTALLATION ON NON-DEBIAN SYSTEMS)
روی سامانههای دبیان ( http://www.debian.org) - و احتمالاً اوبونتو ( http://www.ubuntu.com) و سامانههای مشابه - دریافت grmlzshrc از طریق مخازن deb. گرمل بسیار آسان است.
روی سامانههای غیر دبیانی این یک گزینه نیست، اما همه چیز از دست نرفته است:
% wget -O .zshrc http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc
اگر مایلید پروندههای توابع مجزا را نیز دریافت کنید (که میتوانید در $fpath خود قرار دهید)، میتوانید آنها را در پیوند زیر مرور و بارگیری کنید:
http://git.grml.org/?p=grml-etc-core.git;a=tree;f=usr_share_grml/zsh;hb=HEAD
برچسبهای کارت مرجع ZSH (ZSH-REFCARD TAGS)
اگر کد grmlzshrc را بخوانید متوجه کامنتهای عجیبی در آن میشوید. این کامنتها با هدفی مشخص قرار داده شدهاند. کارت مرجع zsh گرمل (zsh-refcard) به صورت خودکار از محتوای پرونده پیکربندی واقعی تولید میشود. با این حال، به مقداری اطلاعات اضافه درباره اینکه کدام کامنتها و خطوط کد (و با چه هدفی) در نظر گرفته شوند نیاز است.
معنی هر یک از این موارد به شرح زیر است:
فهرست برچسبها (انواع کامنت) مورد استفاده:
#a# خط بعدی شامل یک نام مستعار مهم است که باید در grml-zsh-refcard گنجانده شود. (برچسب جایگذاری: @@INSERT-aliases@@)
#f# خط بعدی شامل شروع یک تابع مهم است. (برچسب جایگذاری: @@INSERT-functions@@)
#v# خط بعدی شامل یک متغیر مهم است. (برچسب جایگذاری: @@INSERT-variables@@)
#k# خط بعدی شامل یک کلید میانبر مهم است. (برچسب جایگذاری: @@INSERT-keybindings@@)
#d# تولید فهرست پوشههای هششده: start: نشاندهنده شروع فهرستی از تعاریف 'hash -d' است. end: نشاندهنده پایان آن است. (برچسب جایگذاری: @@INSERT-hasheddirs@@)
#A# تولید فهرست گسترش کوتهنوشتها: start: نشاندهنده شروع کوتهنوشتها است. end: پایان آنها را نشان میدهد.
خطوط درون این بخش که با '#d .*' خاتمه مییابند، مستندات اضافی برای گنجاندن در کارت مرجع را فراهم میکنند. (برچسب جایگذاری: @@INSERT-abbrev@@)
#m# این برچسب امکان تولید دستی ورودیهای کارت مرجع را برای خطوط کدی فراهم میکند که تجزیه (parse) آنها دشوار یا غیرممکن است.
مثال:
#m# k ESC-h Call the run-help function
این کار ورودی جدیدی را به جدول کلیدهای میانبر برای 'ESC-h' با کامنت ارائهشده اضافه میکند.
بنابراین ساختار به شکل زیر است:
#m# <section> <argument> <comment>
#o# این برچسب امکان درج ورودیها را در جدول درهمسازی 'other' میدهد. به طور کلی نباید استفاده شود. برای مواردی است که نمیتوان به روش دیگری به راحتی انجام داد. (برچسب جایگذاری: @@INSERT-other-foobar@@)
تمام این برچسبها (به جز m و o) دو آرگومان میگیرند؛ اولی درون برچسب و دومی پس از برچسب:
#<tag><section># <comment>
که در آن <section> در واقع تنها یک عدد است که توسط آرایه @secmap در بالای 'genrefcard.pl' تعریف شده است. دلیل استفاده از اعداد به جای نامها این است که برای خواننده، تفاوت چندانی با یک کامنت معمولی نداشته باشد. برای zsh این در واقع یک کامنت معمولی است. اعداد دارای معانی زیر هستند:
0 default (پیشفرض)
1 system (سیستم)
2 user (کاربر)
3 debian (دبیان)
4 search (جستجو)
5 shortcuts (میانبرها)
6 services (سرویسها)
بنابراین، دستور زیر یک ورودی به جدول 'functions' در بخش 'system' با یک کامنت توصیفی اضافه میکند:
#f1# Edit an alias via zle
edalias() {
سپس در برچسب جایگزین @@INSERT-aliases-system@@ که در 'grml-zsh-refcard.tex.in' وجود دارد ظاهر خواهد شد. اگر شماره بخش حذف شود، بخش 'default' فرض میشود. علاوه بر این، در 'grml-zsh-refcard.tex.in' عبارت @@INSERT-aliases@@ دقیقاً معادل @@INSERT-aliases-default@@ است. اگر برای مثال فهرستی از تمام نامهای مستعار را میخواهید، از @@INSERT-aliases-all@@ استفاده کنید.
مشارکت (CONTRIBUTING)
اگر میخواهید به بهبود پیکربندی zsh گرمل کمک کنید، مخزن grml-etc-core را از git.grml.org کلون کنید:
% git clone git://git.grml.org/grml-etc-core.git
تغییرات خود را اعمال و کامیت کنید؛ با استفاده از 'git format-patch' مجموعهای از وصلهها را ایجاد کرده و آنها را از طریق 'git send-email' به نشانی زیر ارسال کنید:
grml-etc-core@grml.org
این کار اطمینان میدهد که افراد مناسب وصلههای شما را برای بررسی و احتمالاً ادغام دریافت میکنند.
وضعیت (STATUS)
این صفحه راهنما، کتابچه راهنمای مرجع برای grmlzshrc است.
این بدان معناست که بر خلاف کارت مرجع موجود، باید تمام جنبههای این پیکربندی را مستند کند.
این راهنما در حال حاضر کامل نیست. اگر میخواهید در بهبود آن کمک کنید، از صفحات زیر دیدن فرمایید:
http://wiki.grml.org/doku.php?id=zshrcmanual
http://lists.mur.at/pipermail/grml/2009-August/004609.html
از مشارکتها به گرمی استقبال میشود.
نویسندگان (AUTHORS)
این صفحه راهنما توسط فرانک تربک <mailto:ft@grml.org>، یورگ وولکه <mailto:joewoe@fsmail.de>، موریس مککارتی <mailto:manselton@googlemail.com> و اکسل بکرت <mailto:abe@deuxchevaux.org> نوشته شده است.
حق نشر (COPYRIGHT)
حق نشر (c) 2009-2025 پروژه Grml https://grml.org
این صفحه راهنما تحت شرایط پروانه عمومی همگانی گنو (GPL) نگارش ۲ منتشر شده است.
بیشتر بخشهای zshrc گرمل نیز تحت شرایط GPL v2 منتشر شدهاند، به جز accept-line() که تحت همان شرایط خود zsh (که شبیه به BSD است) توزیع میشود.
| 2026-09-02 |