Zsh এ কোন বৈশিষ্ট্য রয়েছে এবং বাশ থেকে অনুপস্থিত বা এর বিপরীতে রয়েছে?


62

লিনাক্স ব্যবহারকারী হিসাবে, আমি সর্বদা কেবল ব্যাশ ব্যবহার করেছি কারণ এটি আমার ব্যবহৃত প্রতিটি ডিস্ট্রোতে ডিফল্ট ছিল। অন্যান্য ইউনিক্স সিস্টেম যেমন BSD ব্যবহার করে এমন লোকেরা অন্যান্য শেলগুলি আরও বেশি ঘন ঘন ব্যবহার করে বলে মনে হয়। আরও কিছুটা শেখার স্বার্থে, আমি zsh চেষ্টা করার সিদ্ধান্ত নিয়েছি।

বাশ ব্যবহারকারী হিসাবে:

  • আমি কোন বৈশিষ্ট্য মিস করব?
  • এবং আমি কি জন্য সন্ধান করা উচিত?


5
@ গিলস একদিন এই সমস্ত এখানে স্থানান্তরিত হতে পারে ... এবং একীভূত হতে ভাল
লাগবে

উত্তর:


45

অন্যান্য স্ট্যাক এক্সচেঞ্জের সাইটগুলিতে ইতিমধ্যে বেশ কিছুটা কার্যকলাপ হয়েছে। বাশ থেকে জেডএসে স্যুইচ করার আমার অভিজ্ঞতা, যতদূর মনে করতে পারে (এটি বহু বছর আগে² ছিল), আমি এক জিনিসও মিস করি নি। আমি অনেক অর্জন করেছি; আমি যা ভাবি সেগুলি হ'ল আমি সর্বাধিক ব্যবহার করি এমন সাধারণ zsh- নির্দিষ্ট বৈশিষ্ট্য:

  • আমি যখন মাঝে মাঝে ব্যাশ ব্যবহার করি তখন আমি যে zsh বৈশিষ্ট্যটি সবচেয়ে বেশি মিস করি তা হ'ল: zsh এ, কোনও ডিরেক্টরি চালানো মানে এটিতে পরিবর্তন হওয়া, আপনি যদি autocdবিকল্পটি চালু করেন ⁴

  • আর একটি খুব দরকারী বৈশিষ্ট্য হ'ল অভিনব গ্লোববিং। হায়ারোগ্লিপ অক্ষর একটু মনে রাখা কঠিন কিন্তু অত্যন্ত সুবিধাজনক (যেমন এটা প্রায়ই দ্রুত তাদের সন্ধান করার সমতুল্য লিখতে চেয়ে এর দ্বারা findকমান্ড)। সরল উদাহরণগুলির কয়েকটি:
        foo*~*.bak= সমস্ত ম্যাচগুলি foo*সেই ম্যাচগুলি ব্যতীত *.bak
        foo*(.)= কেবলমাত্র নিয়মিত ফাইলের সাথে মিলছে foo*
        foo*(/)= কেবল ডিরেক্টরিগুলি মিলছে foo*
        foo*(-@)= কেবলমাত্র প্রতীকী লিঙ্কগুলি মিলছে foo*
        foo*(om[1,10])= 10 টি সাম্প্রতিক ফাইলের সাথে মিলছে foo*
        foo*(Lm+1)= কেবলমাত্র আকারের ফাইল> 1 এমবি = ডিরেক্টরিতে এবং এর সবগুলি সাব ডিরেক্টরি, পুনরাবৃত্তি
        dir/**/foo*foo*dir

  • অভিনব নামগুলির জন্য, zmvঅন্তর্নির্মিতটি হাতের কাজ হতে পারে। উদাহরণস্বরূপ, প্রতিটি অনুলিপি fileকরতে file.bak:zmv -C '(*)(#q.)' '$1.bak'

  • বাশ এবং zsh উভয়েরই একটি শালীন সমাপ্তির সিস্টেম রয়েছে যা স্পষ্টভাবে ( . /etc/bash_completionবা autoload -U compinit; compinit) চালু করা দরকার। Zsh এর অনেক বেশি কনফিগারযোগ্য এবং সাধারণত অনুরাগী।

আপনি যদি z ছাড়াই চালনা করেন তবে এটি একটি .zshrcইন্টারেক্টিভ মেনু শুরু করে যা আপনাকে কনফিগারেশন বিকল্পগুলি চয়ন করতে দেয়। (কিছু ডিস্ট্রিবিউশন এই নিষ্ক্রিয় করতে পারেন; সেই ক্ষেত্রে, চালানো autoload zsh-newuser-install; zsh-newuser-install।) আমি সুপারিশ ইতিহাসের বিকল্পগুলি সক্রিয় করার সুপারিশ করছি ( "নতুন স্টাইলের") চালু করার সমাপ্তির এবং ছাড়া "সাধারণ শেল বিকল্পগুলি" চালু করার beep। পরে, আরও বিকল্পগুলি আবিষ্কার করার সাথে সাথে সেগুলি কনফিগার করুন।

The সেই সময়ে প্রোগ্রামেবল সমাপ্তিটি ছিল zsh এর হত্যাকারী বৈশিষ্ট্য, তবে বাশ খুব শীঘ্রই এটি অর্জন করেছিল।
⁴ ব্যাশগুলি কেবলমাত্র সংস্করণ 4 এ অর্জিত হয়েছে (তাই এখনও অনেক সিস্টেমে উপলব্ধ নয়) ছোট ধরণের।


5
বাশ 4.0 এখন autocdউপরে বর্ণিত বৈশিষ্ট্যটিকে সমর্থন করে । কমান্ডটি ব্যবহার করে বৈশিষ্ট্যটি সক্ষম করুন shopt -s autocd। তারপরে বৈশিষ্ট্যটি আপনি বর্ণিত হিসাবে কাজ করে।
ফিলিউমিনাটি

zsh এর বিল্ট-ইন whereকমান্ডও রয়েছে, কমান্ডের সাথে বিভ্রান্ত হওয়ার দরকার নেই which
সিলডোরথ

@EdGrimm আমি মনে করি গনুহ ও FreeBSD কি করতে পারেন এটি সবকিছু zsh উল্লিখিত glob কোয়ালিফায়ার (দিয়ে কি করতে পারেন -execসঙ্গে নির্বাচন মত জিনিসের জন্য একটি শেলের eমত সরঞ্জামের মধ্যে একটি পাইপলাইন sortএবং sedসঙ্গে rewriting জন্য eএবং বাছাই)। অবশ্যই আরও অনেক শব্দাবলীর, অবশ্যই।
গিলস

এক দশকেরও বেশি সময় ধরে অনুসন্ধানের ম্যানপেজটি যাচাই করে নেওয়ার পরে, আমি অনুমান করি যে আমি সত্যিই সন্ধান বন্ধ করে দিয়েছি। তবে আমি মন্তব্য করার আগে যদি শেষবারের মতো একবার চেক করে দেখতাম, আমি কমপক্ষে দেখেছি -সাইজ অপশনটি এখন ইউনিটগুলিকে বাইটে নামায়।
এড গ্রিম

11

এছাড়াও ডিফল্ট ট্যাব সমাপ্তি বাশের চেয়ে ভাল ... উদাহরণস্বরূপ ...

~/.e.dট্যাব ~/.emacs.d/zsh এ প্রসারিত হবে , বাশ কেবল বীপ করবে।


এটা হয়নি। এর জন্য আপনি কোন অ-ডিফল্ট setoptবিকল্প ব্যবহার করেন (যদি থাকে)?

আমি বুঝতে পেরেছি যে আমি _-.একটি ওয়াইল্ডকার্ড হিসাবে সেট করেছি । zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' । দেখুন stackoverflow.com/q/7906078/311660
ocodo

10

zshআপনাকে মাল্টি-লাইন কমান্ড সম্পাদন করতে দেয় ( zsh লাইন সম্পাদক দেখুন ), বাশ দেয় না। আপনি যদি একই কৌশল ( Ctrl-p) চেষ্টা করেন তবে বাশ শেষ কমান্ডটি নিয়ে আসে।


2
বাশ এটি করে, কমপক্ষে 4.2.37 সংস্করণ হিসাবে; এটি সেমিকোলন দ্বারা নিউলাইনগুলি প্রতিস্থাপন করে এবং আপনাকে সম্পাদনার জন্য একটি লাইন দেয়।
কিথ থম্পসন

1
তবুও তেমন সুন্দর নয়। (:
সিলভারওয়াল্ফ

8

ব্যাশ ব্যবহার করে পোর্ট খুলতে সক্ষম হওয়ার বৈশিষ্ট্য রয়েছে ব্যাশের

/dev/tcp/host/port

অথবা

/dev/udp/host/port

তবে এটি দেবিয়ানকে অক্ষম করা হয়েছে কারণ এটি বাধা হিসাবে দেখা হয় (যদি পথটি আসলে উপস্থিত থাকে) এবং শেলটি কী করবে তার ক্ষেত্রের বাইরে। আরও তথ্য [ডেবিয়ান মেলিং তালিকা]


5
zsh এর ztcp বিল্টিন রয়েছে যদিও বাশের / dev / tcp এর চেয়ে বেশি ক্ষমতা রয়েছে, এতে / dev / udp নেই। আমি বরং স্যাম্যাট ব্যবহার করব।
স্টাফেন চেজেলাস

2

যা - zsh উন্নত

whichবাশ কমান্ডটি কেবল একটি কমান্ডের অবস্থান প্রকাশ করে।

Zsh এ whichএকটি এর সংজ্ঞা, aliasক এর উত্স functionএবং কমান্ডের অবস্থান প্রকাশ করবে ।

ধরা যাক আমাদের একটি শেল ওরফে ছিল:

alias gg='git log'

বাশে যদি আমরা জিজ্ঞাসা করি: which ggফলাফলটি শূন্য হবে

জেডসে: which ggআমাদের দেবে ...

gg: aliased to git log

ধরা যাক আমাদের একটি শেল ফাংশন ছিল:

hello() {
    echo "Hello World"
}

বাশে যদি আমরা জিজ্ঞাসা করি: which helloফলাফলটি শূন্য হবে।

জেডসে: which helloআমাদের দেবে ...

hello() {
    echo "Hello World"
}

type(বিল্টিন) কমান্ডের মাধ্যমে বাশ একই কার্যকারিতা সরবরাহ করে । এবং কেবল নিটপিক করার জন্য: whichএকটি বাহ্যিক কমান্ড, বাশ অন্তর্নির্মিত নয়।
টর্কেল ব্রাজারসন-ল্যাঙ্গেন


0

zsh - একটি সম্পূর্ণ শেল

অনেকগুলি রয়েছে, zshcontrib(1)একের মাধ্যমে পড়া সম্পূর্ণরূপে (বর্ণিত হিসাবে) প্রতিযোগিতায় দুটি autoloadযোগ্য সংস্করণ tetris( অন্যটির সাথে ncurses) সনাক্ত করতে পারে ।zshemacs

=

আমি =কীওয়ার্ডটি উল্লেখ করতে চাই , যার ফলে জ্বালা হতে পারে curl(ইউআরএল সাধারণত তাদের ?var=valমধ্যে থাকে ; তবে এটি কার্যকর unsetopt, আমার মনে হয়):

  • q file =less( gentoo) সমাধান করেq file $(which less)

= প্রশ্নে থাকা কমান্ডের পুরো পথে প্রসারিত হয়।

অন্যান্য গুডিস

মনের বাইরে অন্য জিনিসগুলি হ'ল ডান প্রম্পট RPS1=%d( $PWDশৈলীতে প্রদর্শন করার জন্য ), Alt + H( run-helpযেমন। man), Alt + ? ( which-command) vared, এবং zed( autoloadফাংশন), এমাক্সের মিনিবুফার-যেমন Alt + Xউইজেটগুলি আবদ্ধ না করে কার্যকর করা, বৈশ্বিক এবং প্রত্যয় এলিয়াসগুলি, বর্ধিত ইতিহাস ট্র্যাকিং কমান্ড সমাপ্তির সময়কাল, -mএবং -regexম্যাচচারগুলি, শেল অনুকরণ (উদাহরণস্বরূপ csh, kshসহ emulate) এবং autoload run-helpবিল্ট-ইনগুলির জন্য ফাইল স্নিপেট সহ।

মাতম

আমি মনে করি, বেশিরভাগই, সমস্ত না থাকলে বৈশিষ্ট্যগুলি অনেক আগে প্রয়োগ করা হয়েছিল, এবং চেঞ্জলগগুলির মাধ্যমে পড়া, সেখানে কোনও বড় পরিবর্তন এবং নতুন বৈশিষ্ট্য সংযোজন নেই, যা অত্যন্ত দুঃখজনক (কোনও কিছু অনুসন্ধান এবং আবিষ্কার করার জন্য কিছুই নেই)।

bash(বিপরীতে ) এবং লিনাক্স স্পিরিটে আরও বিতরণ করা হয়েছে বলে মনে হয় ; উদাহরণস্বরূপ রিডলাইন ফাংশন এবং কী-বাইন্ডিংগুলি ব্যাশ-নির্দিষ্ট দ্বারা ওভার্রাইড না করা হলে বিশ্বব্যাপী প্রয়োগ করা যেতে পারে (যেমন রাখা হয়েছে এবং ) ।readlinezlegnu history~/.inputrc/etc/inputrcbind

উপসংহার

আমি ব্যক্তিগতভাবে মনে করি emacs(ESP এর (বর্তমান প্রত্যাশা থেকে)।? emacs-noxগন্ধ) -এর মত ব্যতিক্রমী সফ্টওয়্যার জন্য অনুপ্রেরণা হচ্ছে zshএবং tmuxযেমন একটি বাস্তবায়নের একটি উদাহরণ হচ্ছে একটি খুব ভাল কাজ করেছেন; লোকেরা এর মূল্যকে প্রশংসা করছে ( Xসার্ভারের উপর নির্ভর করে / প্রয়োজনীয়তার পর্যায়ে নেই )। ইউনিক্স শেল যথেষ্ট শক্তিশালী, এবং এর ধারাবাহিকতা এবং ধারাবাহিকতা একটি উপযুক্ত কর্মপ্রবাহ এবং উত্পাদনশীলতার জন্য (সামগ্রিক কম্পিউটিংয়ে) যথেষ্ট।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.