আপনি কোন zsh বৈশিষ্ট্য ব্যবহার করেন? [বন্ধ]


33

আমি টার্মিনালে প্রচুর কাজ করি তাই আমার পছন্দের শেল সম্পর্কে অনেক কিছু শিখেছি। নিজেকে কাজের ক্ষেত্রে আরও বেশি উত্পাদনশীল করতে আপনি zsh এর কোন বৈশিষ্ট্য ব্যবহার করেন? আমার পছন্দের একটি হ'ল মাল্টি-ডিয়ার স্বতঃপূরণ। সুতরাং টাইপিংয়ের পরিবর্তে cd /fo{tab}/ba{tab}/ba{tab}আমি কেবল এটি করতে পারি cd /fo/ba/ba{tab}এবং অনেকগুলি কীস্ট্রোক সংরক্ষণ করতে পারি !


2
আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম না, আমাকে এটি চেষ্টা করতে হবে!
রায় রিকো

1
ডিরেক্টরিটি স্বয়ংক্রিয়ভাবে সম্পূর্ণ কোন বিকল্প?
হোমটিস্ট

উত্তর:


50

এই ছোট্ট রত্নটি সবেমাত্র পাওয়া গেছে:

cd old new

এই ফর্মটি বর্তমান ডিরেক্টরিটির সম্পূর্ণ পথের cdসমস্ত উপস্থিতিকে প্রতিস্থাপন oldকরে newএবং কার্যকরী ডিরেক্টরিটিকে ফলাফলের পথে পরিবর্তনের চেষ্টা করে।

উদাহরণস্বরূপ, যদি আপনার ওয়ার্কিং ডিরেক্টরি হয় /home/larry/code/backrub/serverএবং আপনি স্যুইচ করতে চান তবে /home/sergei/code/backrub/serverআপনাকে যা করতে হবে তা হ'ল:

cd larry sergei

7
ঠিক আছে, এই নিয়ম।
হোমটিস্ট

21

আমি যতদূর জানি, বাশ কিছুই করতে পারে না এমন জিনিসগুলি আমি রাখব।

  • অভিনব সমাপ্তি। হ্যাঁ, বাশের কিছু অংশ রয়েছে তবে zsh আরও কমান্ড জানে, প্রায়শই সুনির্দিষ্ট হয় এবং এতে আরও অনেকগুলি কনফিগারেশন সম্ভাবনা রয়েছে।

  • **উল্লিখিত glob, যেমন, **/fooবলা ফাইলের জন্য সৌন্দর্য fooযাও recursively সাবডিরেক্টরি হবে। (এবং ***/fooপ্রতিলিপিগুলিও অনুসরণ করে)) দীর্ঘ findকমান্ডের পরিবর্তে দুটি অক্ষর (কিছু ফাইলের নামের মধ্যে স্পেস এবং কোট যেমন বিশেষ অক্ষর অন্তর্ভুক্ত থাকে তবে সঠিকভাবে পাওয়া শক্ত)।

  • প্রায়শই, গ্লোব কোয়ালিফায়ার foo*(*)(যেমন foo*কেবল এক্সিকিউটেবল ফাইল ধরে রাখতে পারে), foo(.)(কেবল নিয়মিত ফাইলগুলি, ডিরেক্টরি নয়), foo(-@) (কেবলমাত্র দমনকারী সিমলিংকগুলি), foo*(m-5)(কেবলমাত্র সর্বশেষ 5 মিনিটের মধ্যে সংশোধিত ফাইলগুলি), foo*(om[1])(অতি সম্প্রতি সংশোধিত ফাইল) ইত্যাদি

  • autocd: কমান্ড হিসাবে ডিরেক্টরি নামের টাইপ করা এটিতে পরিবর্তন হয় ( cdবা pushdআপনি এটি কীভাবে কনফিগার করেছেন তার উপর নির্ভর করে)। cdকমান্ড অত্যন্ত দীর্ঘ তিন অক্ষর! আমি ব্যথা অনুভব না করে ত্রিশ সেকেন্ডের বেশি বাশ ব্যবহার করতে পারি না। আমার কয়েকটি সিঙ্গল-ক্যারেক্টার ফাংশন রয়েছে, যেমন

ফাংশন - {
  যদি [[$ # -eq 0]]; তারপর
    সিডি "$ OLDPWD"
  আর
    বিল্টিন - "$ @"
  ফাই
}
  • zmvBuiltin, এবং
ওরফে জেডসিপি = 'নোগ্লোব জেডএমভি-সি'
ওরফে zln = 'noglob zmv -L'
ওরফে জেডএমভি = 'নোগ্লোব জেডএমভি'
  • আমি যখন সেখানে আছি, noglobবিল্টিন

  • precmdএবং preexecহুক ফাংশন: আমি ব্যবহার preexecচলমান কমান্ড অন্তর্ভুক্ত করা আমার টার্মিনাল শিরোনাম সেট করতে, এবং precmdতার প্রস্থান কোড সহ কমান্ড প্রতিস্থাপন। কিছুটা এইরকম

শব্দ_শিরোনাম_বেস = '@% l:% 1 ~'
প্রিক্সেক () {
  মুদ্রণ -nr $ '\ ই] 2;' "$ {(%) শব্দ_শিরোনাম_বেস} $ *" '$ \ a'
}
precmd () {
  মুদ্রণ -nr $ '\ ই] 2;' "$ {(%) শব্দ_শিরোনাম_বেস} ($?)" '$ \ a'  
}
  • জন্য Ctrl + Z:
    • একটি খালি কমান্ড লাইন চলমান bg(যাতে Ctrl + Z Ctrl + Z একটি প্রোগ্রাম স্থগিত করে এবং সাথে সাথে এটিকে ব্যাকগ্রাউন্ডে পুনরায় শুরু করে)।
    • খালি খালি কমান্ড লাইনে, বর্তমান কমান্ড সংস্করণটি স্থগিত করুন: আমাকে অন্য একটি কমান্ড টাইপ করতে দিন, এবং যখন দ্বিতীয় কমান্ড লাইনটি শেষ হয়, আমি সম্পাদনা করার জন্য প্রথম কমান্ডটি ফিরে পাই।
    • এটি নিম্নলিখিত ফাংশন ব্যবহার করে:
অভিনব-সিটিআরএল-জেড () {
  যদি [[$ # BUFFER -eq 0]]; তারপর
    বিজি
    zle redisplay
  আর
    zle পুশ ইনপুট
  ফাই
}
zle -N অভিনব-ctrl-z
bindkey '^ Z' অভিনব- ctrl-z
  • সর্বাধিক গুরুত্বপূর্ণ-সমাপ্তি-সম্পর্কিত বিকল্পগুলি: setopt append_history autocd extended_glob no_match

3
^ Z ^ Z কৌশলটি ভালোবাসুন, ধন্যবাদ! এটি একক কীতে আবদ্ধ করার সমাধানের জন্য মূলত superuser.com/questions/378018 সন্ধান করছিল তবে ^ জেড ^ জেড আরও বেশি
অর্থবোধ করে

13

ফাইল এবং ডিরেক্টরি ছাড়াও জিনিসগুলি স্বয়ংক্রিয়ভাবে সম্পন্ন করার জন্য zsh এর ক্ষমতা।

উদাহরণস্বরূপ, গিট প্যাকেজ ইনস্টল হওয়ার সাথে সাথে গিট-শ {ট্যাব} উপস্থিত হয়:

- গিট কমান্ড -
শর্টলগ - গিট লগ আউটপুট সংক্ষিপ্ত করে
শো-শাখা - শাখা এবং তাদের কমান্ডগুলি দেখায়
শো-ইনডেক্স - একটি প্যাক আইডিএক্স ফাইলের সামগ্রী প্রদর্শন করে

1
হ্যাঁ, এটি দুর্দান্ত! কমান্ড লাইন সুইচ কী তা আমি নিশ্চিত নই তবে আমি ম্যান ফাইলটিতে প্রবেশ করার দরকার নেই তখন আমি এটিও ব্যবহার করি।
ফ্রিউ শ্মিড্ট

আমি বিশ্বাস করি বাশেরও এই ক্ষমতা রয়েছে।
কিথ থম্পসন

10

আমি সত্যিই গ্লোবাল এলিয়াস পছন্দ করি

alias -g L='|less
alias -g DN='>/dev/null'

আমার মত জিনিস করতে দিন

somecommand file arg L

এবং পেজিং পেতে।


আমি গ্রেপ এর জন্য জিও পছন্দ করি।
ফ্রেউ শ্মিড্ট

7

অন্যদের দ্বারা উল্লিখিত হিসাবে, zsh এর স্বতঃপূরণটি দুর্দান্ত।

আপনি অত্যধিক ঝামেলা ছাড়াই কাস্টম কমান্ডগুলির জন্য আপনার নিজস্ব স্বয়ংসম্পূর্ণ সেটআপ করতে পারেন। আঙ্গুলের আর্গুমেন্ট হিসাবে সম্পূর্ণ ব্যবহারকারীর নাম ট্যাব করতে:

# ~/.zshrc
function userlist {
        reply=(`users | tr ' ' '\n' |sort -u `);}
compctl -K userlist finger
set COMPLETE_ALIASES

অন্যান্য বিকল্পগুলি আমি সেট করতে চাই:

# turn on spelling correction
setopt correct
# don't save duplicates in command history
setopt histignoredups
# don't allow accidental file over-writes
setopt noclobber

পুশড এবং পপডও বেশ সুন্দর।

# Always pushd when changing directory
setopt auto_pushd
# Have pushd with no arguments act like `pushd $HOME'.
setopt PUSHD_TO_HOME

বিরক্তিকরভাবে বাড়ির এবং শেষ কীগুলি ডিফল্টরূপে zsh তে কাজ করে না যেমন তারা অন্যান্য শেলের মতো করে তবে আপনি এটি ঠিক করতে পারেন।

# Make home and end keys work.
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line

2
আমি বানান সংশোধন প্রকৃতপক্ষে সহায়ক চেয়ে আরো বিরক্তিকর সন্ধান করার ঝোঁক।
ফ্রিউ শ্মিড্ট

@ ফ্রি হেহ, আপনি আমাকে প্রথম কথা বলছেন না। সংশোধন করার একটি দুর্দান্ত বৈশিষ্ট্য হ'ল এটি সংশোধিত সংস্করণটিকে ইতিহাসে রাখবে, তাই আপনি দুর্ঘটনাক্রমে আবার একই জিনিসটি চালাবেন না।
থিথর রিসিভ করুন

5

scpরিমোট সার্ভারে ব্যবহার করার সময় স্বয়ংক্রিয়-সম্পূর্ণ সক্ষম করুন ।

অতিরিক্ত তথ্য প্রদর্শনের জন্য সঠিক প্রম্পট।


প্রকৃতপক্ষে! আমার খুব জটিল তবে সংক্ষিপ্ত প্রম্পট রয়েছে। হোস্টনাম [বর্তমান লাইন] <ত্রুটি নং>%
ফ্রিউ শ্মিট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.