বাশ ব্যবহার করে আপনার একক সবচেয়ে প্রিয় কমান্ড-লাইন কৌশলটি কী? [বন্ধ]


156

<ctrl>-Rইতিহাসের মাধ্যমে অনুসন্ধান বিপরীতে কীভাবে ব্যবহার করতে হয় তা আমরা সকলেই জানি তবে আপনি কী জানেন যে আপনি <ctrl>-Sযদি সেট করেন তবে অনুসন্ধানের ফরোয়ার্ড ব্যবহার করতে পারবেন stty stop ""? এছাড়াও, আপনি কি আপনার সমস্ত কীবোর্ড শর্টকাট তালিকাভুক্ত দেখতে বাঁধাই-পি চালানোর চেষ্টা করেছেন? ম্যাক ওএস এক্সে ডিফল্টরূপে 455 এরও বেশি রয়েছে।

আপনার একক সবচেয়ে প্রিয় অস্পষ্ট কৌশল, বাশ ব্যবহার করে কী-বোর্ড শর্টকাট বা শপ্ট কনফিগারেশন কী?


2
"আপনার একক সর্বাধিক প্রিয় কী" বলার জন্য দয়া করে এটিকে পুনরায় শিরোনাম দিন। এটি লোককে প্রায় জরিপের মতো নির্দিষ্ট উত্তরগুলি ভোট দিতে দেয়।
এসসিডিএফ

> দয়া করে "আপনার একক সর্বাধিক প্রিয় কী" বলার জন্য এটিটি শব্দের সাথে লিখুন। সম্পন্ন.
মার্টিন ক্লিনকে

1
: এই খুব প্রশ্নের জন্য একটি Stackoverflow ক্লোন হয় commandlinefu.com
rkb

এই 455 ডিফল্ট কী-বাইন্ডিংগুলির মধ্যে কেবল 232 "স্ব-সন্নিবেশ" ("এই কীটি টাইপ করুন") ব্যতীত অন্য কিছু করেন: ind বাইন্ড -p | গ্রেপ -v স্ব-সন্নিবেশ | wc-
এড Brannin

এখানে কিছু ঝরঝরে জিনিস। তবে এটি লক্ষ করা উচিত যে বাশ যখন ইমাস মোডে থাকে তখন তাদের মধ্যে বেশ কয়েকটি কেবল কাজ করে ...
মো।

উত্তর:


157

প্রত্যয় সহ ফাইলগুলি পুনরায় নামকরণ / মুভিং করা:
cp /home/foo/realllylongname.cpp{,-old}

এটি প্রসারিত:
cp /home/foo/realllylongname.cpp /home/foo/realllylongname.cpp-old


12
অসাধারণ! এখন আমার এটি চেষ্টা করে মনে রাখা দরকার।
জন এরিকসন

9
কেবল উল্টোটি বলার জন্য (.cpp- পুরাতন থেকে .cpp এ যাওয়া) আপনি সিপি / হোম / ফু / রিল্লিলং নেম.সি.পি.ওউড,}
মাইকেল

পূর্ববর্তী ক্ষেত্রে এতো সুস্পষ্ট, এবং এখনও আমি মনে করি না যে আমি এটি নিজে থেকে করব। ধন্যবাদ!
Zecc

150
cd -

এটি পিছনের বোতামটির কমান্ড-লাইনের সমতুল্য (আপনাকে আগের ডিরেক্টরিতে নিয়ে গিয়েছিল)।


6
আমি নিজেই একটি ডিরেক্টরি স্ট্যাক ব্যবহার pushdএবং popdবজায় রাখতে পছন্দ করি।
অ্যালেক্স এম

21
আপনি সিডি - ব্যবহারের কথা মনে না রাখলেও কাজ করার সুবিধা রয়েছে 'সিডি -' এর।
সার্জিও আকোস্টা

10
এটি উল্লেখ করার মতো বিষয় যে 'সিডি' আপনাকে আপনার হোম ডিরেক্টরিতে নিয়ে যায়।
ডাঃ-জান

এটি আকর্ষণীয় যে এটিতে প্রদর্শিত হবে না man cdবা cd --help(অন্তত আমার)।
হালিল Özgür

135

আর একটি প্রিয়:

!!

আপনার শেষ আদেশটি পুনরাবৃত্তি করে। ফর্মটি সবচেয়ে দরকারী:

sudo !!

81
আপনাকে এটি সম্পর্কে সত্যই রাগান্বিত করার অতিরিক্ত সুবিধা রয়েছে। "কম্পিউটার, এই কর।" "অ্যাক্সেস অস্বীকৃত"। "এটা কর!!"
নিক

এটুকু জানা নেই! :-)
hoyhoy

10
অনুরূপ জিনিস আপনি যা করতে পারেন: mkdir testdir; cd !$.. এটি চলে cd [last word of previous line](উদাহরণস্বরূপ cd testdir)
dbr

13
আমাকে একটি স্যান্ডউইচ সুডো করুন !!
কিব্বি

আপনি যদি !!,! $ এবং! -1: oo foo ^ বার পছন্দ করেন তবে আপনি "স্থান: যাদু-স্পেস" বাঁধবেন। stackoverflow.com/questions/603696/…
ইয়ু

81

আমার প্রিয়টি '^ স্ট্রিং ^ স্ট্রিং 2' যা সর্বশেষ কমান্ড নেয়, স্ট্রিং 2 এর সাথে স্ট্রিংকে প্রতিস্থাপন করে এবং সম্পাদন করে

$ ehco foo bar baz
bash: ehco: command not found
$ ^ehco^echo
foo bar baz

বাশ কমান্ড লাইনের ইতিহাস গাইড


এটি লোভী। আমি কীভাবে এটি লোভী করব?
আল্ট্রেয়াস

9
!!:gs/ehco/echo/
andre-r

সেই গাইডের দ্বিতীয় পৃষ্ঠাটি প্রয়োজনীয়
jmoz

1
@ আন্দ্রে-R: !!:gs/ehco/echo/সঞ্চালিত একটি বিশ্বব্যাপী অনুসন্ধান এবং প্রতিস্থাপন গত কমান্ড উপর (তরে !!মধ্যে stackoverflow.com/questions/68372/... )। এটি সমান নয় ^ehco^echoযা কেবল "এহকো" এর একটি উদাহরণ প্রতিস্থাপন করে - আরও সঠিক প্রতিক্রিয়া হবে !!:s/ehco/scho
19

64

পুনঃনামকরণ

উদাহরণ:

$ ls
this_has_text_to_find_1.txt
this_has_text_to_find_2.txt
this_has_text_to_find_3.txt
this_has_text_to_find_4.txt

$ rename 's/text_to_find/been_renamed/' *.txt
$ ls
this_has_been_renamed_1.txt
this_has_been_renamed_2.txt
this_has_been_renamed_3.txt
this_has_been_renamed_4.txt

তাই দরকারী


3
বাহ, আমি সারা বছর ধরে বেসন, এমভি এবং do ricks কৌশলগুলি ব্যবহার করে মুরন হয়েছি। / foreheadsmack।
গ্রেগ লন্ড 21

7
পুনর্নামকরণ অন্যান্য পোস্টগুলির মতো বশ / পঠনের সুনির্দিষ্ট নয়।
বন্দুক

1
zsh বিতরণ থেকে zmv বেশিরভাগ ক্ষেত্রেই আরও ভাল।
জাইএক্স

ব্যবহার-লিনাক্স-এনজি-র একটি নতুন নাম কমান্ড রয়েছে এবং এটি এই উত্তরে উল্লিখিত মতটি নয়। এখানে বর্ণিত কমান্ডটি আসলে এমএমভি
ক্রিশ্চিয়ান সিপিতু

60

আমি অতি সাম্প্রতিক জমা দেওয়া কমান্ড লাইন থেকে !$, !^এবং !*বিস্তৃত হয়ে ফিরে আসার ভক্ত last শেষ আইটেম, প্রথম নন-কমান্ড আইটেম এবং সমস্ত নন-কমান্ড আইটেম। বুদ্ধিমান (লক্ষ্য করুন যে শেলটি প্রথমে কমান্ডটি প্রিন্ট করে):

$ echo foo bar baz
foo bar baz
$ echo bang-dollar: !$ bang-hat: !^ bang-star: !*
echo bang-dollar: baz bang-hat: foo bang-star: foo bar baz
bang-dollar: baz bang-hat: foo bang-star: foo bar baz

এই উপকারে আসে যখন আপনি বলো ls filea fileb, আর তাদের মধ্যে একজন সম্পাদনা করতে চান: vi !$বা তাদের উভয়ের: vimdiff !*। এটি "" nতম আর্গুমেন্ট "এর মতো করে সাধারণীকরণ করা যায়:

$ echo foo bar baz
$ echo !:2
echo bar
bar

অবশেষে, পাথের নামগুলির সাথে, আপনি পাথের কিছু অংশে উপরের সংযোজন :hএবং :tউপরের যে কোনও সম্প্রসারণের মাধ্যমে পেতে পারেন:

$ ls /usr/bin/id
/usr/bin/id
$ echo Head: !$:h  Tail: !$:t
echo Head: /usr/bin Tail: id
Head: /usr/bin Tail: id

'প্রতিধ্বনি !! 2' আমার পক্ষে কাজ করেনি এবং পরবর্তী পোস্ট থেকে আমি দেখেছি যে আমি এটি বলে মনে করি: 'প্রতিধ্বনি
!:

8
.Bashrc এবং যে কোনওটিতে "বাইন্ড স্পেস: ম্যাজিক-স্পেস" যুক্ত করুন! আপনি স্থান আঘাত করলে সংমিশ্রণটি স্বয়ংক্রিয়ভাবে প্রসারিত হবে।
ইয়ু

47

কমান্ডগুলি চলাকালীন, কখনও কখনও আমি পূর্ববর্তীগুলির তর্কগুলি দিয়ে একটি কমান্ড চালাতে চাই। এটি করতে, আপনি এই শর্টকাটটি ব্যবহার করতে পারেন:

$ mkdir /tmp/new
$ cd !!:*

মাঝে মাঝে, ফাইন্ড ব্যবহারের পরিবর্তে, যদি আমি ফাইলগুলির তালিকায় একটি গুচ্ছ কমান্ড চালাতে চাই তবে আমি একটি লাইন লুপটি বের করব।

for file in *.wav; do lame "$file" "$(basename "$file" .wav).mp3" ; done;

আমার .বাশ_লগিন (বা .bashrc) এ কমান্ড-লাইন ইতিহাস বিকল্পগুলি কনফিগার করা সত্যিই দরকারী। নীচে সেটিংসের একটি ক্যাডার যা আমি আমার ম্যাকবুক প্রোতে ব্যবহার করি।

নিম্নলিখিতটি সেট করা আপনার ইতিহাসে ডাবলিকেট কমান্ডগুলি মুছে ফেলবে:

export HISTCONTROL="erasedups:ignoreboth"

আমি আমার ইতিহাসের আকারটি বেশ উচ্চ পর্যন্ত জ্যাক করেছি। কেন না? এটি আজকের মাইক্রোপ্রসেসরগুলিতে কোনও গতি কমিয়ে দেবে বলে মনে হচ্ছে না।

export HISTFILESIZE=500000
export HISTSIZE=100000

আর একটি জিনিস যা আমি করি তা হ'ল আমার ইতিহাসের কিছু আদেশ ignore প্রস্থান আদেশটি মনে রাখার দরকার নেই।

export HISTIGNORE="&:[ ]*:exit"

আপনি অবশ্যই হিস্টপেন্ড সেট করতে চান। অন্যথায়, আপনি যখন প্রস্থান করবেন তখন ব্যাশ আপনার ইতিহাস ওভাররাইট করে।

shopt -s histappend

আর একটি বিকল্প যা আমি ব্যবহার করি তা হ'ল সেমিডিহিস্ট। এটি আপনাকে এক কমান্ড হিসাবে ইতিহাসে বহু-লাইন কমান্ডগুলি সংরক্ষণ করতে দেয়।

shopt -s cmdhist

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

stty stop ""

6
আমি খুঁজে পাই "আল্ট-।" শেষ কমান্ডের শেষ শব্দটির পুনরাবৃত্তি করার জন্য "!!: *" এর চেয়ে অনেক ভাল।
ওয়েডেনরিন্দে

হিস্ট্রয়ের জন্য সংযোজনগুলি: ১. নিয়মিত ইতিহাস সংরক্ষণ করুন (একসাথে একাধিক শেল খোলা থাকলে এর সাথে) রফতানি করুন PROMPT_COMMAND = "ইতিহাস -এ" ২. অন্যান্য শেল থেকে ইতিহাস পড়ার জন্য উপন্যাস। উপনাম - এইচ = 'ইতিহাস -n; ইতিহাস |
গ্রেপ

এক্সপোর্ট হিস্টিগনোর = "[] *" যেমন আপনার হিস্টট্রোল = উপেক্ষা করা উচিত তেমনটি করা উচিত নয়
ওয়েডেনরিন্ডে

ইতিহাসের জন্য আর একটি দুর্দান্ত জিনিস: HISTTIMEFORMAT = "% Y-% m-% d% H:% M:% S:"
রফতানি করুন

"সিডি !!: *" এর কয়েকটি কীস্ট্রোক সংরক্ষণ করতে, "সিডি! $" চেষ্টা করুন try "! $" আপনার শেষ কমান্ডের শেষ যুক্তি হিসাবে ব্যাখ্যা করা হবে।
টিম স্টুয়ার্ট 0

43

বর্তমানের কেবলমাত্র উপ-ডিরেক্টরি তালিকাভুক্ত করবেন ?

ls -d */

এটি একটি সহজ কৌশল, তবে আপনি জানেন না যে এটির সন্ধানের জন্য আমার কতটা সময় প্রয়োজন!


2
অসাধারণ! এই বছরগুলিতে আমি সবচেয়ে ভাল আসতে পেরেছি alias lsd='ls -F | grep --color /', যা একই জিনিসটির তালিকা তৈরি করবে তবে আরও ল্যাঙ্গুয়েজ। তবে, পার্সিংয়ের স্বাচ্ছন্দ্যের জন্য এটি প্রতি লাইনে একটি দির তালিকাবদ্ধ করবে। আমি আপনার কমান্ডটি ls -d1 */
এটির

কিভাবে কাজ করে? "ls -d" কেবলমাত্র তালিকা। (যা অদ্ভুত) তবে "ls -d * /" কাজ করে।
ইয়ু

1
এটি কিছুটা জটিল ... "ls -d" "ls -d ./" এবং "ls -d /" এর সাথে "ls -d ./*/" এর অনুরূপ। '-D' স্যুইচ সেট 'এলএস' টিউ কেবল ডিরেক্টরি এন্ট্রি তালিকাভুক্ত করে, তবে আপনি যদি এটি কোনও প্যারামিটার না দিয়ে থাকেন তবে এটি বর্তমান ডিরেক্টরিটিকে প্যারামিটার হিসাবে ব্যবহার করে, সুতরাং এতে কেবল "থাকে"। " তালিকাতে ডিরেক্টরি ...
এডোমোর

1
আমি বিশ্বাস করতে পারি না আমি এর আগে কখনও এটি আবিষ্কার করেছিলাম। দুর্দান্ত টিপ।
নিক ডিকসন

কোন কথা নেই, শুধু বাহ !!! :)
ডিম্বা

41

ESC.

আপনার শেষ বাশ কমান্ড থেকে শেষ যুক্তি সন্নিবেশ করান। এটি আপনার ভাবার চেয়ে বেশি কাজে আসে।

cp file /to/some/long/path

সিডি ESC.


এটি আমার (বাশ) কাজ করে। নোট করুন যে আপনি এসকে কী এবং তারপরে পিরিয়ড কী চাপলেন। হাইফেন বা কিছু নেই।
হোলার

9
এছাড়াও Alt-। একই জিনিস।
মার্ক বাকের

হ্যাঁ, এটি কেবল বাশ। তবে <esc> (বা আল্ট- বা মেটা-) _ একই ফাংশনের সাথে আবদ্ধ এবং <esc> -_ এছাড়াও ভিআই-মোডেও কাজ করে।
নিক ডিকসন

আমার জেডএসে হ্যান্ড্রিটি আসলে এটি কাজ করে। আপনি ভিআই মোড ব্যবহার করতে পারেন?
জাইএক্স

কীবোর্ড হিটগুলির জন্য কেবিডি-ট্যাগটি ব্যবহার করুন: <কেবিডি> ইসি </ বি কেবিডি> (তবে কোড-ফর্ম্যাটিং / ইনডেন্টেশন সহ খুব ভাল খেলেন না)।
ব্যবহারকারী অজানা

36

অবশ্যই, আপনি " diff file1.txt file2.txt" করতে পারেন , তবে বাশ প্রক্রিয়া প্রতিস্থাপন সমর্থন করে , যা আপনাকে এটি করতে দেয়diff কমান্ড আউটপুট ।

উদাহরণস্বরূপ, ধরা যাক আমি নিশ্চিত করতে চাই যে আমার স্ক্রিপ্টটি আমার প্রত্যাশিত আউটপুট দেয়। আমি কেবলমাত্র আমার স্ক্রিপ্টটি <() এ গুটিয়ে রাখতে পারি diffএবং দ্রুত এবং নোংরা ইউনিট পরীক্ষা পেতে এটি ফিড করতে পারি:

$ cat myscript.sh
#!/bin/sh
echo -e "one\nthree"
$
$ ./myscript.sh 
one
three
$
$ cat expected_output.txt
one
two
three
$
$ diff <(./myscript.sh) expected_output.txt
1a2
> two
$

অন্য উদাহরণ হিসাবে, আসুন আমি বলি যে দুটি সার্ভারে আরপিএমের একই তালিকা ইনস্টল করা আছে কিনা তা আমি পরীক্ষা করতে চাই। প্রতিটি সার্ভারে ঝাঁকুনির পরিবর্তে, পৃথক পৃথক ফাইলগুলির জন্য আরপিএমের প্রতিটি তালিকা লিখে, এবং diffসেই ফাইলগুলিতে একটি করে করা, আমি diffআমার ওয়ার্কস্টেশন থেকে কেবল এটি করতে পারি :

$ diff <(ssh server1 'rpm -qa | sort') <(ssh server2 'rpm -qa | sort')
241c240
< kernel-2.6.18-92.1.6.el5
---
> kernel-2.6.18-92.el5
317d315
< libsmi-0.4.5-2.el5
727,728d724
< wireshark-0.99.7-1.el5
< wireshark-gnome-0.99.7-1.el5
$

Http://tldp.org/LDP/abs/html/process-sub.html এ অ্যাডভান্সড ব্যাশ-স্ক্রিপ্টিং গাইডে আরও উদাহরণ রয়েছে ।


35

আমার প্রিয় কমান্ডটি "ls-thor"

এটি সর্বাধিক সংশোধিত ফাইলগুলি সুবিধামত পাঠযোগ্য ফর্ম্যাটে তালিকাভুক্ত করার জন্য দেবতাদের শক্তি তলব করে ।


6
আমাকে অন্য পুরোপুরি অকেজো কিন্তু মজার কমান্ডের মনে করিয়ে দেয়: ls -bart -simpson -ruls। এস, আইসিএনআর
ফিলিপ্রেম

'ls -tor' দরকারী কারণ আপনি দ্রুত বড় ফাইলগুলি খুঁজে পেতে পারেন can এবং এছাড়াও, বজ্রের দেবতার নামটির মূল সুইডিশ বানানটি আসলে 'টোর'।
ডালা 17'10

ডেনিশ ভাষায় আপনি ব্যবহার করতে পারেন ls -lortডেনিশ শব্দটি "ছিঃ" কোনও দলকে ছাড় দেওয়া এবং ভালালের ক্রোধ না পেয়ে :)
-জেনসেন

1
কেউ এটিকে "এলএস-ক্লোটার" এর মতো বলতেও পারেন যা স্পষ্টতই টলকিয়েন এবং লর্ড অফ দ্য রিংয়ের সাথে কিছু করার আছে :)
ADEpt

28

অভিনবত্বের আরও কিছু, তবে এটি চালাক ...

শীর্ষ 10 কমান্ড ব্যবহৃত:

$ history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -nr | head

নমুনা আউটপুট:

 242 git
  83 rake
  43 cd
  33 ss
  24 ls
  15 rsg
  11 cap
  10 dig
   9 ping
   3 vi

1
এখানে একটি সংক্ষিপ্ত, দ্রুত সংস্করণ:history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

25

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


2
আমি কোনও কারণে ^ ইউকে কখনই স্মরণ করতে পারি না। শর্টকাট মুছে ফেলতেও কি কোনও শব্দ নেই?
hoyhoy

1
^ ডাব্লু কার্সারের আগে শব্দটি মুছে ফেলে। (এটির সাথে আপনার উত্তর সম্পাদনা করতে নির্দ্বিধায় অনুভব করুন
Jon

2
So আর এত দরকারী যে প্রশ্নটিতে এটি উল্লেখ করা হয়েছিল :)
মার্ক বেকার

20

আমার প্রায়শই ভি, এলএস ইত্যাদির জন্য এলিয়াস থাকে তবে কখনও কখনও আপনি ওরফে থেকে পালাতে চান। সামনের কমান্ডটিতে কেবল একটি ব্যাক স্ল্যাশ যুক্ত করুন:

উদাহরণ:

$ alias vi=vim
$ # To escape the alias for vi:
$ \vi # This doesn't open VIM

কুল, তাই না?


আপনি বাশ ম্যানুয়ালটিতে commandesee চালাতে পারেন SHELL BUILTIN COMMANDS
আইসল্যান্ড_জ্যাক

17

এখানে বেশ কয়েকটি কনফিগারেশন টুইট রয়েছে:

~/.inputrc:

"\C-[[A": history-search-backward
"\C-[[B": history-search-forward

এটি এর ^Rপরিবর্তে তীর কীগুলি ব্যবহার করার মতোই কাজ করে । এর অর্থ আমি ফোল্ডারের অভ্যন্তরে cd /media/শেষ জিনিসটিতে যাবার জন্য টাইপ করতে (উদাহরণস্বরূপ) তারপর আপ-তীরটি চাপুন ।cd/media/

(আমি জিনোম টার্মিনাল ব্যবহার করি, অন্যান্য টার্মিনাল এমুলেটরগুলির জন্য আপনাকে পলায়ন কোডগুলি পরিবর্তন করতে হতে পারে))

বাশের সমাপ্তি অবিশ্বাস্যরূপে দরকারী তবে এটি আরও অনেক সূক্ষ্ম সংযোজন। ইন ~/.bashrc:

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

এটি প্রতি প্রোগ্রামের ট্যাব-সমাপ্তি সক্ষম করবে (যেমন কমান্ড লাইনটি শুরু হওয়ার সাথে সাথে ট্যাব সমাপ্তির চেষ্টা করা হবে) evince কেবলমাত্র এমন ফাইলগুলি প্রদর্শিত হবে যা খোলার মতো হতে পারে, এবং এটি ট্যাব-সম্পূর্ণ কমান্ড লাইন বিকল্পগুলিও প্রদর্শন করবে)।

এটির সাথেও এখানে দুর্দান্ত কাজ করে ~/.inputrc:

set completion-ignore-case on
set show-all-if-ambiguous on
set show-all-if-unmodified on

+1 টি bash_completion সন্ত্রস্ত
prestomation

একটি ম্যাকের উপরে, তীর কীগুলির সাহায্যে ইতিহাস অনুসন্ধান সক্ষম করা যেতে পারে: বাইন্ড '"\ ই [এ"': ইতিহাস-অনুসন্ধান-পশ্চাদপটে বাইন্ড '"\ ই [বি" ": ইতিহাস-অনুসন্ধান-ফরোয়ার্ড
আসমুস

17

আমি নিম্নলিখিতটি প্রচুর ব্যবহার করি:

:pপরিবর্তক একটি ইতিহাস ফলাফলের প্রিন্ট করতে। যেমন

!!:p

শেষ কমান্ডটি মুদ্রণ করবে যাতে আপনি এটি চালানোর আগে এটি সঠিক কিনা তা পরীক্ষা করতে পারেন। শুধু প্রবেশ করুন!!এটি কার্যকর করতে

একটি অনুরূপ শিরা মধ্যে:

!?foo?:p

আপনার ইতিহাস সর্বাধিক সাম্প্রতিক কমান্ডের জন্য অনুসন্ধান করবে যাতে এতে 'ফু' স্ট্রিং রয়েছে এবং এটি মুদ্রণ করবে।

আপনার যদি প্রিন্ট করার দরকার না হয়,

!?foo

অনুসন্ধান করে এবং সরাসরি এটি কার্যকর করে।


2
পি ব্যবহার করার পরিবর্তে, আপনি যাদু- স্পেসও
Yoo

বাশার্কে কনফিওর ম্যাজিক-স্পেস না চালিয়ে historicalতিহাসিক নিয়ন্ত্রণগুলি প্রসারিত করার জন্যbind Space:magic-space # !pin<space>
সেরজিওআরাউজো

16

আমি একটি গোপন অস্ত্র পেয়েছি: শেল-ফু।

হাজার হাজার স্মার্ট টিপস, দুর্দান্ত কৌশল এবং দক্ষ রেসিপি রয়েছে যা বেশিরভাগ সময় এক লাইনে ফিট থাকে।

একটি যেটি আমি পছন্দ করি (তবে আমি পাইথন এখন বেশিরভাগ ইউনিক্স সিস্টেমে ইনস্টল করা আছে তা সত্য ব্যবহার করার পরে আমি কিছুটা প্রতারণা করি):

alias webshare='python -m SimpleHTTPServer'

এখন প্রতিবার আপনি "ওয়েবশেয়ার" টাইপ করুন, বর্তমান ডিরেক্টরিটি 8000 বন্দরের মাধ্যমে পাওয়া যাবে us আপনি যখন ইউএসবি কী বা দূরবর্তী ডির ছাড়াই কোনও স্থানীয় নেটওয়ার্কে বন্ধুদের সাথে ফাইলগুলি ভাগ করতে চান তখন সত্যিই দুর্দান্ত। স্ট্রিমিং ভিডিও এবং সংগীতটিও কাজ করবে।

এবং অবশ্যই ক্লাসিক কাঁটাচামচ বোমা যা সম্পূর্ণ অকেজো তবে তবুও অনেক মজাদার:

$ :(){ :|:& };:

প্রডাকশন সার্ভারে এটি চেষ্টা করবেন না ...


আমার মনে হয় আমার ওয়েবশেয়ার করা উচিত নয় /
ইউ

আমার ধারণা আপনি কমান্ডটি সহজ করতে পারবেন python -m SimpleHTTPServer(যদি না আমি আসল কমান্ডের অভিনব কিছু মিস করি
জেস্পার রেন-জেনসেন

সাধরণ। একটি প্রোডাকশন সার্ভারে যে কাঁটাচামচ বোমা কেবল ওএস দ্বারা ঝাঁঝরা হয়ে যাবে; যে কোনও ব্যবহারকারীর তৈরি করতে পারে এমন সংখ্যার সীমাবদ্ধতা রয়েছে।
ডোনাল ফেলো

3
@ ডোনাল: আপনার এটি চেষ্টা করা উচিত এবং আপনার অনুসন্ধানের প্রতিবেদন করা উচিত।
মাইকেল ফৌকারকিস

12

পরিবর্তনগুলি সন্ধান করতে আপনি অন্য আদেশের সাথে একযোগে ওয়াচ কমান্ডটি ব্যবহার করতে পারেন। এর উদাহরণ হ'ল যখন আমি আমার রাউটার পরীক্ষা করছিলাম এবং আমি সিগন্যাল থেকে শব্দের অনুপাত ইত্যাদির মতো জিনিসগুলিতে আপ টু ডেট নম্বর পেতে চাইতাম I

watch --interval=10 lynx -dump http://dslrouter/stats.html

ওয়াচ কমান্ড সত্যিই দুর্দান্ত। আমি প্রায় পাঁচ বছর আগে লিনাক্স সার্ভার হ্যাকস বইটি পড়েছিলাম। কে জানত এর অস্তিত্ব আছে?
hoyhoy

11
বাশের সাথে বিশ্বের 'ওয়াচ' এর কি সম্পর্ক আছে?
আর্টেম রাশাকোভস্কিই

11
type -a PROG

যেখানে PROG উপলব্ধ রয়েছে সেই সব জায়গাগুলি সন্ধান করার জন্য, সাধারণত / usr / bin / PROG এর চেয়ে somewhere / বিনে কোথাও কোথাও প্রত্যাশিত।


1
এটি কোনও ফাংশন বা ওরফে কিনা তাও আপনাকে জানাবে। এটি যদি আপনার একাধিক জায়গায় থাকে তবে সেগুলির PATHপ্রত্যেকটি প্রদর্শিত হবে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

11

আমি প্রতিধ্বনি দিয়ে কমান্ডগুলি তৈরি করতে এবং সেগুলিতে শেলটি পাইপ করতে চাই:

$ find dir -name \*~ | xargs echo rm
...
$ find dir -name \*~ | xargs echo rm | ksh -s

কেন? কারণ এটি আমার কাজটি করার আগে আমার কী করা হচ্ছে তা দেখার অনুমতি দেয়। এইভাবে যদি আমার একটি ভয়াবহ ত্রুটি হয় (যেমন আমার হোম ডিরেক্টরিটি সরিয়ে ফেলা) তবে এটি হওয়ার আগেই আমি এটি ধরতে পারি। স্পষ্টতই, ধ্বংসাত্মক বা অপরিবর্তনীয় ক্রিয়াগুলির জন্য এটি সবচেয়ে গুরুত্বপূর্ণ।


1
সেগুলিতে সাদা স্পেসযুক্ত ফাইল এবং ফোল্ডারগুলির সমস্যা এড়াতে আপনি -প্রিন্ট0 এবং এক্সার্গস -0 ব্যবহার করতে চাইতে পারেন।
neu242

বা তাদের নামে সাদা স্পেস সহ ফাইল এবং ফোল্ডার তৈরি করা এবং কাজ করা এড়ানো। ;-) স্পষ্টতই যদি আপনি ব্যবহারকারীর উত্পাদিত নামগুলি নিয়ে কাজ করে থাকেন তবে আপনার পরামর্শটি অতীব গুরুত্বপূর্ণ।
জন এরিকসন

4
আপনি যখন "প্রতিধ্বনি" সরাতে পারবেন কেন আপনি "| ksh -s" যুক্ত করবেন?
ইয়ু

জিএনইউ খুঁজে পেতে পাইপ লাগবে না:$ find dir -name \\*~ -exec rm {} +
ববোগো

10

একটি বড় ফাইল ডাউনলোড করার সময় আমি প্রায়শই এটি করি:

while ls -la <filename>; do sleep 5; done

এবং তারপরে আমি সিটিআরএল + সি হয়ে গেলে (বা যদি lsশূন্যটি না ফেরায়)। এটি watchপ্রোগ্রামটির মতো তবে এটি শেলটি পরিবর্তে ব্যবহার করে, সুতরাং এটি প্ল্যাটফর্ম ছাড়াই কাজ করেwatch

আর একটি দরকারী সরঞ্জাম নেটকাট, বা nc। যদি তুমি করো:

nc -l -p 9100 > printjob.prn

তারপরে আপনি অন্য কম্পিউটারে একটি প্রিন্টার সেটআপ করতে পারবেন তবে পরিবর্তে কম্পিউটারের চলমান নেটক্যাটের আইপি ঠিকানাটি ব্যবহার করুন। মুদ্রণ কাজটি প্রেরণ করা হয়, এটি নেটক্যাট চলমান কম্পিউটার দ্বারা প্রাপ্ত হয় এবং এতে ফেলে দেওয়া হয় printjob.prn


কেন এই এবং না, উদাহরণস্বরূপ wget,?
লা

চেষ্টা করুন watch ls -la <filename>(2 সেকেন্ডের ডিফল্ট পছন্দ না হলে -n5 ব্যবহার করুন )।
টেড পার্সিভাল

1
@ টেড, watchসোলারিস, ম্যাক ওএস এক্স ইত্যাদির মতো সমস্ত প্ল্যাটফর্মে উপলভ্য নয় @ পোজেস, আপনার অর্থ কী তা নিশ্চিত হন না। উইজেট একটি বন্দরে শুনতে পারেন?
স্বপ্নালগ্ন


10

আমি যখন গাছের শ্রেণিবিন্যাসের বিস্তৃত পৃথক স্থানে একাধিক ডিরেক্টরি ব্যবহার করি তখন নেভিগেট করার একটি পছন্দীয় উপায় হল acf_func.sh (নীচে তালিকাভুক্ত) ব্যবহার করা। একবার সংজ্ঞায়িত করা, আপনি করতে পারেন

সিডি -

একটি সংখ্যাসূচক মেনু সহ সাম্প্রতিক ডিরেক্টরিগুলির তালিকা দেখতে

সিডি -২

দ্বিতীয় সাম্প্রতিক ডিরেক্টরিতে যেতে।

ব্যবহার করা খুব সহজ, খুব সহজ।

কোডটি এখানে:

# do ". acd_func.sh"
# acd_func 1.0.5, 10-nov-2004
# petar marinov, http:/geocities.com/h2428, this is public domain

cd_func ()
{
  local x2 the_new_dir adir index
  local -i cnt

  if [[ $1 ==  "--" ]]; then
    dirs -v
    return 0
  fi

  the_new_dir=$1
  [[ -z $1 ]] && the_new_dir=$HOME

  if [[ ${the_new_dir:0:1} == '-' ]]; then
    #
    # Extract dir N from dirs
    index=${the_new_dir:1}
    [[ -z $index ]] && index=1
    adir=$(dirs +$index)
    [[ -z $adir ]] && return 1
    the_new_dir=$adir
  fi

  #
  # '~' has to be substituted by ${HOME}
  [[ ${the_new_dir:0:1} == '~' ]] && the_new_dir="${HOME}${the_new_dir:1}"

  #
  # Now change to the new dir and add to the top of the stack
  pushd "${the_new_dir}" > /dev/null
  [[ $? -ne 0 ]] && return 1
  the_new_dir=$(pwd)

  #
  # Trim down everything beyond 11th entry
  popd -n +11 2>/dev/null 1>/dev/null

  #
  # Remove any other occurence of this dir, skipping the top of the stack
  for ((cnt=1; cnt <= 10; cnt++)); do
    x2=$(dirs +${cnt} 2>/dev/null)
    [[ $? -ne 0 ]] && return 0
    [[ ${x2:0:1} == '~' ]] && x2="${HOME}${x2:1}"
    if [[ "${x2}" == "${the_new_dir}" ]]; then
      popd -n +$cnt 2>/dev/null 1>/dev/null
      cnt=cnt-1
    fi
  done

  return 0
}

alias cd=cd_func

if [[ $BASH_VERSION > "2.05a" ]]; then
  # ctrl+w shows the menu
  bind -x "\"\C-w\":cd_func -- ;"
fi

10

ভয়ঙ্কর এন্ট্রি মারার আগে জটিল লাইনগুলি প্রসারিত করুন

  • Alt+ Ctrl+ e- শেল-প্রসারিত-লাইন (ব্যবহারের প্রয়োজন হতে পারে Esc, Ctrl+e আপনার কীবোর্ডের)
  • Ctrl+ _- পূর্বাবস্থায় ফেরা
  • Ctrl+ x, *- গ্লোব-প্রসারিত শব্দ

$ echo !$ !-2^ * Alt+ Ctrl+ e
$ echo aword someotherword * Ctrl+ _
$ echo !$ !-2^ * Ctrl+ x, *
$echo !$ !-2^ LOG Makefile bar.c foo.h

সি।


+1, আমি চাপতে সর্বদা ভয় পাই Enter:)
জোও পোর্তেলা

এর কোনটিই জানত না। পূর্ববর্তী হত্যাকারী is যে কোনও কমান্ড লাইন সম্পাদনার জন্য ভাল।
ফিলিপ এ।

9

আমি সর্বদা এর জন্য আংশিক ছিলাম:

ctrl-E # move cursor to end of line
ctrl-A # move cursor to beginning of line

আমি এটিও ব্যবহার করি shopt -s cdable_vars, তারপরে আপনি সাধারণ ডিরেক্টরিতে ব্যাশ ভেরিয়েবল তৈরি করতে পারেন। সুতরাং, আমার সংস্থার উত্স গাছের জন্য, আমি ভেরিয়েবলগুলির একটি গুচ্ছ তৈরি করি:

export Dcentmain="/var/localdata/p4ws/centaur/main/apps/core"

তারপরে আমি সেই ডিরেক্টরিতে পরিবর্তন করতে পারি cd Dcentmain


হোম এবং এন্ডগুলি crtl-A এবং ctrl-E এর মতো একই কাজ করে।
davidfg4

এটি ম্যাক ল্যাপটপগুলিতে সহায়তা করে যাগুলিতে হোম এবং শেষ কী নেই।
জামেস

দুর্ভাগ্যক্রমে ctrl-A হ'ল screenডিফল্টরূপে অব্যাহতি কী । আমি এটি আমার সিটিআরএল-এক্স-এ পুনর্নির্মাণ করি .screenrc, তবে তারপরে আমি ইম্যাকস ব্যবহারকারী নই।
সিস্টেম PAUSE

কিছুটা cdable_vars বিকল্পের সাথে সম্পর্কিত, সেখানে CDPATH পরিবেশের পরিবর্তনশীলও রয়েছে। তবে এটি ভিন্নভাবে কাজ করে কারণ আপনি পিতামাত্যাগ ডিরেক্টরিটি সেট করেছেন, অনেকটা PATH এর মতো। সিডেবল_ভার্সের সাহায্যে আপনি আরও নিয়ন্ত্রণ পান।
Zecc

1
আপনার শর্টকাট তালিকার জন্য আরও: কার্সার থেকে রেখার শেষ পর্যন্ত সমস্ত কিছু মুছতে সিটিআরএল + কে, কার্সারের আগে সমস্ত কিছু মুছতে সিটিআরএল + ইউ, এক শব্দকে এগিয়ে / পিছনে সরানোর জন্য এলটি + এফ / এএলটি + বি (বা সিটিআরএল + বাম তীর / সিটিআরএল) + ডান তীর) সিডেবল_ভার্সের জন্য +1!
ফিলিপ এ।

8

pbcopy

এটি ম্যাক সিস্টেম ক্লিপবোর্ডে অনুলিপি করে। আপনি এটিতে আদেশগুলি পাইপ করতে পারেন ... চেষ্টা করুন:

pwd | pbcopy


বিশেষ দ্রষ্টব্য! এটি একটি ম্যাক নির্দিষ্ট কমান্ড।
ডালা

এগুলি নয়: alias pbcopy='xsel --clipboard --input' এবং alias pbpaste='xsel --clipboard --output'
ওয়াওয়াওয়াওয়া

7
$ touch {1,2}.txt
$ ls [12].txt
1.txt  2.txt
$ rm !:1
rm [12].txt
$ history | tail -10
...
10007  touch {1,2}.txt
...
$ !10007
touch {1,2}.txt
$ for f in *.txt; do mv $f ${f/txt/doc}; done

এর history 10পরিবর্তে ব্যবহার করুন history | tail -10(যা tail -n 10উপায়ে সিনট্যাক্স হ্রাস না করা উচিত)
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

7

কমান্ড লাইন থেকে 'set -o vi' ব্যবহার করা বা .bashrc এ আরও ভাল, আপনাকে কমান্ড লাইনে vi সম্পাদনা মোডে রাখে। আপনি 'সন্নিবেশ' মোডে শুরু করুন যাতে আপনি টাইপ করতে এবং স্বাভাবিক হিসাবে ব্যাকস্পেস করতে পারেন, তবে আপনি যদি 'বৃহত্তর' ভুল করেন তবে আপনি এসকে কী টিপুন এবং তারপরে 'বি' এবং 'এফ' ব্যবহার করুন আপনি যেমন vi তে যাচ্ছেন ততক্ষণে। একটি শব্দ পরিবর্তন করতে সিডব্লিউ। আপনি পরিবর্তন করতে চান এমন একটি ইতিহাস কমান্ড আনার পরে বিশেষত কার্যকর।


7

উপরের অনেকের মতো, আমার বর্তমান প্রিয়টি কিস্ট্রোক [Alt] ke (Alt এবং "।" কী একসাথে) এটি $ এর মতোই! (পূর্ববর্তী কমান্ড থেকে শেষ যুক্তি সন্নিবেশ করানো হয়েছে) ব্যতীত এটি তাত্ক্ষণিক এবং আমার পক্ষে টাইপ করা সহজ। (কেবল স্ক্রিপ্টগুলিতে ব্যবহার করা যাবে না)

উদাহরণ:

mkdir -p /tmp/test/blah/oops/something
cd [alt].

এটি আল্ট- [0-9] এর সাথে একত্রিত করার চেষ্টা করুন (প্রথম সংমিশ্রণটি চাপুন, তারপরে ছেড়ে দিন, তারপরে দ্বিতীয়টি)। উদাহরণস্বরূপ যদি শেষ কমান্ডটি 'এমভি foo বার' হয়, তবে "Alt-0 Alt-"। 'এমভি' দেয়, "Alt-1 Alt-।" 'foo' দেয়, "Alt-2 Alt-।" এবং মৌলিক Alt-। উভয়ই 'বার' ইত্যাদি দেয়
স্যাম স্টোকস

1
Alt- টিপতে চেষ্টা করুন। একাধিকবার (অথবা Alt টিপুন, এটি ধরে রাখুন, ডটটি অনেকবার চাপুন এবং তারপরে Alt ছেড়ে দিন) এটি একাধিকবার Ctrl-R টিপানোর অনুরূপ।
ইয়ু

7

&& কমান্ডটি ব্যবহার করে একসাথে একাধিক কমান্ডের স্ট্রিং করা :

./run.sh && tail -f log.txt

অথবা

kill -9 1111 && ./start.sh

1
যদি একটি ব্যর্থ হয়, অন্য কমান্ডটি কার্যকর করা হবে না (প্রোগ্রামায়নের মতো দ্রুত ব্যর্থ হবে)
ফ্রেডেরিক মরিন

1
বিপরীতটি হল লজিকাল বা '||' ব্যবহার করা যেখানে ডান হাতটি কেবল তখনই কার্যকর করা হবে যদি বাম হাতটি মিথ্যা থাকে। উদাহরণ: <কোড> কমান্ড_1 || command_2 </ code> এ
dala
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.