কোনও স্ক্রিপ্ট কার্যকর করার আগে ব্যবহারকারীর নিশ্চয়তার জন্য জিজ্ঞাসা করবেন?


8

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

(আমি জানি চিত্রটি উইন্ডোজ থেকে এসেছে, আমি একটি লিনাক্স পাইনি)

উত্তর:


13

ব্যবহার করার একটি উপায় আছে zenity

zenity --question --text "Are you sure?"

এখানে চিত্র বর্ণনা লিখুন

সাথে আপনি সেই কমান্ডের প্রস্থান অবস্থা পরীক্ষা করতে পারেন $?পরিবর্তনশীল, ভালো কিছু: if [ $? -eq 1 ];then exit 1 ; fi0হয় OK, 1বাতিল হয়। আপনার যদি পরে পপআপের প্রস্থান স্থিতি পরীক্ষা করতে হয়, $?পপআপটি কোনও ভেরিয়েবলের বাইরে বেরিয়ে যাওয়ার ঠিক পরে সঞ্চয় করতে পারে তবে এই নির্মাণটি ভালভাবে কাজ করবে । মন্তব্যগুলিতে আলোচিত হিসাবে, বেলোর মতো কাঠামোগুলিও কাজ করবে:

if zenity --question --text "Are you sure" 
then
     runSumeFunction
else
     exit 1
 fi

অথবা

 zenity --question --text "Are you sure?" || echo "User isn't sure:/"

2
আপনার বর্গাকার বন্ধনী প্রয়োজন নেই। কেবল করুন if zenity...বাzenity... || exit
কেভিন

সেভাবে করা যেতে পারে তবে আমি আরও "traditional
তিহ্যবাহী

2
কোনও প্রোগ্রামের প্রস্থান স্থিতিটি অন্য প্রোগ্রামে (বা শেল বিল্টিন) খাওয়ানো এবং তারপরে প্রস্থান স্থিতি পরীক্ষা করে এটি পরীক্ষা করে দেখতে কেবল আমার কাছে নির্বোধ বলে মনে হয়েছিল।
কেভিন

এটি কিছুটা মূর্খ, তবে এটি অভ্যাসের শক্তি হয়ে
সের্গি কলডিয়াজনি

6

আপনি xmessageস্ক্রিপ্ট নিজেই ব্যবহার করতে পারেন । "শেবাং" এর পরে এই জাতীয় কিছু রাখুন:

xmessage "Are you sure?"

এটি একটি গ্রাফিকাল বার্তা প্রদর্শন করবে "আপনি কি নিশ্চিত?" একটি "ঠিক আছে" বোতাম দিয়ে।

আপনি xmessageএকাধিক বোতাম থাকতে কনফিগার করতে পারেন এবং এতে যা লেখা আছে তা পরিবর্তন করতে পারেন। আপনি প্রতিটি বোতাম দ্বারা সম্পন্ন ক্রিয়াগুলিও কনফিগার করতে পারেন।

উদাহরণ স্বরূপ,

xmessage -buttons ok:0,cancel:1 "Are you sure?"  

man xmessageসমস্ত বিকল্পের জন্য দেখুন (সেগুলি প্রচুর রয়েছে)।


ধন্যবাদ ... এই সমাধানটিও ঠিকঠাক কাজ করে .. এটি ঠিক যে জেনটিটি আরও ভাল দেখায় একটি কথোপকথন প্রদর্শন করে .. কার্যকারিতার দিক থেকে উভয়ই কাজ করে ...
মায়ঙ্ক বুধওয়ানি

5

কীভাবে এটি করবেন তা বলার পরিবর্তে, আমি আপনাকে বলব যে আপনার এটি করা উচিত নয়।

TL; DR - আপনার স্ক্রিপ্ট পরিবর্তন করবেন না change পরিবর্তে আপনার ফাইল পরিচালককে কনফিগার করুন বা আপনার ব্যবহারকারীরা দুর্ঘটনাক্রমে কেন এটি চালান তা নির্ধারণ করুন।

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

আপনি যেভাবে আপনার সমস্যাটি প্রকাশ করেছেন তা থেকে মনে হয় যে আপনি ফাইলটি কোথায় রয়েছে সেদিকে ন্যাভিগেট করে এবং তারপরে ফাইল পরিচালক থেকে এটি ক্লিক করে আপনার প্রোগ্রাম (স্ক্রিপ্ট) চালিত হবে। আপনার সিস্টেমের অন্যান্য সমস্ত প্রোগ্রাম সম্পর্কে চিন্তা করুন। আপনি কত এটি শুরু করেন? /usr/local/binফায়ার ফক্স শুরু করার সময় আপনি কি নেভিগেট করেন ? অবশ্যই আপনি না। আপনি অ্যাপ্লিকেশন মেনু থেকে এটি ক্লিক করুন। (জিনোম টুইক একটি অজগর স্ক্রিপ্ট এটি সম্ভবত একটি ভাল উদাহরণ)

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

  1. আপনার স্ক্রিপ্টটি অন্য ফাইলগুলি থেকে দূরে রাখুন যেখানে ব্যবহারকারী দুর্ঘটনাক্রমে এটিতে ক্লিক করতে পারে (সাধারণ জায়গাটি /usr/local/bin/সিস্টেম ওয়াইড ইনস্টলেশন বা ~/.local/bin/ব্যবহারকারী ইনস্টলের জন্য)

  2. একটি ডেস্কটপ এন্ট্রি ফাইল তৈরি করুন ( স্ট্যান্ডার্ড স্পেসিফিকেশন পড়ুন )। এখানে একটি ন্যূনতম কেস:

    [Desktop Entry]
    Name=Your script name
    Exec=path/for/your/script
    Icon=path/for/your/icon/can/be/svg
    Terminal=false
    Type=Application

    এবং এটা ঠেলা /usr/local/share/applications/your-script.xmlবা ~/.local/share/your-script.xml

  3. শেষ পর্যন্ত চালান update-desktop-database


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

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

প্রকৃতপক্ষে, নটিলাস (জিনোম ফাইল ম্যানেজার) ইতিমধ্যে ডিফল্টরূপে আপনাকে কোনও স্ক্রিপ্ট কার্যকর করতে চান কিনা তা নিশ্চিত করতে জিজ্ঞাসা করবে (বা কেবল এটি কোনও পাঠ্য সম্পাদককে খুলতে হবে)।

নটিলাস নিশ্চিতকরণ ডায়ালগ

এবং অবশ্যই, এই আচরণটি কনফিগারযোগ্য, ব্যবহারকারীকে এটি বন্ধ করার সম্ভাবনা দেয় ( এক্সিকিউটেবল টেক্সট ফাইলগুলিতে নোট এন্ট্রি )।

নটিলাস পছন্দসমূহ মেনু - আচরণ ট্যাব

সুতরাং আপনার স্ক্রিপ্টে একটি বিরক্তিকর নিশ্চিতকরণ ডায়ালগ যুক্ত করবেন না। আপনার ফাইল পরিচালককে সঠিকভাবে কনফিগার করুন। এবং আপনার ব্যবহারকারীদেরও এটি করতে দিন।


1
এটি আসলেই কোনও সমাধান নয়, কারণ এটি সহজে এবং নিরাপদে অন্যদের সাথে ভাগ করা যায় না।
ইসমাইল মিগুয়েল

ধন্যবাদ ... আমি কীভাবে এটি করতে জানি .. তবে এটি সমস্ত স্ক্রিপ্টগুলিতে একটি নিশ্চিতকরণ যুক্ত করেছে ... আমি এটি একটি নির্দিষ্ট স্ক্রিপ্টের জন্য চাই ...
মায়ঙ্ক বুধওয়ানি

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

@ ইসমাইলমিগুয়েল এই উত্তরটি ব্যবহারকারী কী করতে চায় তার বিরোধী প্যাটার্নটি নির্দেশ করে। এটি প্রশ্নকারীকে মাছ দেয় না কারণ সে অ্যালার্জিযুক্ত।
ব্রায়াম

@ মায়াঙ্কবুদ্ধওয়ানি আপনি এখনও ভুল সমস্যার সমাধান করছেন। কেন বিশেষ স্ক্রিপ্ট বিশেষ? যদি আপনার ব্যবহারকারীরা দুর্ঘটনাক্রমে এটিতে ক্লিক করেন, তবে এটি একটি আলাদা সমস্যা। আমি উত্তরটি অন্য পদ্ধতির সাথে সম্পাদনা করেছি।
21:48

2

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

yad --title=Question --image=dialog-question --text="Are you sure?"

এবং আপনার এটি দেখতে হবে: স্ক্রিনশট 1

যদি ওকে চাপ দেওয়া হয় তবে আমরা 0 এর একটি রিটার্ন কোড পাই, বাতিল চাপলে আমরা 1 এর একটি রিটার্ন কোড পাই।

বক্সটিটিকে কেন্দ্রে রেখে তার প্রস্থকে সামঞ্জস্য করা আরও ভাল হবে, "আপনি কি নিশ্চিত?" পাঠ্যের অবস্থানের জন্য একটি শীর্ষস্থানীয় ট্যাব ব্যবহার করুন? আরও ডানদিকে এবং এটি সর্বদা শীর্ষে থাকে। এর জন্য আমাদের দরকার:

yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200

"আপনি কি নিশ্চিত?" এর আগে "\ t" ব্যতীত বেশিরভাগ স্যুইচগুলি স্ব-বর্ণনামূলক? যা টেক্সট মুদ্রণের আগে কেবল একটি ট্যাব স্পেস যুক্ত করে। এখন আমাদের এটি দেখতে হবে:এখানে চিত্র বর্ণনা লিখুন

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

yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200;result=$?;echo $result

এই উদাহরণে আমরা ভেরিয়েবল $ ফলাফলটি ব্যবহার করছি যা ঠিক আছে যদি 0 চাপায় বা বাতিল চাপলে 1 তে সেট করা হবে।

ইয়াডের সাহায্যের জন্য আপনি ব্যবহার করতে পারেন man yadবা yad --help-allআমি খুঁজে পেয়েছি ব্যবহারিক উদাহরণগুলি মানিয়ে নেওয়া সহজ। এখানে কিছু আছে । ইয়াদ অনেক বেশি কনফিগারযোগ্য এবং তাই আমার মতে জেনেনিটির চেয়ে বেশি ব্যবহারযোগ্য।


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