প্রতি ট্যাবে বিভিন্ন কমান্ড দিয়ে এক্সফেস-টার্মিনাল কীভাবে চালানো যায় এবং কমান্ডগুলি ফিরে আসার পরে ট্যাবগুলি ব্যবহার করা চালিয়ে যায়?


20

ওভারভিউটি রাখার জন্য আমি সর্বদা একই ক্রমে একাধিক কমান্ড স্থাপন করতে এবং সেগুলি স্বয়ংক্রিয়ভাবে একসাথে শুরু করতে (গ্রেড, গিট, ডাটাবেস, স্কেলা-রিপিএল, জবস) ...

-এইচ (হোল্ড) এর অর্থ মনে হচ্ছে যে টার্মিনালটি সমাপ্তির পরে বন্ধ হয়নি, তবে কীভাবে আমি ইচ্ছাকৃতভাবে এই প্রক্রিয়াটি শেষ করব? একেবারেই না? এমনভাবে যাতে আমি টার্মিনালটি ব্যবহার করা চালিয়ে যেতে পারি।

আমি xfce4- টার্মিনাল এবং ব্যাশ দিয়ে xubuntu ব্যবহার করছি। উইন্ডো / ট্যাবে কাজ চালিয়ে যাওয়ার ক্ষমতা সহ একাধিক কমান্ড শুরুর জন্য আরও ভাল জিইউআই-সমাধান থাকতে পারে?

আপডেট: আপনি যদি এই কমান্ডগুলি না জানেন: জবস এবং গ্রেডল ক্রমাগত আউটপুট উত্পাদন করে যা আপনি একই টার্মিনালে অন্তর্নির্মিত করতে চান না। এবং কখনও কখনও তাদেরকে ডিগ্রি সেন্টিগ্রেড দিয়ে বাধা দেওয়া এবং পুনরায় চালু করা দরকার। আমি এক্সএফসি 4-টার্মটি পুনরায় খুলতে এবং আমার যে ডিরেক্টরিতে কাজ করতে হবে সেই ডিরেক্টরিতে নেভিগেট করতে পছন্দ করি না।

ডাটাবেস এবং স্কেলা-রিপ্লে ইন্টারেক্টিভ তাই পটভূমিতে এগুলি শুরু করার কোনও বুদ্ধি নেই।

আমার বর্তমান স্টার্টআপ-স্ক্রিপ্টটি কেবল পছন্দসই ডিরেক্টরিতে নেভিগেট করে এবং সমস্ত ট্যাবকে সর্বদা একই পজিশনে সন্ধান করতে ডান ক্রমটিতে খোলে, প্রতিটি ট্যাবকে তার উদ্দেশ্যে নামকরণ করে:

xfce4-terminal -T eclipse   --working-directory=/home/stefan/oximity -e "/opt/eclipse/eclipse" \
    --tab -T arandr --working-directory=/home/stefan/oximity -e "arandr /home/stefan/.screenlayout/oximity.sh" \
    --tab -T bash       --working-directory=/home/stefan/oximity \
    --tab -T gradle     --working-directory=/home/stefan/oximity/med \
    --tab -T git        --working-directory=/home/stefan/oximity/med \
    --tab -T mysql      --working-directory=/opt/mini/mysql \
    --tab -T jboss      --working-directory=/opt/mini/jboss \
    --tab -T jboss-log  --working-directory=/opt/mini/jboss/standalone/log \
    --tab -T scala-REPL --working-directory=/home/stefan/proj/mini/forum -e /opt/scala/bin/scala

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


আপনার প্রশ্নটি এখনও আমার কাছে অস্পষ্ট। আপনি যদি একটি টার্মিনাল শেলটিতে ফিরে যেতে চান তবে একবার কমান্ডটি টার্মিনেট দিয়ে শুরু করা হয়েছিল? এরকম কিছু xterm -e 'stuff;bash'?
frostschutz

1
এই প্রশ্ন এখনও কাজ প্রয়োজন! আমি এই থ্রেডটি পেয়েছি, আমি মনে করি এটিই ওপি খুঁজছে: এক্সফেস 4-টার্মিনাল কীভাবে খোলা রাখা যায়? । তিনি জানতে চান যে কোনও ট্যাবে কীভাবে অ্যাক্সেস করবেন যেখানে "-H" সুইচটি ব্যবহৃত হয়েছে এবং এটিকে একটি সাধারণ টার্মিনাল উইন্ডো হিসাবে ব্যবহার করা চালিয়ে যেতে চান। ওপি, আপনি কি আমি সঠিক কিনা তা নিশ্চিত করতে পারেন?
slm

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

উত্তর:


21

-H/-holdবিকল্প একবার অ্যাপ্লিকেশনের মধ্যে এটা (শেল বা অন্যান্য) শুরু টার্মিনাল এমুলেটর উইণ্ডো খোলা রাখুন বেরিয়ে গেছে করেছে। সেই অবস্থায় আর কিছুই হতে পারে না।

আপনি যদি xfce4- টার্মিনাল টার্মিনাল এমুলেটরটিতে একটি ইন্টারেক্টিভ শেলের কাজ হিসাবে একটি কমান্ড শুরু করতে চান এবং শেলটি চালিয়ে যেতে চান এবং অ্যাপ্লিকেশনটি সরে যাওয়ার পরে এটি ইন্টারেক্টিভভাবে ব্যবহার bashকরতে পারেন , এর সাথে , আপনি $PROMPT_COMMANDপরিবেশগত পরিবর্তনশীলটি ব্যবহার করতে পারেন , xfce-terminalশুরু করতে একটি ইন্টারেক্টিভ শেল যা প্রথম প্রম্পটের ঠিক আগে প্রদত্ত কমান্ডটি শুরু করে।

xfce4-terminal \
  -T eclipse \
  --working-directory=/home/stefan/oximity \
  -e 'env PROMPT_COMMAND="unset PROMPT_COMMAND; /opt/eclipse/eclipse" bash' \
  \
  --tab -T arandr \
  --working-directory=/home/stefan/oximity \
  -e 'env PROMPT_COMMAND="unset PROMPT_COMMAND; arandr /home/stefan/.screenlayout/oximity.sh" bash' \
  \
  --tab -T bash \
  --working-directory=/home/stefan/oximity \
  ...

এইভাবে, কমান্ডগুলি সেই শেলের কাজ , যার অর্থ আপনি সেগুলি সাসপেন্ড করতে পারেন Ctrl-Zএবং পরে এগুলি আবার চালু করতে fg/bgপারেন যেন আপনি সেই ইন্টারেক্টিভ শেলের প্রম্পটে তাদের প্রবেশ করিয়েছেন।

এটি ধরে নেয় যদিও আপনি নিজেরটি সেট করেন $PROMPT_COMMANDনা ~/.bashrc। এছাড়াও খেয়াল করুন যে কমান্ডের প্রস্থান স্থিতি পাওয়া যাবে না $?

এটিকে আরও বেশি তৈরি করার জন্য শেল প্রম্পটে কমান্ডটি প্রবেশ করানো হয়েছিল এমনকি আপনি এটি ইতিহাস তালিকায় যুক্ত করতে পারেন। ভালো লেগেছে:

xfce4-terminal -T /etc/motd -e 'env PROMPT_COMMAND="
  unset PROMPT_COMMAND
  history -s vi\ /etc/motd
  vi /etc/motd" bash'

এইভাবে, একবার প্রস্থান করার পরে আপনি একই কমান্ডটি পুনরায় স্মরণ করার viজন্য Upকী টিপতে পারেন vi

এটি লেখার একটি সহজ উপায়:

PROMPT_COMMAND='unset PROMPT_COMMAND; history -s "$CMD"; eval "$CMD"' \
  xfce4-terminal --disable-server \
          -T /etc/motd -e 'env CMD="vi /etc/motd" bash' \
    --tab -T       top -e 'env CMD=top bash'

দ্য:

xfce4-terminal -e 'sh -c "cmd; exec bash"'

অন্যান্য উত্তর হিসাবে প্রদত্ত সমাধান কাজ করে তবে কিছু ত্রুটি রয়েছে:

  1. বাটনটি চাপলে Ctrl-Cযখন cmdচলছে, যে বাইরের নিহত shসেখানে যেহেতু উভয়ের জন্য শুধুমাত্র একটি প্রক্রিয়া গ্রুপ shএবং cmd
  2. আপনি Ctrl-Zস্থগিত করতে ব্যবহার করতে পারবেন নাcmd
  3. $PROMPT_COMMANDপদ্ধতির মতো , কমান্ডের প্রস্থান স্থিতি পাওয়া যাবে না $?

আপনি উপরের দিকে প্রায় 1 টি কাজ করে কাজ করতে পারেন :

xfce4-terminal -e 'sh -c "trap : INT; cmd; exec bash"'

বা:

xfce4-terminal -e 'sh -ic "cmd; exec bash"'

এই একের পরে, আপনি প্রক্রিয়াটি স্থগিত করতে সক্ষম হবেন Ctrl-Zতবে আপনি fg/bgএটি ব্যবহার করতে সক্ষম হবেন না । আপনাকে পটভূমিতে এটা অব্যাহত রাখার জন্য যদিও একটি করে সক্ষম হবেন kill -s CONTউপর PID এর cmd


কি দারুন. এটি বেশ জটিল, তবে এটি কাজ করে বলে মনে হচ্ছে। :) কেন জানি পুরষ্কার নিখোঁজ। দুর্ভাগ্যক্রমে আমি ইঙ্গিতগুলি পরীক্ষা করার আগে সময় পাইনি।
ব্যবহারকারী অজানা

আমি সত্যিই অনুগ্রহ ব্যবস্থাটির সমস্ত নিয়ম বুঝতে পারি না। যেহেতু আমি মনে করি আপনি অনুগ্রহের যোগ্য, তাই আমি একটি নতুন অনুগ্রহ পুনরায় চালু করব।
ব্যবহারকারী অজানা

হ্যাঁ অনুদানের মেয়াদ after দিন পরে শেষ হয় এবং এগুলি প্রদানের জন্য আপনার 24 ঘন্টা পরে থাকে। যদি আপনি তাদের সচেতন না হন তবে ব্যবহারকারীদের সর্বোচ্চ সংখ্যক (২ বা ততোধিক) যেকোন কিছুতে তাদের নিয়োগ দেওয়া হবে। : এখানে বেশি আপনি কি কখনো চেয়েছিলেন 8-) অনুগ্রহকে মিথ্যা সম্পর্কে জানতে এর meta.stackexchange.com/questions/16065/...
SLM

1
bashস্ক্রিপ্টগুলিতে @ অ্যাড্রিয়েন লোপেজের কোনও ইতিহাস নেই কারণ আপনি নিজের স্ক্রিপ্টে ব্যবহার না করেই কোনও লাইন সম্পাদনা বা ব্যবহারকারীর ইন্টারঅ্যাকশন নেই read -e(এবং আপনি দেখতে পাবেন যে এটি history -s textসেখানে দেখা ইতিহাসের প্রধান কাজ করে read -e)। এখানে, আমরা history -sকোনও স্ক্রিপ্ট থেকে চলছি না, তবে $PROMPT_COMMANDএকটি ইন্টারেক্টিভ শেলের হুক থেকে ।
স্টাফেন শেজেলাস

1
@ স্টাফেনচেজেলাস আশ্চর্যজনক। আপনার অন্যান্য মূল্যবান উত্তর অনুসরণ করে , এখানে অবশ্যই যুক্ত করতে হবে যে xfce4-terminalকমপক্ষে 0.6.3 সংস্করণটি এখন একটি অতিরিক্ত পরামিতি চায় --disable-server- পরিবেশের মধ্য দিয়ে যেতে। রেফ: রেফারেন্স.ডিবিয়ান.আর.ডেবিয়ান- ইউজার / ২০১ / 10 / ১০ / msg00045.html
ョ ー ジ

5

যতদূর আমি তোমার প্রশ্ন বুঝতে, আপনি একটি টার্মিনাল মধ্যে কিছু প্রসেস চালাতে পারছে না করতে চান Ctrl+ Cতাদের এবং যে পরে, শেল সঙ্গে খোলা জানালা রাখা।

আমি যদি সঠিক হয়ে থাকি তবে এটি এই জাতীয় আদেশ দিয়ে সম্পন্ন হতে পারে:

xfce4-terminal -e "bash -c 'COMMAND; exec bash'"

এটি একাধিক ট্যাব নিয়ে কাজ করে?
ব্যবহারকারী অজানা

নিখুঁত অন্যান্য কমান্ডের আগে --tab যুক্ত করুন। উদাহরণস্বরূপ, আপনি যদি "ls / etc" এবং "ls / dev" চালাতে চান, আপনি ইস্যু করতে পারবেন: xfce4- টার্মিনাল -e "বাশ-সি 'ls / ইত্যাদি; এক্সিকিউশন বাশ'" --tab -e "বাশ - c 'ls / dev; exec bash' "আপনি যদি জিনোম টার্মিনাল ব্যবহার করেন তবে আপনাকে প্রথম কমান্ডের আগে --tabও লিখতে হবে।
রাফায়েল কাভালকান্তি

এটি কিছুটা সহায়ক, যদিও আমি যতটা আশা করেছিলাম ততটা নয়। আমি যখন `xfce4- টার্মিনাল - ওয়ার্কিং-ডিরেক্টরি = / হোম / স্টিফান / অক্সিমিটি / মেড-সহ দিয়ে গ্রেড শুরু করি" বাশ-সি 'গ্রেডল বিস্ফোরিত ওয়ার সায়েন্স; বাশ' "` একটি ট্যাব খোলা হয়েছে, নাম দেওয়া হয়েছে তবে এটি "গ্রেডল দেখায়: কমান্ড পাওয়া যায় না "কমান্ড প্রবেশ করার সময় সেখানে কাজ করে। গিট, মাইএসকিএল এবং স্কেলা সেভাবে দুর্দান্তভাবে কাজ করে তবে jboss এর জন্য, Ctrl-C পুরো jboss- ট্যাবটি সমাপ্ত করে। আমি কেবল সেখান থেকে শুরু করে শেলটি প্রস্তুত করতে পারতাম - সম্ভবত ইনপুট করার আদেশটি প্রতিধ্বনি করছিল। আমি এখানে আসলে পার্থক্য তৈরি করে তা বুঝতে পারি না।
ব্যবহারকারীর অজানা

1

xfce4-terminalট্যাবগুলিতে একাধিক অ্যাপ্লিকেশন

প্রতিটি এক্সএফসি ট্যাবে একটি ইন্টারেক্টিভ শেল যুক্ত করা হচ্ছে

আপনি যখন এই Ctrl+Cট্যাবটি শেল যোগ করতে এই হ্যাকটি ব্যবহার করতে পারেন যদি / আপনি কোনও ট্যাব ব্যবহার করেন:

$ xfce4-terminal -H \
     --tab -T bash -e "bash -c 'top;bash'" \
     --tab -T git  -e "bash -c 'top;bash'"

এটি আপনাকে নিম্নলিখিতগুলি দেবে:

   এক্সফেস ডাব্লু / ট্যাব এর এসএস

   এক্সফেস ডাব্লু / টপ সিটিআরএল + সি এস


0

-Hটার্মিনাল ছাড়া শেলটি প্রস্থান করার সময় বন্ধ হয়ে যাবে। এই পতাকাটি দিয়ে টার্মিনালটি চলতে থাকবে তবে শেল প্রক্রিয়াটি বন্ধ রয়েছে এবং পুনরুদ্ধার করা যাবে না।

আমি মনে করি আপনি সংরক্ষণাগারটি দেওয়ার চেষ্টা করছেন যে আপনি কেবল আপনার টার্মিনালটি শুরু করেছেন এবং আপনার বিকাশের পরিবেশটি শুরু হয়?

আপনি একটি শেল স্ক্রিপ্ট তৈরি করতে পারেন এবং এতে আপনার সমস্ত কমান্ড রেখে দিতে পারেন। স্ক্রিপ্টের শেষে আপনি কেবল নিজের শেলটি শুরু করুন:

#!/bin/sh

gradle &
git &
... &
.... &
jboss &

$SHELL

# some cleanup commands if needed

তারপরে এই স্ক্রিপ্টটি কল করুন xfce4-terminal -e /the/script$SHELLঅভিভাবক প্রক্রিয়া থেকে প্রস্থান করার সময় (আপনার স্ক্রিপ্ট) শেষ হয়ে গেলে এবং পটভূমি কাজগুলি প্রস্থান সংকেত গ্রহণ করবে এবং প্রস্থানও করবে।

আপনি যদি এগুলি বাঁচিয়ে রাখতে চান তবে nohup jboss &আপনার স্ক্রিপ্টে যেমন ব্যবহার করুন


এটি কাজ করে না কারণ গ্রেড এবং জবস স্থায়ীভাবে আউটপুট উত্পাদন করছে। আপনি তাদের আউটপুট মিশ্রিত করতে পছন্দ করেন না। ডাটাবেস- এবং স্কালা-টার্মিনাল ইন্টারেক্টিভ হয়। এগুলি পটভূমিতে রাখার কোনও বুদ্ধি নেই। বিভিন্ন ট্যাবগুলিতে অন্যান্য কমান্ডগুলি খোলার ধারণাটি হ'ল, ইতিহাস কেবলমাত্র একটি বিষয়তে কয়েকটি পৃথক কমান্ড দ্বারা পূর্ণ এবং তাই দ্রুত ব্রাউজযোগ্য।
ব্যবহারকারী অজানা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.