পাইথনে সাধারণ ব্যাশ আইডিয়মগুলি কীভাবে প্রয়োগ করা যায়? [বন্ধ]


242

আমি বর্তমানে আমার টেক্সটফিল হেরফেরটি খারাপভাবে স্মরণ করা এডাব্লুকে, সেড, বাশ এবং পার্লের একটি ক্ষুদ্র বিটের মাধ্যমে করি।

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


3
: pythonpy awk একটি ভাল প্রতিদ্বন্দ্বী এবং পাইথন সিনট্যাক্স ব্যবহার sed github.com/Russell91/pythonpy
RussellStewart


এটি আমার প্রশ্ন, এটি কেন মতামত ভিত্তিক তা আমি বুঝতে পারি না। শীর্ষের উত্তরটি শেলটি করে এমন প্রতিটি মূল কাজকে তালিকাভুক্ত করে এবং কীভাবে অজগরগুলিতে তা করতে হয় তা আপনাকে বলে। এটি আমার মতে একটি মতামত উপায়ে প্রশ্নের উত্তর দেয়।
ক্রিস জেফারসন

এই প্রশ্নটি এবং এটি বন্ধ হয়ে যাচ্ছে, এখানে
এরিক

উত্তর:


144

যে কোনও শেলের বৈশিষ্ট্যগুলির কয়েকটি সেট রয়েছে।

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

    এবং - বোনাস! -- আরো দ্রুত. শেলের প্রতিটি পৃথক লিনাক্স কমান্ড (কয়েকটি ব্যতিক্রম সহ) একটি সাবপ্রসেসের জন্য জোর করে। পাইথন shutilএবং osমডিউলগুলি ব্যবহার করে আপনি একটি উপ-প্রসেস কাঁটাচামচ করবেন না।

  • শেল পরিবেশ বৈশিষ্ট্য। এর মধ্যে এমন উপাদান রয়েছে যা কমান্ডের পরিবেশ (বর্তমান ডিরেক্টরি এবং পরিবেশের ভেরিয়েবল এবং কী নয়) নির্ধারণ করে। আপনি পাইথন থেকে সরাসরি এটি পরিচালনা করতে পারেন।

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

  • মিথস্ক্রিয়া বৈশিষ্ট্য। এর মধ্যে কমান্ডের ইতিহাস অন্তর্ভুক্ত রয়েছে এবং কী নয়। শেল স্ক্রিপ্ট লেখার জন্য আপনার এটির দরকার নেই। এটি কেবল মানুষের মিথস্ক্রিয়ার জন্য, না স্ক্রিপ্ট-লেখার জন্য।

  • শেল ফাইল পরিচালনা বৈশিষ্ট্য। এর মধ্যে পুনঃনির্দেশ এবং পাইপলাইন অন্তর্ভুক্ত রয়েছে। এটি কৃপণ। এর বেশিরভাগটি সাবপ্রসেসের সাহায্যে করা যেতে পারে। তবে শেল সহজেই কিছু জিনিস পাইথনে অপ্রীতিকর। বিশেষত স্টাফ পছন্দ (a | b; c ) | something >result। এটি সমান্তরালভাবে দুটি প্রসেস চালায় (সাথে aইনপুট হিসাবে আউটপুট সহ b) তৃতীয় প্রক্রিয়া অনুসরণ করে। সেই সিকোয়েন্স থেকে আউটপুট সমান্তরালে চালিত হয় somethingএবং আউটপুট নামের একটি ফাইলে সংগ্রহ করা হয় result। এটি অন্য যে কোনও ভাষায় প্রকাশ করা কেবল জটিল।

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

সেরা জিনিসটি আপনি পদক্ষেপে এটি করতে পারেন।

  1. পাইথন দিয়ে AWK এবং PERL প্রতিস্থাপন করুন। অন্য সব কিছু ছেড়ে দাও।
  2. পাইথন দিয়ে জিআরইপি প্রতিস্থাপনের দিকে তাকান। এটি কিছুটা জটিল হতে পারে তবে আপনার GREP এর সংস্করণটি আপনার প্রক্রিয়াজাতকরণের প্রয়োজন অনুসারে তৈরি করা যেতে পারে।
  3. পাইথন লুপগুলি ব্যবহার করে তা প্রতিস্থাপনের দিকে তাকান os.walk। এটি একটি বড় জয় কারণ আপনি যতগুলি প্রক্রিয়া চালান না।
  4. পাইথন স্ক্রিপ্টগুলির সাথে সাধারণ শেল লজিক (লুপস, সিদ্ধান্ত ইত্যাদি) প্রতিস্থাপনের দিকে তাকান।

6
লিখেছেন: "ইন্টারঅ্যাকশন বৈশিষ্ট্যগুলি This এটিতে কমান্ডের ইতিহাস অন্তর্ভুক্ত রয়েছে এবং কী নয় You আপনার এটির দরকার নেই।" আমি ভয় করি যে একজন ব্যক্তির আসলে কী প্রয়োজন বা কেউ কী বলতে পারে না। সম্ভবত তিনি করেন। তদতিরিক্ত, এই সুবিধাগুলি একটি ইন্টারেক্টিভ শেলটিতে প্রচুর অর্থবোধ তৈরি করে, উদাহরণস্বরূপ আইডল এবং আইপিথনের মধ্যে পার্থক্য।
হেলটনবাইকার

47
আমি আন্তরিকভাবে আশা করি লোকেরা পুরোপুরি শেল স্ক্রিপ্টিংটি খনন করবে। আমি বুঝতে পেরেছি যে হ্যাকিং কার্যতঃ * নিক্স বিশ্বে একটি ধর্ম, তবে আমি ওএসে ইমপ্লান্ট করা সমস্ত হ্যাকিশ ওয়ার্কআরউন্ডকে ব্যাখ্যা করার চেষ্টা করে সত্যিই ক্লান্ত হয়ে পড়েছি। মাইক্রোটুলের অভিনবত্ব (আঁক, সেড, শীর্ষ, বেস, ইত্যাদি) যেদিন প্রত্যেকে নিজের সংস্করণটি রোল করার সিদ্ধান্ত নিয়েছিল off আমি ক্রিংজ করি যখন আমি কল্পিত ছোট্ট সরঞ্জামগুলিতে যে পরিমাণ ঘন্টা সময় নষ্ট করেছিলাম তা সহজেই প্রতিস্থাপন করতে পারে এমন বেশ কয়েকটি ভাল ডিজাইন করা পাইথন মডিউল। :: দীর্ঘশ্বাস ::
ইভান প্লেস

40
আমি @ ইভানপ্লাইসকে একমত নই কারণ findআমার কাছে থাকা বেশ কয়েকটি স্ক্রিপ্টের অজগর সংস্করণ তুলনামূলকভাবে কুরুচিপূর্ণ এবং দীর্ঘ এবং অবিস্মরণীয়। অনেক কিছুই হওয়া উচিত শেল স্ক্রিপ্ট, অনেকে না করা উচিত । সমস্ত কিছুর জন্য পাইথন বা বেস (বা অন্য কোনও কিছু) হওয়া উচিত নয়।
মাইকেববকক

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

2
শেল পাইপলাইনগুলি (যেমন (a | b; c ) | something >result) সম্পর্কে বিন্দুটি কিছুটা হ্রাস করা যায় যার মাধ্যমে শেল পাইপলাইনগুলি subprocessব্যবহারের পদ্ধতিগুলিতে তুচ্ছভাবে সহজভাবে পাস করা যায়shell=True
ইরুবার

103

হ্যা অবশ্যই :)

এই লাইব্রেরিগুলিতে একবার দেখুন যা আপনাকে আর কখনও শেল স্ক্রিপ্টগুলি লিখতে সহায়তা করে না (প্লাম্বামের মূলমন্ত্র)।

এছাড়াও, আপনি যদি পাইথন ভিত্তিক কোনও কিছু দিয়ে জঞ্জাল, সেড এবং গ্রেপ প্রতিস্থাপন করতে চান তবে আমি পাইপকে সুপারিশ করি -

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


এছাড়াও দূতকে দেখুন, যা sh github.com/kennethreitz/envoy এর
অ্যালানলআরএইচ

57

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

#!/usr/bin/env ipython3

# *** How to have the most comfort scripting experience of your life ***
# ######################################################################
#
# … by using ipython for scripting combined with subcommands from bash!
#
# 1. echo "#!/usr/bin/env ipython3" > scriptname.ipy    # creates new ipy-file
#
# 2. chmod +x scriptname.ipy                            # make in executable
#
# 3. starting with line 2, write normal python or do some of
#    the ! magic of ipython, so that you can use unix commands
#    within python and even assign their output to a variable via
#    var = !cmd1 | cmd2 | cmd3                          # enjoy ;)
#
# 4. run via ./scriptname.ipy - if it fails with recognizing % and !
#    but parses raw python fine, please check again for the .ipy suffix

# ugly example, please go and find more in the wild
files = !ls *.* | grep "y"
for file in files:
  !echo $file | grep "p"
# sorry for this nonsense example ;)

সিস্টেম শেল কমান্ড এবং এটি সিস্টেম শেল হিসাবে ব্যবহার করে আইপিথন ডক্স দেখুন ।


11
উত্সাহিত হয়েছে কারণ কিছু উদ্ভট কারণে, আর কেউ উল্লেখ করেনি! -আইপিথনে কম্যান্ডস, যা একেবারে মূল; বিশেষত যেহেতু আপনি তাদের আউটপুটটি ভেরিয়েবলের (লাইনগুলির তালিকা) হিসাবেও নির্ধারণ করতে পারেনfilelines = ! cat myfile
কাম্পু

এবং আপনি কি $varশেল কমান্ডের মতো পাইথন ভেরিয়েবল ব্যবহার করতে পারেন ? কি দারুন. এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
চিয়েল দশ ব্রিনকে 12 '

আর আপনার কাছে jupyter নোটবুক মধ্যে থেকে এটি ব্যবহার করতে পারেন
ইউভাল Atzmon

44

2015 এবং পাইথন 3.4 এর মুক্তির হিসাবে, এখন এখানে যুক্তিসঙ্গতভাবে সম্পূর্ণ ব্যবহারকারী-ইন্টারেক্টিভ শেলটি পাওয়া যাবে: http://xon.sh/ বা https://github.com/scopatz/xonsh

প্রদর্শনি ভিডিও দেখাতে পাইপ ব্যবহার করা হচ্ছে, কিন্তু তারা সমর্থিত যখন ডিফল্ট শেল মোডে নেই।

জোনশ ('শঙ্খ') বাশকে অনুকরণ করার জন্য খুব কঠোর চেষ্টা করে, তাই যে জিনিসগুলির জন্য আপনি ইতিমধ্যে পেশীগুলির স্মৃতি অর্জন করেছেন, যেমন

env | uniq | sort -r | grep PATH

অথবা

my-web-server 2>&1 | my-log-sorter

এখনও ঠিক কাজ করবে।

টিউটোরিয়ালটি বেশ দীর্ঘ এবং এটি একটি ছাই বা ব্যাশ প্রম্পটে সাধারণত কারও কাছে প্রত্যাশিত কার্যকারিতার উল্লেখযোগ্য পরিমাণকে কভার করে বলে মনে হয়:

  • সংকলন, মূল্যায়ন এবং সম্পাদন করুন!
  • কমান্ডের ইতিহাস এবং ট্যাব সমাপ্তি
  • সহায়তা ও Superhelp সঙ্গে ?&??
  • উপকরণ এবং কাস্টমাইজড প্রম্পটস
  • কমান্ড এবং / অথবা *.xshস্ক্রিপ্টগুলি কার্যকর করে যা আমদানি করা যায়
  • লুকআপ উইথ এনভায়রনমেন্ট ভেরিয়েবল ${}
  • ইনপুট / আউটপুট পুনঃনির্দেশ এবং সংমিশ্রণ
  • পটভূমি চাকরী ও চাকরি নিয়ন্ত্রণ
  • নেস্টিং সাবপ্রসেসেস, পাইপ এবং কপোরাসেসেস ses
  • সাব-প্রসেস-মোড যখন কোনও কমান্ড উপস্থিত থাকে, অন্যথায় পাইথন-মোড
  • এর সাথে $()সাব-প্রসেস ক্যাপচারড , সাথে আনপ্যাক্টার্ড সাবপ্রসেস $[], পাইথন মূল্যায়ন সহ@()
  • ফাইলনাম গ্লোব্বিং উইথ *বা নিয়মিত এক্সপ্রেশন ফাইল ব্যাকটিক্স সহ ফাইলনেম গ্লোববিং

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

.xshXonsh কোড সহ ফাইলগুলির জন্য এক্সটেনশন ব্যবহার করার মতো প্রয়োজনীয়তার যেমন কিছু অসুবিধা রয়েছে বলে মনে হয় : github.com/xonsh/xonsh/issues/2478 । অন্যথায় আপনাকে evalxসরাসরি .pyফাইলগুলি থেকে কল করতে হবে ।
অ্যান্ড্রি

31
  • আপনি যদি পাইথনকে শেল হিসাবে ব্যবহার করতে চান তবে আইপিথনটি কেন দেখুন না ? ইন্টারেক্টিভভাবে ভাষা শেখাও ভাল।
  • আপনি যদি অনেকগুলি টেক্সট ম্যানিপুলেশন করেন এবং আপনি যদি টেক্সট সম্পাদক হিসাবে ভিম ব্যবহার করেন তবে আপনি সরাসরি পাইথনে ভিমের জন্য প্লাগইনও লিখতে পারেন। শুধু ভিমে ": সহায়তা পাইথন" টাইপ করুন এবং নির্দেশাবলী অনুসরণ করুন বা এই উপস্থাপনাটি দেখুন । ফাংশনগুলি লেখার পক্ষে এটি এত সহজ এবং শক্তিশালী যে আপনি সরাসরি আপনার সম্পাদকটিতে ব্যবহার করবেন!

8
সেখানে একটা ipython প্রফাইল 'SH' বলা যে ব্যাখ্যাকারী করে তুলেছে খুব শেল মতো।
অটোপেক্টিক

3
আইপিথন 'শ' প্রোফাইলটি কিছু সময়ের জন্য সরানো হয়েছে।
gdw2

>>> ফলাফল =! dmesg | গ্রেপ -i 'ইউএসবি' # এই! অপারেটর এটি সব করেন
পেরমাফ্যাকচার

16

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

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

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

যেভাবেই হোক, শুভকামনা!


9

আমি অজস্র অনলাইন বইটি ডাইভ ইন্ট পাইথনের পরামর্শ দিচ্ছি । আমি ভাষাটি কীভাবে প্রাথমিকভাবে শিখেছি।

আপনাকে ভাষার মূল কাঠামো, এবং দরকারী প্রচুর উপাত্ত কাঠামো শেখানোর বাইরে এটির নিয়মিত অভিব্যক্তি এবং আরও অনেক কিছুতে ফাইল পরিচালনা এবং পরবর্তী অধ্যায়গুলির একটি ভাল অধ্যায় রয়েছে ।


1
... কেবলমাত্র লিংক উত্তরের মূল সমস্যা।
জিন-ফ্রান্সোইস ফ্যাব্রে


7

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

আরও ভাল, স্ট্যান্ডার্ড পাইথনে লেখা একটি প্রোগ্রাম এমনকি উইন্ডোতেও চলবে!


1
"স্ট্যান্ডার্ড পাইথনে রচিত একটি প্রোগ্রাম এমনকি উইন্ডোতেও চলবে": কোন মজা নেই?
জিন-ফ্রান্সোইস ফ্যাব্রে

6

অভিজ্ঞতার ভিত্তিতে আমি এখানে আমার মতামত দেব:

শেলের জন্য:

  • শেল খুব সহজেই কেবল পঠনযোগ্য কোড স্পোন করতে পারে। এটি লিখুন এবং আপনি যখন এটিতে ফিরে আসবেন, আপনি আবার কী করেছিলেন তা কখনই বুঝতে পারবেন না। এটি সম্পাদন করা খুব সহজ।
  • শেল পাইপগুলির সাহায্যে এক লাইনে প্রচুর পাঠ্য প্রক্রিয়াকরণ, বিভাজন ইত্যাদি করতে পারে।
  • বিভিন্ন প্রোগ্রামিং ভাষায় প্রোগ্রামগুলির কলকে সংহত করার ক্ষেত্রে এটি সেরা আঠালো ভাষা।

অজগর জন্য:

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

আমি সাধারণত বেশিরভাগ জিনিসের জন্য বাশ নির্বাচন করি তবে আমার যখন উইন্ডোস সীমানা অতিক্রম করতে হবে এমন কিছু থাকে তখন আমি কেবল পাইথন ব্যবহার করি।


4

পাইথনপি এমন একটি সরঞ্জাম যা জাজ এবং এসড থেকে অনেকগুলি বৈশিষ্ট্যে সহজে অ্যাক্সেস সরবরাহ করে তবে পাইথন সিনট্যাক্স ব্যবহার করে:

$ echo me2 | py -x 're.sub("me", "you", x)'
you2

3

আমি আধা-দীর্ঘ শেল স্ক্রিপ্ট (300-500 লাইন) এবং পাইথন কোড তৈরি করেছি যা অনুরূপ কার্যকারিতা করে। যখন বহিরাগত কমান্ডগুলি কার্যকর করা হয় তখন শেলটি ব্যবহার করা সহজ find প্রচুর পাঠ্য ম্যানিপুলেশন থাকাকালীন পার্লও একটি ভাল বিকল্প।


3

এই বিষয়টি গবেষণা করার সময়, আমি এই প্রুফ-অফ কনসেপ্ট কোডটি পেয়েছি ( http://jlebar.com/2010/2/1/Replacing_Bash.html- এ একটি মন্তব্যের মাধ্যমে ) যা আপনাকে "পাইথন ব্যবহার করে পাইথনে শেল-জাতীয় পাইপলাইন লিখতে দেয়" সংশ্লেষকে ক্ষতিকারক করে, এবং বিদ্যমান সিস্টেম সরঞ্জামগুলিকে সুবিধা দেয় যেখানে তারা বোঝায় ":

for line in sh("cat /tmp/junk2") | cut(d=',',f=1) | 'sort' | uniq:
    sys.stdout.write(line)

2

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

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


2

আপনি শেলপাই লাইব্রেরির সাথে ব্যাশের পরিবর্তে অজগর ব্যবহার করতে পারেন ।

এখানে উদাহরণ রয়েছে যা গিথুব থেকে পাইথন ব্যবহারকারী অবতারটি ডাউনলোড করে:

import json
import os
import tempfile

# get the api answer with curl
answer = `curl https://api.github.com/users/python
# syntactic sugar for checking returncode of executed process for zero
if answer:
    answer_json = json.loads(answer.stdout)
    avatar_url = answer_json['avatar_url']

    destination = os.path.join(tempfile.gettempdir(), 'python.png')

    # execute curl once again, this time to get the image
    result = `curl {avatar_url} > {destination}
    if result:
        # if there were no problems show the file
        p`ls -l {destination}
    else:
        print('Failed to download avatar')

    print('Avatar downloaded')
else:
    print('Failed to access github api')

যেমন আপনি দেখতে পাচ্ছেন, গ্রাভ অ্যাকসেন্টের (inside) চিহ্নের ভিতরে থাকা সমস্ত এক্সপ্রেশন শেল ব্যবহার করা হয়। এবং পাইথন কোডে আপনি এই নির্বাহের ফলাফল ক্যাপচার করতে এবং এতে ক্রিয়া সম্পাদন করতে পারেন। উদাহরণ স্বরূপ:

log = `git log --pretty=oneline --grep='Create'

এই লাইনটি প্রথমে git log --pretty=oneline --grep='Create'শেলের মধ্যে সম্পাদন করবে এবং তারপরে ফলাফলটি লগ ভেরিয়েবলকে নির্ধারণ করবে। ফলাফলের নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

এক্সক্লুটেড প্রক্রিয়াটির স্টাডআউট থেকে পুরো পাঠ্যকে স্টাডআউট করুন

stderr মৃত্যুদন্ড কার্যকর প্রক্রিয়া দ্বারা stderr থেকে পুরো টেক্সট

এক্সিকিউশন এর রিটার্ন কোড

এটি গ্রন্থাগারের সাধারণ ওভারভিউ, উদাহরণ সহ আরও বিশদ বিবরণ এখানে পাওয়া যাবে


1

যদি আপনার টেক্সটফাইলে ম্যানিপুলেশনটি সাধারণত এক-সময় হয়, সম্ভবত শেল-প্রম্পটে করা হয়ে থাকে তবে আপনি পাইথন থেকে ভাল কিছু পাবেন না।

অন্যদিকে, যদি আপনাকে সাধারণত একই (বা অনুরূপ) কাজটি বারবার করতে হয় এবং এটি করার জন্য আপনাকে আপনার স্ক্রিপ্টগুলি লিখতে হয় তবে অজগরটি দুর্দান্ত - এবং আপনি সহজেই নিজের লাইব্রেরি তৈরি করতে পারেন (আপনি এটি করতে পারেন এটি শেল স্ক্রিপ্টগুলির সাথেও রয়েছে তবে এটি আরও জটিল।

একটি অনুভূতি পেতে খুব সহজ উদাহরণ।

import popen2
stdout_text, stdin_text=popen2.popen2("your-shell-command-here")
for line in stdout_text:
  if line.startswith("#"):
    pass
  else
    jobID=int(line.split(",")[0].split()[1].lstrip("<").rstrip(">"))
    # do something with jobID

সিস্টেমে এবং গোটোপ্ট মডিউলটিও পরীক্ষা করে দেখুন, এগুলি আপনার প্রথম প্রয়োজন।


1

আমি পিপিআইতে একটি প্যাকেজ প্রকাশ করেছি: ইজে । এটি ইনস্টল করতে
ব্যবহার করুন pip install ez

এটি শেলের মধ্যে সাধারণ কমান্ডগুলি প্যাক করেছে এবং দুর্দান্তভাবে আমার লিব শেল হিসাবে মূলত একই বাক্য গঠন ব্যবহার করে। উদাহরণস্বরূপ, সিপি (উত্স, গন্তব্য) ফাইল এবং ফোল্ডার উভয়ই পরিচালনা করতে পারে! (shutil.copy shutil.copytree এর মোড়ক এবং কখন কোনটি ব্যবহার করবেন তা স্থির করে)। আরও সুন্দরভাবে, এটি আর এর মতো ভেক্টরাইজেশন সমর্থন করতে পারে!

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

চূড়ান্ত উদাহরণ: আপনি খুব সহজে স্ক্রিপ্ট লিখতে তাদের একত্রিত করতে পারেন:
files = fls('.','py$'); cp(files, myDir)

অবশ্যই এটি পরীক্ষা করে দেখুন! এটি লিখতে / উন্নতি করতে আমার কয়েক ঘন্টা ব্যয় হয়েছে!


1
আকর্ষণীয় দেখতে দেখতে, তবে আমি পাইপি.পিথন.আর.পিপি / এজে ফর্ম্যাট করা ডক্সটি ভেঙে ফেলতে পারি না , দুঃখিত ...
গ্রেগ ডাবিকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.