লিনাক্স কমান্ড লাইনের সেরা অনুশীলন এবং টিপস?


112

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

নীচের মন্তব্যটি ভাগ করে নেওয়ার জন্য আমি এই জাতীয় আলোচনার অনুসন্ধান করেছি কিন্তু একটি খুঁজে পাইনি, সুতরাং এই পোস্টটি।

আমি আশা করি আমরা সকলেই এ থেকে শিখতে পারি।

আমাদের সকলের সুবিধার্থে আপনার বাশ টিপস, গ্রেপ, সেড, এডাব্লুকে, / প্রোক এবং অন্যান্য সমস্ত সম্পর্কিত লিনাক্স / ইউনিক্স সিস্টেম প্রশাসন, শেল প্রোগ্রামিংয়ের সেরা অভ্যাসগুলি ভাগ করে নেওয়ার জন্য আপনাকে স্বাগতম।


শুধু লিনাক্স কেন? অনেক টিপস ইউনিক্সের প্রায় সমস্ত স্বাদে কার্যকর হতে পারে।
mouviciel

এই প্রশ্নটি সম্ভবত এক বিস্তৃত হতে পারে - পুরো বইগুলি পূরণ করার জন্য লিনাক্স / ইউনিক্স কমান্ড লাইনের সেরা অনুশীলনের পক্ষে যথেষ্ট ...
জোনিক

আমি সম্মত হই যে ইউনিক্স টিপস যা লিনাক্সে প্রয়োগ করা যেতে পারে সেগুলিও খুব স্বাগত, আমি লিনাক্স লিখেছি কারণ এ আমরা এখানে কাজ করি work বি। কারণ এটি সাম্প্রতিক বছরগুলিতে ইউনিক্সের পরে আরও বিস্তৃত পাবলিক এক্সপোজার অর্জন করছে।
ম্যাক্সিম ভেক্সলার 19

আমি মনে করি লোকেরা যে সর্বাধিক দরকারী এবং আকর্ষণীয় আদেশ ব্যবহার করে তার একটি তালিকা সংকলন করা একটি দুর্দান্ত ধারণা।

এর মধ্যে কি কোনও প্রাসঙ্গিক? refspecs.freestandards.org

উত্তর:


111

জিএনইউ প্রকল্প দ্বারা বিকাশ করা একটি ফ্রি টার্মিনাল মাল্টিপ্লেক্সার স্ক্রিন ব্যবহার করুন যা আপনাকে একটিতে বেশ কয়েকটি টার্মিনাল রাখার অনুমতি দেবে।

আপনি একটি সেশন শুরু করতে পারেন এবং আপনার সংযোগটি হারিয়ে গেলেও আপনার টার্মিনালগুলি সংরক্ষণ করা হবে, যাতে আপনি পরে বা বাড়ি থেকে আবার শুরু করতে পারেন।


2
আমি ব্যবহৃত সর্বাধিক সাধারণ স্যুইচগুলি হ'ল আমার শেষ স্ক্রিন সেশনটি আলাদা করতে এবং পুনরায় শুরু করার জন্য এবং 'একাধিক লগইনগুলি থেকে একই স্ক্রিন সেশনটি দেখার জন্য' স্ক্রিন-এক্স '। এছাড়াও, নিজের থেকে একটা চমৎকার .screenrc পেতে dotfiles.org/.screenrc
নিক Devereaux

4
স্ক্রিন সম্পর্কে আরেকটি সুন্দর জিনিস হ'ল আপনি যখন অন্য কোনও ব্যক্তির সাথে স্ক্রিন
এক্স

101

, SSH!
এসএসএইচ হলেন commandশ্বর আদেশ - আমি মনে করি এটি সবচেয়ে মূল্যবান ওভার-অল-কমান্ড শিখতে হবে। বিকল্পগুলি বেশ ভয়ঙ্কর হতে পারে, তবে মনে হচ্ছে আমি এসএসএইচের জন্য নিয়মিত নতুন কমান্ড-লাইন বিকল্পগুলি ব্যবহার করতে শিখছি যা আমি কখনই ভাবিনি যে এটি প্রয়োজনীয় হবে। আমি এই মুহূর্তে তাদের সব ব্যবহার করতে পারে।

আপনি এটি যত বেশি ব্যবহার করবেন, তত বেশি আপনি এটি সম্পর্কে শিখবেন। আপনি এটি কিছু আশ্চর্যজনক কাজ করতে ব্যবহার করতে পারেন।

দ্রষ্টব্য: এসএসএস সার্ভার চলমান ব্যতীত আপনার সার্ভারে কোনও সেটআপ না দিয়ে এগুলি সমস্তই দূরবর্তীভাবে করণীয়।

ইন্টারনেটে একটি ফাইল সিস্টেম মাউন্ট করুন

এসএসএইচএফএসের জন্য নেটটি অনুসন্ধান করুন

ফরওয়ার্ড কমান্ড

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

ফায়ারওয়ালগুলি পেতে চেইন

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

ফরোয়ার্ড পোর্টস:
আপনি নিজের বাড়ির ফায়ারওয়ালটি দিয়ে বাউন করতে পারেন এবং কাজ থেকে আপনার রাউটারটি ঘরে বসে কনফিগার করতে পারবেন যতক্ষণ না আপনি নিজের হোম নেটওয়ার্কের মধ্যে থেকে এমনটি করছেন) কেবলমাত্র মাঝারিভাবে কার্যকর বলে মনে হচ্ছে।

ফরওয়ার্ড এক্স অনুরোধ:

এটি অন্য একটি আশ্চর্যজনক। আপনার রিমোট সিস্টেমে কোনও এক্স সার্ভার চলমান বা ছাড়াই, আপনি একটি এক্স উইন্ডোজ প্রোগ্রাম চালাতে পারবেন এবং উইন্ডোটি আপনার স্থানীয় স্ক্রিনে উপস্থিত হবে। স্যুইচ-এক্স ব্যবহার করুন, এটাই!

যেহেতু আপনার আপনার রিমোট সার্ভারে কোনও এক্স সার্ভার চলমান নেই, আপনার সার্ভারে সিপিইউ প্রভাবটি সর্বনিম্ন, আপনার কাছে একটি টিআইএনওয়াই লিনাক্স সার্ভার থাকতে পারে যা আপনার শক্তিশালী গেমের পিসি চলমান উইন্ডোজ এবং সাইগউইন / এক্স-তে বিশাল অ্যাপ্লিকেশন সরবরাহ করে।

অবশ্যই ষষ্ঠ এবং ইএমএসিএস এসএসএইচ-র উপর কাজ করে, তবে যখন আমি বাড়িতে চালাচ্ছি, কখনও কখনও আমি আরও চাই। আমি গ্রহনের অনুলিপি শুরু করতে ssh -X ব্যবহার করি! আপনার সার্ভারটি যদি আপনার ল্যাপটপের চেয়ে আরও শক্তিশালী হয় তবে আপনি আপনার ল্যাপটপে ঠিক সেখানে জিইউআই পেয়েছেন, তবে আপনার সার্ভারে সংকলনগুলি সম্পন্ন হয়েছে, সুতরাং সিস্টেমের বোঝা নিয়ে চিন্তা করবেন না।

ব্যাচের ফাইলগুলিতে চালান

(যার অর্থ একটি স্থানীয় ব্যাচের ফাইল চালান যা অন্যান্য সিস্টেমে "স্টাফ করে"):

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

মনে রাখবেন আপনি রিমোট কমান্ড থেকে আউটপুটটি পুনর্নির্দেশ করতে পারেন এবং এটি আপনার স্থানীয় ব্যাচ ফাইলের মধ্যে ব্যবহার করতে পারেন, যাতে আপনি স্থানীয়ভাবে আপনার সার্ভারে চলমান একটি সংকলনটি তৈরি করতে পারেন।

ম্যাক অন্তর্নির্মিত

উভয় সার্ভার এবং ক্লায়েন্ট ম্যাক এবং লিনাক্স উভয় মধ্যে নির্মিত হয়। ম্যাক এবং উবুন্টুর ক্ষেত্রে, একটি সার্ভার সক্ষম করা সঠিক চেকবক্সটি সন্ধান করার মতোই সহজ।

একটি পিসিতে সাইগউইন বা সাইগউইন / এক্স ইনস্টল করুন (সাইগউইন / এক্স আপনাকে লিনাক্স মেশিন থেকে আপনার উইন্ডোজ পিসিতে আপনার এক্স উইন্ডো আউটপুটটি ফরোয়ার্ড করার অনুমতি দেবে - এটি একটি এক্স সার্ভার ইনস্টল করে)

গুরুত্বপূর্ণ টিপস / কনফিগারেশন ফাইল

আপনার ফায়ারওয়ালে কখনও পোর্ট 22 ব্যবহার করবেন না। আপনি প্রচুর হ্যাক প্রচেষ্টা পেয়ে যাবেন, এটি কেবল মূল্যবান নয়। আপনার ফায়ারওয়ালকে আপনার সার্ভারে একটি আলাদা পোর্ট ফরওয়ার্ড করুন।

এখানে বিস্তৃত কনফিগারেশন বিকল্প রয়েছে যা আপনাকে আপনার ssh কমান্ডগুলিকে উল্লেখযোগ্যভাবে সহজ করার অনুমতি দেয়। এখানে কর্মক্ষেত্রে আমার একটি উদাহরণ:

Host home
    hostname billshome.hopto.org
    Port=12345
    user=bill
    LocalForward=localhost:1025 mac:22

যখন আমি "ssh home" টাইপ করি (আর কিছুই না), এটি টাইপ করে যেমন কাজ করে:

ssh -p 12345 bill@billshome.hopto.org

এবং তারপরে আমার স্থানীয় বন্দরটি 1025 বাড়িতে আমার সিস্টেম "ম্যাক" এ ফরোয়ার্ড করে। এর কারণ হ'ল আমার ফাইলে আমার আরও একটি প্রবেশ রয়েছে:

Host mac
    hostname localhost
    port=1025

যাতে একবার আমি একটি "ssh হোম" করেছি এবং এখনও উইন্ডোটি খোলা আছে, আমি "ssh mac" টাইপ করতে পারি এবং এখানে কর্মরত কম্পিউটারটি আসলে তার নিজস্ব বন্দরের সাথে সংযোগ স্থাপনের চেষ্টা করবে 1025 যা "ম্যাক: এ ফরোয়ার্ড করা হয়েছে: 22 "অন্য কমান্ড দ্বারা, সুতরাং এটি ফায়ারওয়ালের মাধ্যমে বাড়িতে আমার ম্যাকের সাথে সংযুক্ত হবে।

সম্পাদনা করুন - দুর্দান্ত স্ক্রিপ্ট!

আমি স্রেফ পছন্দ করি এমন একটি পুরাতন স্ক্রিপ্ট খনন করেছি - এখানে এসে আগ্রহী হতে পারে এমন কারও জন্য ফিরে আসতে হয়েছিল। স্ক্রিপ্টটিকে "authMe" বলা হয়

#!/bin/bash
if [ ! -f ~/.ssh/id_dsa.pub ]
then
    echo 'id_dsa.pub does not exist, creating'
    ssh-keygen -tdsa
fi
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub

যদি আপনার হোম ডিরেক্টরিতে এই স্ক্রিপ্টটি থাকে এবং এমন কোনও হোস্ট রয়েছে যা আপনি সংযুক্ত করতে পারেন (এসএসএসের মাধ্যমে), তবে আপনি "./authMe হোস্টনেম" টাইপ করতে পারেন।

যদি প্রয়োজন হয় তবে এটি আপনার জন্য একটি সর্বজনীন / প্রাইভেট কী তৈরি করবে, তবে এটি অন্য মেশিনে ছড়িয়ে যাবে এবং আপনার সর্বজনীন কীটি অনুলিপি করবে (ssh কমান্ড আপনাকে একটি পাসওয়ার্ডের জন্য অনুরোধ করবে ...)

এর পরে, এসএসএইচ কমান্ডটি সেই দূরবর্তী সিস্টেমে সংযুক্ত করার সময় আপনার পাসওয়ার্ডের আর কোনও জিজ্ঞাসা করা উচিত নয়, এটি পাবলিক / প্রাইভেট কী ব্যবহার করবে।

যদি আপনার দূরবর্তী কম্পিউটারটি সর্বদা সুরক্ষিত না থাকে, আপনাকে অনুরোধ জানানো হলে একটি "পাসফ্রেজ" সেট করার বিষয়টি বিবেচনা করা উচিত।

অতিরিক্ত সুরক্ষার জন্য আপনি পাঠ্য পাসওয়ার্ডগুলি (কেবল কীগুলি) মঞ্জুরি না দেওয়ার জন্য আপনি প্রান্তে ssh সার্ভারটি কনফিগার করতে চাইতে পারেন।


4
+1 খুব সুন্দর এবং কমপ্যাক্ট পোস্ট
কার্সটেন

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

1
এটি সময়ে বিরক্তিকর হতে পারে তবে সংযোগগুলির পরিমাণটি কেবল ভীতিজনক ছিল। আমি জানি যে তাদের মধ্য দিয়ে যাবার কথা নয়, তবে এ জাতীয় ধরণের মত যদি আপনার বাড়িতে কেউ বেড়াতে থাকে এবং প্রতি মিনিটে আপনার ডোরকনব নিয়ে ফিড করে থাকেন - কেবল উদ্বেগজনক নয়।

আজকাল ssh এর বেশিরভাগ সংস্করণে আপনার শেষ কমান্ডের একটি অন্তর্নির্মিত সংস্করণ রয়েছে, এটি বলা হয় ssh-copy-idএবং এটি ssh-copy-id user@someserver
এতটা

আপনার 'ssh mac' কৌশলটি করার আরেকটি উপায় হ'ল আপনার .ssh / কনফিগারেশন ফাইলে একটি প্রক্সিকম্যান্ড নির্দেশিকা ব্যবহার করা। হোস্ট ম্যাক প্রক্সিকম্যান্ড ssh -q হোম "এনসি% এইচ% পি" এটি বাড়িতে নেটক্যাট (এনসি) চালাবে এবং আপনার এসএসএস সংযোগটি সরাসরি ম্যাকের মাধ্যমে পুনর্নির্দেশ করবে। আমি
চেইনগুলিতে এগুলি

73

আমি ব্যবহার করতে চাই

cd -

পূর্ববর্তী ডিরেক্টরিতে স্যুইচ করতে। খুব দরকারী!


6
আমি এটা কখনই জানতাম না! ধন্যবাদ! সম্পর্কিত নোটে, পুশড এবং পপড একই ধরণের কিছু করে, একটি স্ট্যাক ডায়ার তৈরি করে। এই ধরণের কৌশলগুলি যখন আপনি একটি গভীর dir কাঠামোর চারপাশে নেভিগেট করতে সহায়তা করে।

এটি নিখুঁত আলোকপাত।
ম্যানুয়েল ফেরেরিয়া

69

আমি সম্প্রতি pvকমান্ডটি (পাইপ ভিউয়ার) আবিষ্কার করেছি যা বিড়ালের মতো তবে স্থানান্তর সংক্রান্ত বিশদ সহ।

পরিবর্তে তাই

$ gzip -c access.log > access.log.gz

তুমি ব্যবহার করতে পার

$ pv access.log | gzip > access.log.gz
611MB 0:00:11 [58.3MB/s] [=>      ] 15% ETA 0:00:59

সুতরাং আপনার অপারেশনটি কখন শেষ হবে তার কোনও ধারণা না রেখে এখন আপনি জানতে পারবেন!

সৌজন্যে পিটারিস ক্রুমিনস


z gzip -c access.log> access.log.gz কেন শুধু নয়: z gzip access.log

ওহ এটি কাজ করে :) আমি কেবল পিটারিসের ওয়েবসাইট থেকে উদাহরণটি নিয়েছি।
নিক দেভেরাক্স

দেখতে দেখতে পুরনো ভালো লাগছে tee(1)
ড্যানিয়েল সি সোব্রাল

অত্যন্ত কার্যকর ইউটিলিটি, যা আমি সর্বদা ভুলে যাই :-(
প্যাট্রিক

53
sudo !!

পূর্ববর্তী কমান্ডটি রুট হিসাবে পুনরায় চালন করুন।

[এই সাইটের শীর্ষস্থানীয় কমান্ড http://www.commandlinefu.com , এই প্রশ্নের লাইনের পাশাপাশি থিমযুক্ত একটি সাইট]]



9
এটি এই লোকটিকে 16 টি অক্ষর সংরক্ষণ করতে পারত: xkcd.com/149

46

Ctrl-R টিপুন এবং একটি কমান্ড (বা এর কোনও অংশ) টাইপ করতে শুরু করুন - এটি কমান্ডের ইতিহাস অনুসন্ধান করে। আবার Ctrl-R হিট করা পরবর্তী ম্যাচে ঝাঁপিয়ে পড়বে, বর্তমানে প্রদর্শিত কমান্ডটি কার্যকর করবে এবং ডান-তীর (কমপক্ষে) আপনাকে প্রথমে এটি সম্পাদনা করতে দেবে।

$ (reverse-i-search)`svn': svn status

আমি এটি শেখার আগে লিনাক্সটি 7 বছরের মতো আমার প্রধান ওএস হিসাবে ব্যবহার করেছি, তবে এখন যেহেতু আমি এটি জানি এটি বেশ কার্যকর।


ধন্যবাদ। আমি বিপরীত অনুসন্ধানটি ব্যবহার করছি, তবে পরবর্তী ম্যাচে কীভাবে ঝাঁপিয়ে পড়তে হবে তা অনুধাবন করতে সক্ষম হইনি।
আদম

Ctrl-S পরের ম্যাচে লাফ দেয়। আপনাকে stty -ixonএক্সোন / এক্সএফএফ-এর প্রবাহ-নিয়ন্ত্রণ অর্থ বন্ধ করতে প্রথমে করতে হবে (এটি সিটিআরএল-কিউ উপলব্ধ করে দেয়, ডিফল্টরূপে এটি ম্যাপ করা হয় Ctrl-V উদ্ধৃত-সন্নিবেশকের মতো, তবে আপনি এটি অন্য কোনও কিছুতে পরিবর্তন করতে পারেন )। আরও তথ্যের জন্য দেখুন man sttyএবং man readlinesttyকমান্ড আপনার যোগ করা যেতে পারে~/.bashrc
ডেনিস উইলিয়ামসন

45

কমান্ড লাইন একটি মজার জিনিস। আমি মনে করি যে আপনি কেবল নিজেরাই এত কিছু শিখতে পারবেন এবং বাকী আপনি কমান্ড লাইন ব্যবহার করে অন্য কাউকে দেখে দুর্ঘটনাক্রমে শিখবেন।

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

একদিন বলেছিলেন বন্ধু কমান্ড লাইনে আমাকে দেখছিল এবং আমাকে এমন কিছু টাইপ করতে দেখেছিল:

coryking@cory ~/trunk/mozi $ pushd /etc
/etc ~/trunk/mozi
coryking@cory /etc $ popd
~/trunk/mozi
coryking@cory ~/trunk/mozi $

কে অনুমান করতেন !? তিনি কখনই popd/ সম্পর্কে জানতেন না pushd। অনুমান আমরা এমনকি ...


1
আমার কাছে ট্যাব সমাপ্তি খুব "বেসিক" এর মতো "স্পষ্ট" মনে হয়েছে তবে আমি পপড / পুশ্ড সম্পর্কে কখনই জানতাম না। মজার। :)
জোনিক

3
: এছাড়াও এই উত্তর পাবে দেখতে আদেশ, ফাইল ও ডিরেক্টরিগুলি তুলনায় অনেক বেশি ট্যাব-সম্পূর্ণ stackoverflow.com/questions/603696//603919#603919
Jonik

1
এটা সত্যি. আমি কাউকে দেখে বাশের পশ্চাদপদ-ইতিহাস-অনুসন্ধান (ctrl-r) সম্পর্কে শিখেছি। পরে আমি বুঝতে পেরেছিলাম যে এটি একটি পঠনের বৈশিষ্ট্য এবং অন্যান্য প্রোগ্রামগুলিতে একই কাজ করেছে যা পাঠ্যলাইন (মাইএসকিএল, জিডিবি, পাইথন -i, ক্লিপ ইত্যাদি) অন্তর্ভুক্ত করে।
সিগজুইস

2
আপনি কীভাবে বছরের পর বছর ধরে "শেল" ব্যবহার করতে পারেন এবং ট্যাব সমাপ্তির সম্পর্কে জানেন না?
প্রিস্টোমেশন

যখন pushd সঙ্গে তার আচরণ / popd ভুলবেন কমান্ড উল্লেখ না dirs । এটি পুশড / পপড স্ট্যাকের মধ্যে কী রয়েছে তা দেখায়।
slm

41

ভিম শিখুন।

এটি (যুক্তিযুক্ত) সেরা সম্পাদক, তবে একটি খালি লিনাক্স সার্ভারে পাওয়া সেরা সম্পাদক।


1
gvim উইন্ডোজেও সেরা ফাইল ব্রাউজার;)

এটাও অত্যন্ত দরকারী যেমন একবার আপনি তেজ যা জানি, তোমরা VI-মোডে সবচেয়ে শাঁস লাগাতে পারেন, এবং গৌণ অত্যন্ত সহজ এবং দ্রুত হয়ে ওঠে
প্যাট্রিক

38

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

$ your_command_here & disown

আপনি একটি চলমান প্রোগ্রাম পৃথক করতে পারেন:

$ your_command_here
# Press <Control-Z> to stop the program and bring it to background:
$ bg
$ disown

6
স্ক্রিন ব্যবহার দুর্দান্ত কারণ আপনি পরে যে কোনও জায়গা থেকে সেই অ্যাপ্লিকেশনটিতে "পুনরায় সংযোগ" করতে পারেন।
প্রিস্টোমেশন

+1, আমি অস্বীকার করার কথা শুনিনি।
ব্যবহারকারী 18911

যদিও পুনরায় অস্বীকার করা হচ্ছে, যদিও আমি ইতিমধ্যে পর্দার সাথে একই কাজ করেছি
অ্যান্ডি

38

যখন আমি নিশ্চিত করতে চাই যে আমি আসল কমান্ডটি ব্যবহার করেছি এবং একটি উপনাম নয়, আমি একটি অগ্রণী ব্যাকস্ল্যাশ ব্যবহার করি:

\rm -rf ~/tmp

এটি কি "কমান্ড rm -rf ~ / tmp" এর মতো?
ম্যাক্সিম ভেক্সলার

আমি "কমান্ড" জানতাম না, তবে এটি একই দেখাচ্ছে।
মউভিচিল

4
হ্যাঁ, হ্যাঁ, যদি না "কমান্ড" উপনাম না হয় তবে আপনাকে সেই ক্ষেত্রে \ rm -rf \ / tmp \ rm -rf
t

@ প্রেসারিও এবং আপনি কি মনে করেন যে "/" এর জন্য একটি উপাধি তৈরি করা সম্ভব হবে? আমি দুঃখের সাথে মন্তব্যগুলিকে উড়িয়ে দিতে পারি না :)

অনুরূপ আদেশ " builtin" দেখুন।
ডেনিস উইলিয়ামসন

38

এই টিপটি আপনার সিএলআইকে আরও আরামদায়ক করে তুলবে (কমপক্ষে এটি আমার জন্য তৈরি করে):

নিম্নলিখিত সামগ্রীগুলির সাথে ~ / .inputrc ফাইল তৈরি করুন:

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

পুনরায় লোড করুন (যেমন "এক্সিকিউশন ব্যাশ" টাইপ করে)। আপনি যখন কোনও কমান্ডের উপসর্গটি টাইপ করেন এবং উপরের তীর টিপুন তখন আপনি আপনার উপসর্গ দিয়ে শুরু হওয়া কমান্ডগুলি ব্রাউজ করবেন, উদাহরণস্বরূপ আপনি যদি ssh টাইপ করেন তবে এটি দূরবর্তী শেলগুলির সাথে আপনার পূর্ববর্তী সংযোগগুলি প্রদর্শন করবে। যদি আপনার প্রম্পটটি খালি থাকে তবে উপরের তীরটি ইতিহাসটিকে সাধারণভাবে ব্রাউজ করবে।


3
সাধারণত আমি এগুলিকে তীরটি পুনঃনির্মাণের পরিবর্তে \ ই [5 ~ এবং \ ই [6 ~ (ওরফে পেজআপ এবং পেজডাউন) তে আবদ্ধ করি, তবে এটি Ctrl-R / Ctrl-S এর চেয়ে বেশি সুবিধাজনক)
বিবরণে

+1 টি। আমি এগুলিকে এফ 8 এবং শিফট-এফ 8 নকল করতে পারবেন সেমিডেমি.এক্স.কে, তবে একই নীতিটি প্রযোজ্য।
ব্যবহারকারী 18911

4
+1 এর জন্যexec bash
ডেনিস উইলিয়ামসন

এটির man readlineডিফল্ট শর্টকাটগুলি পড়তে এবং মুখস্থ করাও শিক্ষামূলক
সেভ দ্য আরবিটিজ

আপনি bind -f ~/.inputrcকোনও নতুন ব্যাশ শুরু না করে এবং আপনার বর্তমান পরিবেশটি মুছে ফেলা ছাড়াই ইনপুটটি পুনরায় লোড করতেও করতে পারেন।
প্যাট্রিক

36

একবারে একাধিক কমান্ড কার্যকর করার &&পরিবর্তে ব্যবহার করুন ;। এটি ত্রুটি দেখা দেয় এবং অন্যান্য কমান্ডগুলি কার্যকর না করলে এটি বন্ধ হয়ে যায়।

শাস্ত্রীয় উদাহরণ:

./configure && make && make install

1
এই অনুশীলন তাই আন্ডাররেটেড হয়! শেল স্ক্রিপ্টের প্রতিটি লাইন && এর সাথে শেষ করা এবং চূড়ান্ত কমান্ড হিসাবে "সত্য" ব্যবহার করা স্ট্যান্ডার্ড অনুশীলন হওয়া উচিত।
ব্যবহারকারী 18911

3
মজার বিষয় হ'ল আমি '' 'সম্পর্কে জানতাম না; কমান্ড আগে - আমি সর্বদা '&&' ব্যবহার করেছিলাম।
নিক ক্লাউয়ার

4
আপনি "#! / Bin / sh -e" দিয়ে শেল স্ক্রিপ্ট শুরু করতে পারেন। কোনও লাইন ব্যর্থ হলে এটি বন্ধ হয়ে যায়।
স্ট্রবিকা

3
আপনি "অন্য" ধারাটির জন্য একটি ডাবল পাইপ ব্যবহার করতে পারেন:dosomething && echo "success" || echo "teh fail"
ডেনিস উইলিয়ামসন

2
প্ল্যানেট ডেবিয়ানে সাম্প্রতিক একটি নোট ছিল যে শেবাং লাইনে -e ব্যবহার করা খারাপ অভ্যাস। পরিবর্তে স্ক্রিপ্টের শিরোনামে সেট-ই ব্যবহার করুন। এইভাবে স্ক্রিপ্টটি আলাদাভাবে কাজ করে না যদি কেউ sh $ ফাইল নাম ব্যবহার করে চালিত হয়।
পিটিম্যান

32

ব্যাশে কমান্ড লাইনে লুপগুলি লেখার সময় আমি প্রায়শই 'ইকো' কমান্ড দিয়ে ঝুঁকিপূর্ণ কমান্ডগুলির উপসর্গ করি।

for item in items; do echo something-risky; done

এইভাবে চালানোর প্রতিশ্রুতি দেওয়ার আগে আমি পুরোপুরি 'ঝুঁকিপূর্ণ কিছু' দেখতে পাচ্ছি। যখন আপনার ঝুঁকিপূর্ণ কমান্ডে পরিবর্তনশীল বিস্তৃতি এবং গ্লোবগুলি অন্তর্ভুক্ত থাকে তখন সহায়তা করে। বাশ স্ক্রিপ্টগুলি লেখার সময় 'সেট-এক্স' খুব কার্যকর।

'সেট-এক্স' ডিবাগিং সক্ষম করে। ব্যাশ ডিবাগিং সম্পর্কিত তথ্যের জন্য http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html দেখুন ।


3
আমি এটাও করি, খুব সহজ কৌশল!
ব্যবহারকারী 18911

1
+1 এটি জীবন রক্ষাকারী হতে পারে! বা ডেটা সেভার ...
ডেভিড ওনিল

31

প্রয়োজন

আপনাকে 2 সার্ভারের মধ্যে সর্বাধিক ব্যান্ডউইথ পরীক্ষা করতে হবে।


সমাধান

উপর SERVER1 করুন:

nc -u -l 54321 > /dev/null

উপর SERVER2 করুন:

dd if=/dev/zero bs=1MB | nc -u SERVER1 54321 &
pid=$(pidof dd)
while (( 1 )); do kill -USR1 $pid; sleep 2; done

আপনি যেমন আউটপুট দেখতে পাবেন:

182682000000 bytes (183 GB) copied, 1555.74 seconds, 117 MB/s
182920+0 records in
182919+0 records out

117 এমবি / সেকেন্ড এখানে আকর্ষণীয় ফ্যাক্টর, যা প্রকৃত নেটওয়ার্ক ট্রান্সফার ব্যান্ডউইথকে দেখায়।

ব্যাখ্যা :

যেহেতু প্যাকেটটি নেটওয়ার্কের উপর দিয়ে প্রবাহিত হবে আপনি SERVER2 এ ব্যান্ডউইথ পরিসংখ্যান দেখতে সক্ষম হবেন, এটি 2 সার্ভারের মধ্যে প্রকৃত সর্বাধিক সম্ভাব্য ব্যান্ডউইথের খুব সুন্দর অনুমান।

ইউডিপি দ্বারা অনুলিপি (টিসিপি ওভারহেড প্রতিরোধের জন্য)

অনুলিপি করা হচ্ছে থেকে SERVER1 উপর মেমরি (আপনার / dev / শূন্য) থেকে SERVER2 উপর মেমরি (যেমন / dev / বাতিল), এইভাবে বোতলের হওয়া থেকে প্রতিরোধ ডিস্ক ইনপুট / আউটপুট।


4
নিশ্চিত হয়ে নিন যে এস.এস.এস। / কনফিগারেশনে যদিও সংক্ষেপণ ব্যবহার করতে কনফিগার করা হয়নি। অন্যথায় আপনি সত্যিই খুব ভাল নম্বর পাবেন যা সত্য থেকে খুব দূরে ;-)
জোছিম সৌর

Lol হ্যাঁ. এবং এসএসএইচ আপনার সিপিইউ এনক্রিপ্টিং এবং ডিক্রিপটিং পাউন্ড করে যাচ্ছে, যা সংখ্যাগুলিও ফেলে দেবে।

পরিবর্তে
নেটক্যাট

নেটকাটের জন্য +1
এসএসএইচের

@ সাউয়া, @ ড্যানিয়েল ভন ফ্যাঞ্জ এবং @ বেনডিনের পরামর্শগুলি সংশোধন করতে প্রত্যাখাত। বলছি আপনার পরামর্শের জন্য আপনাকে ধন্যবাদ।
ম্যাক্সিম ভেক্সলার 8

23

রঙ ডিরেক্টরি কাঠামো দেখা সহজ।

alias ls="ls --color=tty"

সম্পাদন করা

alias ls="ls --color=auto"

5
আমি --color = অটো পছন্দ করি কারণ এটি আবর্জনা নিয়ন্ত্রণ অক্ষর প্রেরণ করে না যদি ফাইলের দিকে পুনঃনির্দেশিত হয় তবে আপনি মিলে যায় নিদর্শনগুলি হাইলাইট করার জন্য ওরফে গ্রেপ = "গ্রেপ - রঙ = অটো "ও করতে পারেন।

--Color = অটোর জন্য +1; কেউ কি উত্তর দিয়ে বাড়াতে পারে?
জোনিক

আমার মনে হয় tty এখানে অটো হিসাবে একই জিনিস করে।
জোশডসন

রঙ =
অটোকে

আশ্চর্যের বিষয় হল, রঙটি আমার পক্ষে জিনিসগুলিকে অনেক কম পাঠযোগ্য করে তোলে। হলুদ-অন-হোয়াইট, উদাহরণস্বরূপ, কোনও ভাল রঙিন পছন্দ নয়।

20

লগ দেখার সাথে সম্পর্কিত কয়েকটি ছোট পয়েন্টার:

  1. লগটি কেটে যাওয়ার পরে আপনি পর্যবেক্ষণ করতে লেজ-এফ ব্যবহার করতে পারেন (উদাহরণস্বরূপ লোগোজেজে)।
  2. আপনি কম ব্যবহার করতে পারেন: কম খুলুন, পুচ্ছ আচরণ অনুকরণ করতে SHIFT + F ক্লিক করুন । এছাড়াও দরকারী সংমিশ্রণ -S পংক্তি মোড়ানো নিষ্ক্রিয় করতে। কম আপনাকে লগগুলিতে অনুসন্ধান করতে সক্ষম করবে।

1
এবং tail -fআপনি একসাথে একাধিক লগ দেখতে পারেন! যেমন:tail -f log1.txt -f log2.txt
স্টু থম্পসন

@ এসটুথম্পসন: ধন্যবাদ এটা জানা ছিল না। অতিরিক্ত হিসাবে, আপনি vanheusden.com/multitail
ম্যাক্সিম Veksler

20

ফাইলটির এক্সটেনশানটি সহজেই পরিবর্তন করতে আমি অনেক দিন আগে বন্ধুর কাছ থেকে একটি কৌশল শিখলাম :

mv my_filename.{old,new}

শেল সম্প্রসারণ এটিকে প্রসারিত করবে:

mv my_filename.old my_filename.new

এটি অন্য কোনও উপায়ে কোনও ফাইলের নাম পরিবর্তন করতেও ব্যবহার করা যেতে পারে যেমন কিছু যুক্ত করা:

mv my_{,cool_}filename

6
একই কমান্ডে কোনও ওয়াইল্ডকার্ড বা অন্যান্য প্যাটার্নের এক্সপ্রেশন না রাখার বিষয়ে নিশ্চিত হন বা গ্লোবটি কেবল 2 টি আর্গুমেন্টেরও বেশি প্রসারিত হতে পারে! এমভি *। {পুরানো, নতুন সম্ভবত অবাক করা ফলাফলের সম্ভাবনা রয়েছে।

হ্যাঁ, সম্মত - এটি একটি গুরুত্বপূর্ণ ক্যাভিয়েট :)

2
আপনি উদাহরণস্বরূপ টাইপ করতে পারেন, ls -l /bin/cতারপরে Alt-Shift- press টিপুন এবং এটি এটি ls -l /bin/c{at,h{grp,mod,own,vt},p{,io},sh}আপনার মতো কিছুতে সম্পূর্ণ হবে ।
ডেনিস উইলিয়ামসন

19

সংক্ষিপ্ত সংরক্ষণাগারগুলি নিষ্কাশন করতে "টার এক্সএফ" ব্যবহার করুন। Bzip2 এর জন্য j এবং gzip এর জন্য z প্রয়োজনীয় নয়, কারণ টারটি আপনার সংরক্ষণাগারের ফাইলের সন্ধান করবে। তর্ক করার আগে '-' চিহ্নও নয়। আপনি অনেক সময় সাশ্রয় করবেন (এক হাজার বছরের উপরে ;-))।

কোনও অপ্রয়োজনীয় যুক্তি ছাড়াই একটি কমান্ডের সাহায্যে কোনও সংরক্ষণাগার উত্তোলনের জন্য আরও ভাল ব্যবহার করুন ।


হ্যাঁ, আমার কাছে alias ut="tar xf"- সংরক্ষণাগারগুলি উত্তোলন আরও সহজ করে তোলে।
ডেভিড ওলবার

এটি কিছু আরএইচইল বিতরণে ব্যর্থ হয়, যদি আপনি সেগুলি ব্যবহার করেন।
pvsnp


: অথবা ইউএনপি ইনস্টল packages.debian.org/sid/unp । আমার ধারণা এটিও অদৃশ্যের মতো।
জিতরেক্স

17

বাশ-সমাপ্তি প্যাকেজ ইনস্টল করুন। এতে শেলের জন্য বেশ কয়েকটি পূর্বনির্ধারিত সমাপ্তির নিয়ম রয়েছে। "উত্স / ইত্যাদি / বাশ_কম্প্লেশন" টাইপ করে এটি সক্ষম করুন যদি আপনি ডিস্ট্রো আপনার জন্য এটি না করেন। তারপরে, উদাহরণস্বরূপ আপনি যখনই কেপিডিএফ-এর পরে সম্পূর্ণ করেন আপনি কেবল ডিরেক্টরি এবং পিডিএফ ফাইলগুলির একটি তালিকা দেখতে পাবেন। Scp ssh: // সার্ভার / এক্সএক্সএক্স (যদি আপনি পাসওয়ার্ডবিহীন লগইন সক্ষম করে থাকেন) এর পরে রিমোট ফাইলগুলি সম্পূর্ণ করা সমান স্মার্ট।


17

আমি এইগুলি ক্রমাগত ব্যবহার করি

ALT-। (ESC +। কিছু টার্মিনালে) সর্বশেষ ব্যবহৃত আর্গুমেন্ট অনুলিপি (অতি দরকারী)

CTRL-W শব্দ মুছে ফেলে

সিটিআরএল-এল ক্লিয়ার টার্মিনাল (ক্লিয়ার কমান্ডের মতো তবে দ্রুত)

ALT-B (কিছু টার্মিনালে ESC + B) একটি শব্দের পিছনে সরে যায়

ALT-F (কিছু টার্মিনালে ESC + F) একটি শব্দ এগিয়ে নিয়ে যায় move

সিটিআরএল-ই লাফিয়ে EOL এ যান

সিটিআরএল-এ বিএল-তে লাফিয়ে

ইতিহাসে সিটিআরএল-আর অনুসন্ধান করুন


1
শর্টকাট ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ! আমি ম্যাক-এ কাজ করতে ALT-B / F পাইনি।
Léo Loldopold Hertz 준영

দুর্দান্ত মানুষ ....
দাউদ আহমদ খোখার

16

ব্যাশে, আমি ব্যবহার করি ! $ প্রচুর। এটি সর্বশেষ আদেশের সর্বশেষ যুক্তি পুনরাবৃত্তি করে:

ls /really/long/command/argument/that/you/dont/want/to/repeat.txt
vi !$

এটি ls চালাবে, তারপরে আপনি যদি এটি সম্পাদনা করতে চান তবে আপনাকে এটি পুনরায় টাইপ করতে হবে না, কেবল ব্যবহার করুন! $। এটি দীর্ঘ পথ / ফাইলের নামের জন্য সত্যই কার্যকর। এছাড়াও, * পূর্ববর্তী সমস্ত কমান্ডের যুক্তি পুনরাবৃত্তি করে। আমি এটি ততটা ব্যবহার করি না, তবে এটি দরকারী মনে হয়।

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

আমি নোক্লোবার ভুলে গেছি:

set -o noclobber

ম্যান বাশ থেকে :

যদি সেট করা থাকে তবে বাশ কোনও বিদ্যমান ফাইল>>,> & <এবং <> পুনঃনির্দেশ অপারেটরগুলির সাথে ওভাররাইট করে না। পুনঃনির্দেশ অপারেটর> | ব্যবহার করে আউটপুট ফাইল তৈরি করার সময় এটি ওভাররাইড করা যেতে পারে পরিবর্তে>।


6
আমি $! ব্যবহার করি না, কারণ এটি আঙুলের চর্বি করা সত্যিই সহজ তবে আমি ting [- - মারতে পছন্দ করি। (পলায়ন-সময়) একই প্রভাব পেতে।
ডেভিড ওলবার

7
আপনার কীবোর্ড ইত্যাদির উপর নির্ভর করে আপনিও করতে পারেন Alt-.
ডেনিস উইলিয়ামসন

ওমজি, ক্ষুদ্র অর্গাজম, ডেনিস!
artifex

14

বাশ থেকে zsh এ স্যুইচ করুন এবং আপনার উত্পাদনশীলতার উন্নতি দেখুন:

  • সত্যিই বুদ্ধিমান, স্ক্রিপ্টযোগ্য ট্যাব সমাপ্তি। এটি কেবল কমান্ড লাইনই নয় সমস্ত বিকল্পগুলি, ম্যান পৃষ্ঠাগুলির নাম, প্যাকেজের নামগুলি (apt-get / উত্থাপন ইত্যাদির জন্য) এবং আপনার কী রয়েছে তা সম্পূর্ণ করে। এবং সমাপ্তির সময় বিকল্পগুলির একটি সহায়ক ব্যাখ্যা সরবরাহ করে। কমান্ড জারি হওয়ার পরে কোনও স্ক্রলব্যাক স্থান ব্যবহার না করেই এই সমস্ত
  • ওয়াইল্ডকার্ডগুলির ট্যাব সমাপ্তি; বিড়াল লিখুন * .txt, ট্যাব টিপুন, এবং যে কোনও ফাইলের মধ্যে চয়ন করুন যা অভিব্যক্তিটির সাথে মেলে।
  • কেবল তাদের নাম টাইপ করে ডিরেক্টরিগুলি স্যুইচ করুন।
  • বেশ কয়েকটি লাইন সম্পাদক মোড। আপনি চাইলে vi বা emaks এর মতো আচরণ করতে পারেন।
  • আপনার ইচ্ছামত যা করতে তা কাস্টমাইজযোগ্য কী বাইন্ডিং।
  • থিমযোগ্য প্রম্পটগুলি সহ স্ক্রিনের ডানদিকে প্রম্পট তথ্য রাখার ক্ষমতা এবং লম্বা কমান্ড টাইপ করার সময় এটি স্বয়ংক্রিয়ভাবে আড়াল করার ক্ষমতা সহ

গুগল আপনাকে আরও অনেক সুবিধা বলবে।


1
আপনার আরও একবার লিঙ্ক দেওয়া উচিত। আকর্ষণীয় শোনাচ্ছে, কিন্তু এটি আমার কাছে বিক্রি করুন!

তারা কি ইউনিকোড সমর্থন অন্তর্ভুক্ত করতে পরিচালিত?

@ কোরি ঠিক আছে, আমি কেবল চুরি করতে চাইনি এবং অন্যের লেখা অনেক ভাল জিনিস ইতিমধ্যে লেখা থাকলে আমার নিজের লেখাটা অপ্রয়োজনীয় মনে হয়েছিল :)

@ কাইকু হ্যাঁ, সম্ভবত এক বছর আগে থেকেই উপযুক্ত ইউনিকোড সমর্থন রয়েছে।

শান্ত দেখায়. আমি একটা শট দেব!

13

পুরাতন স্কুল, ডিরেক্টরি গাছটিকে এক জায়গা থেকে অন্য জায়গায় নিয়ে যাওয়া, সিমলিংক, অনুমতি এবং সমস্ত ভাল জিনিস সংরক্ষণ করে:

tar cBf - . | (cd /destination; tar xvBpf -)

বা নেটওয়ার্ক জুড়ে

tar cBf - . | rsh foo.com "cd /destination; tar xvBpf -)

নতুন স্কুল:

rsync -urltv . /destination

বা নেটওয়ার্ক জুড়ে

rsync -urltv -e ssh . foo.com:/destination

tar xvBpf - -C /destination== (cd /destination; tar xvBpf -) সামান্য কম টাইপিং, এবং ssh ব্যবহার করা সহজ।
21

1
-a '-rlptgoD' এর মতোই - এটি পুনরাবৃত্তি হয়, প্রতিলিপি হিসাবে সিমলিংকগুলি অনুলিপি করে, পার্মগুলি সংরক্ষণ করে, টাইমস্ট্যাম্পগুলি সংরক্ষণ করে, গোষ্ঠীগুলি সংরক্ষণ করে, ডিভাইস ফাইলগুলি এবং বিশেষ ফাইলগুলি ডিভাইস এবং বিশেষ ফাইল হিসাবে অনুলিপি করে। এছাড়াও, মেশিনগুলির মধ্যে, -z (প্রেরণের আগে ফাইলগুলি সংক্ষেপণ করুন, পাওয়ার পরে ডিকম্প্রেস করুন) দরকারী। rsync -avz [-e ssh] আপনার বন্ধু :-)
ডা-জান

-Z কি ssh ওভারের জন্য কোনও ভাল কাজ করে? আমি এটা ভাবেন না।
পল টমলিন

rsync -avhএকটি একক মেশিনে সেরা - hপ্রতিটি লিঙ্ককে পৃথক ফাইলে রূপান্তর না করেই হার্ড লিঙ্কগুলি সঠিকভাবে স্থানান্তরিত করা নিশ্চিত করে, যদিও আপনার কাছে প্রচুর সংখ্যক ফাইল থাকলে এটি প্রচুর স্মৃতি ব্যবহার করতে পারে। rsync -avzh . foo.com/destinationনেটওয়ার্কের সমতুল্য, এবং সাধারণত আপনার প্রয়োজন হয় না -e sshকারণ এসএসএস ব্যবহার করতে আরএসসিএন জানতে পারে।
রিচভেল

প্রকৃতপক্ষে, এই দিনগুলিতে আমি ব্যবহার করছিrsync -aSHuvrx --delete / --link-dest=/backup/$PREV /backup/$HOUR
পল টমলিন

13

প্রয়োজনীয়তা : আপনার মুছে ফেলার মতো ফাইলগুলির বৃহত তালিকা রয়েছে এমন একটি ডিরেক্টরি রয়েছে। আরএম-আর ব্যর্থ হবে!

উদাহরণ

find /var/spool/mqueue/ | wc -l
191545
rm -f /var/spool/mqueue/*
-bash: /bin/rm: Argument list too long

সমাধান :

find /var/spool/mqueue/ -xdev -exec command rm -f '{}' +

ব্যাখ্যা :

সম্পাদনা: @ বিশিষ্ট মন্তব্য অনুসরণ করে ব্যাখ্যা স্থির করা।

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

find /var/spool/mqueue -xdev -print0 | xargs -0 rm -f

যদি আপনি findসমর্থন না করেন তবে আপনাকে দরকারী মনে হতে পারে -exec ... +


5
প্রতিস্থাপন \;সঙ্গে +তাহলে findকি করবে xargsডিফল্ট, যা যতটা সম্ভব (আর্গুমেন্ট তালিকার সীমা অতিক্রম চলমান ছাড়া) ব্যাচ পর্যন্ত আর্গুমেন্ট দ্বারা নয়। অথবা শুধু ব্যবহার -deleteএর intead -exec rm(গনুহ Findutils উভয়ের জন্য প্রয়োজন)
ephemient

ভাল টিপ - আমি '+' এটিকে জানতাম না।
কোডিনটিহোল 21

@ প্রিমিয়েন্ট: ভাল মন্তব্য, আমি পোস্টটি সম্পাদনা করেছি।
ম্যাক্সিম ভেকসলার

2
আকর্ষণীয়, আমি '+' এর কথা শুনিনি।
ব্যবহারকারী 18911

অথবা ন্যায়সঙ্গত find ... -delete, যদি আপনার সন্ধানটি এতটা সমৃদ্ধ হয়।
ডেভিড ওলবার

11

আমি এই দুটি টিপসটি প্রায়শই ব্যবহার করি যাতে আমি ভেবেছিলাম ভাগ করে নেওয়া ভাল ধারণা হবে:

!foo

ইতিহাসের ফাইলের শেষ কমান্ডটি "foo" দিয়ে শুরু করবে ( !gccউদাহরণস্বরূপ , সংকলন করার সময় আমি প্রায়শই এটি ব্যবহার করি )

অন্যটি হ'ল একটি কীবোর্ড শর্টকাট (রিটার্নের পরিবর্তে Ctrl + O) এটি কমান্ডটি কার্যকর করবে এবং ইতিহাসের ফাইলটিতে পরবর্তী কমান্ডটি প্রদর্শন করবে। উদাহরণস্বরূপ, আমি যখন একটি ফাইল সংকলন করি এবং পরীক্ষা করি তখন আমি সর্বদা 3 বা 4 কমান্ড করি, তৈরি করি, পরীক্ষার ডির সিডি করি, পরীক্ষাটি চালাই, সিডি মেকফিলের ডায়ারে থাকি। Ctrl + O ব্যবহার করে এটি এই কাজটি অনেক সহজ করে তোলে :)

এই সাহায্য আশা করি!


1
Ctrl-O- এর জন্য +1
ডেনিস উইলিয়ামসন

10

কীভাবে অভিনব গ্রাফিকাল ইন্টারফেসগুলি উপলভ্য নাও হতে পারে তার সাহায্য ছাড়াই লিনাক্সে কীভাবে সাবভারশন ব্যবহার করবেন।

svn co <repo-url> . # Checks out project into current folder

svn update # Get latest changes from server

svn status # Shows what files have changed locally

svn add <path/filename> # Add some file to the repo

svn commit # Commit your changes to the repo

এটি লিনাক্স ব্যবহার থেকে প্রচুর বিকাশকারীকে আটকে রেখেছে, আশ্চর্যজনকভাবে যথেষ্ট।


লিনাক্সের অধীনে র‌্যাপিডসভান হ'ল একটি দুর্দান্ত ছোট্ট গুই i

অনেক অভিনব, শক্তিশালী জিইউআই অবশ্যই পাওয়া যায় (যেমন ইন্টেলিজ আইডিইএ-তে) তবে আমি সেগুলি বা কমান্ড লাইনটি ব্যবহার করার সম্ভাবনা পছন্দ করি (এছাড়াও শক্তিশালী, তবে পৃথকভাবে) - যেটি বর্তমান পরিস্থিতি আরও ভাল
মানায়

এখন পর্যন্ত আমার প্রিয়টি নটিলাসএসভিএন
user7655

10

সর্বাধিক অবহেলিত পুরানো-স্কুল কমান্ড: find

গতকাল আমি একটি স্থূল অনুমতি বাগটি মেরামত করেছি:

for u in nr dias simonpj; do
   sudo -u $u find . -type d -exec chmod g+s '{}' ';'
done

হ্যাঁ! ফাইন্ড কমান্ড শিখুন। একটি ফাইল প্রসেসিং জগারনেটের জন্য জার্গস, সেড এবং অ্যাডকে মেশানো সন্ধান করুন!
জোনাথন ওয়াটনি

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

হ্যাঁ, তবে অস্বাভাবিক চরিত্রগুলি (যেমন ব্যাকস্ল্যাশ) সম্বলিত ফাইলের নামগুলি যুক্ত জটিল সমস্যাগুলি এড়াতে-প্রিন্ট 0 এবং xargs- -0 বিকল্পটি ব্যবহার করতে ভুলবেন না।
ব্যবহারকারী 18911

হ্যাঁ, সম্ভবত অর্ধেক সময় আমি ব্যবহার খুঁজে এটা মূঢ় অনুমতি জিনিষ ঠিক করতে: chmod 644 $(find . -type f),chmod 755 $(find . -type d)
ডেভিড Wolever

1
অনুমতি রয়েছে এমন একটি নির্দিষ্ট উপায় নির্ধারিত ফাইলগুলি সনাক্ত -permকরার বিকল্পটি ভুলে যাবেন না find
ডেনিস উইলিয়ামসন

8

bashএবং এর মতো শেলগুলির জন্য ksh, আপনি কমান্ড লাইনটিকে আপনার পাঠ্য সম্পাদকের মতো নেভিগেশন কমান্ডগুলিতে প্রতিক্রিয়া জানাতে পারেন:

set -o emacs

অথবা

set -o vi

আপনি আপনার ইতিহাস অনুসন্ধান করতে এবং পাঠ্য ফাইলগুলিতে যেভাবে কমান্ড লাইন ব্যবহার করতে অভ্যস্ত তা (যেমন, ভিআই মোডে, ESCটাইপ করে চাপলে /string"স্ট্রিং" এর জন্য আপনার পূর্ববর্তী কমান্ডগুলি সন্ধান করবে - আপনি ব্যবহার করতে nএবং Nসরাতে পারবেন ম্যাচগুলির মধ্যে)


গৌণ টাইপ: "পরীক্ষা সম্পাদক" "পাঠ্য সম্পাদক" হওয়া উচিত

8

গ্রেপ আমার বন্ধু। সিরিয়াসলি।

পাঠ্যযুক্ত .rbফাইলগুলি তালিকাভুক্ত করুন class foo:

grep -l "class foo" .rb

পাঠ্য না থাকা .rbফাইলগুলির তালিকা করুন :class foo

grep -L "class foo" *.rb

তালিকা .rbফাইল না foo বিন্যাস অথবা বার ধারণ (যদি আপনি -e সঙ্গে কোনো regexp ব্যবহার করতে পারেন, কিন্তু আপনি অপারেটার অব্যাহতি প্রয়োজন):

grep -L -e "foo\|bar" *.rb

আপনি "আক্ক" নামক কোনও সরঞ্জামে আগ্রহী হতে পারেন, যা গ্রেপ হিসাবে একই কাজ করে তবে কেবল পুনরায় উত্সের ফাইলগুলি স্ক্যান করবে। এটি ব্যবহার করে দেখুন (এটি নিখরচায়): bestthangrep.com

8

শেল প্রতিস্থাপনটি এর সাথে সম্পাদিত হয় ^:

/home/eugene $ ls foo.txt
foo.txt
/home/eugene $ ^ls^rm
rm foo.txt
/home/eugene $ ls foo.txt
ls: cannot access foo.txt: No such file or directory

2
আসলে আমি "!!: gs / foo / bar" পছন্দ করি যেহেতু আমি প্রায়শই দেখতে পাই যে ফু এর আগের কমান্ডে একাধিকবার উল্লেখ করা হয়েছে এবং আমি একটি বৈশ্বিক প্রতিস্থাপন চাই (যেমন "এমভি foo.txt foo.bak")।
ব্যবহারকারী 18911
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.