মূল সংস্করণ
এটি করার একটি উপায় হ'ল আপনার বর্তমান শেল সেশনের মূল প্রক্রিয়া এবং সেখান থেকে টার্মিনালের নাম।
বর্তমান শেল প্রক্রিয়াটির পিতামাতাকে পান। ব্যাশ ভেরিয়েবলটি $$
আপনার বর্তমান শেলের পিআইডি, সুতরাং আমরা এটিকে ps
( -p $$
) এর কাছে একটি জিজ্ঞাসা হিসাবে দিতে পারি এবং এটি টি টি প্যারেন্ট প্রসেসের পিআইডি প্রিন্ট করতে বলতে পারি ( -o ppid=
, পিছনে =
কলামের শিরোনামগুলি এড়ানোর জন্য):
$ ps -p $$ -o ppid=
544
সুতরাং, আমার শেলের পিতামাতার পিআইডি হ'ল 544
।
সেই পিআইডির সাথে সম্পর্কিত প্রক্রিয়াটি পান এবং এর কমান্ড লাইনটি মুদ্রণ করুন
$ ps -p 544 o args=
/usr/bin/python /usr/bin/terminator
উপরে আউটপুট কি টার্মিনাল এমুলেটর আপনি ব্যবহার করছেন আমি ব্যবহার করছি উপর নির্ভর করবে terminator
।
একক কমান্ডে সবকিছু একত্রিত করুন
ps -p $(ps -p $$ -o ppid=) o args=
সংস্করণ পেতে এটি ব্যবহার করুন
$(ps -p $(ps -p $$ -o ppid=) o args=) --version
terminator 0.97
আপনার সাথে একটি সামান্য ফাংশন যুক্ত করুন ~/.bashrc
যা আপনি ব্যবহার করছেন টার্মিনাল এমুলেটরটির নাম এবং সংস্করণ দেয় (এটি সর্বাধিক সাধারণ টার্মিনাল এমুলেটরগুলির জন্য কাজ করে):
which_term(){
term=$(ps -p $(ps -p $$ -o ppid=) -o args=);
found=0;
case $term in
*gnome-terminal*)
found=1
echo "gnome-terminal " $(dpkg -l gnome-terminal | awk '/^ii/{print $3}')
;;
*lxterminal*)
found=1
echo "lxterminal " $(dpkg -l lxterminal | awk '/^ii/{print $3}')
;;
rxvt*)
found=1
echo "rxvt " $(dpkg -l rxvt | awk '/^ii/{print $3}')
;;
## Try and guess for any others
*)
for v in '-version' '--version' '-V' '-v'
do
$term "$v" &>/dev/null && eval $term $v && found=1 && break
done
;;
esac
## If none of the version arguments worked, try and get the
## package version
[ $found -eq 0 ] && echo "$term " $(dpkg -l $term | awk '/^ii/{print $3}')
}
আপনি এখন টার্মিনালের নাম পেতে পারেন এবং আপনার পছন্দমতো বিকল্প পাসও করতে পারেন (যেমন --version
।
বিভিন্ন টার্মিনাল ব্যবহার করে কিছু উদাহরণ:
xterm
$ which_term
XTerm(297)
terminator
$ which_term
terminator 0.97
rxvt
, এই এক ব্যক্তিরা কেউ -V
, -version
বা --version
পতাকার তাই কোনও সংস্করণ তথ্য ছাপা হয়।
$ which_term
rxvt 1:2.7.10-5
gnome-terminal
।
$ which_term
gnome-terminal 3.10.1-1
konsole
$ which_term
Qt: 4.8.6
KDE Development Platform: 4.11.3
Konsole: 2.11.3
lxterminal
$ which_term
lxterminal 0.1.11-4
xfce4-terminal
$ which_term
xfce4-terminal 0.6.2 (Xfce 4.10)
Copyright (c) 2003-2012
The Xfce development team. All rights reserved.
Written by Benedikt Meurer <benny@xfce.org>
and Nick Schermer <nick@xfce.org>.
Please report bugs to <http://bugzilla.xfce.org/>.
নতুন এবং উন্নত
উপরোক্ত পদ্ধতির যদিও এটি বিশ্বাসযোগ্য নয়। যখন আপনি su
অন্য ব্যবহারকারীর সাথে পরিচয় করানোর পরে আপনার শেলটি চালাবেন বা যখন আপনার টার্মিনালটি কোনও কিছুর সাথে যুক্ত হয় এবং অন্যান্য বিভিন্ন ক্ষেত্রে এটি চেপে যায় will যেহেতু আমরা স্পষ্টত এখানে এক্স প্রোগ্রামের সাথে কাজ করছি, এর থেকে আরও ভাল উপায় এর পরিবর্তে তথ্য পাওয়ার জন্য xdotool
(এর সাথে ইনস্টলযোগ্য sudo apt-get install xdotool
) কিছু ব্যবহার করা যেতে পারে :
perl -lpe 's/\0/ /g' /proc/$(xdotool getwindowpid $(xdotool getactivewindow))/cmdline
উপরেরগুলি বর্তমানে সক্রিয় উইন্ডোটি চালু করতে ব্যবহৃত কমান্ড লাইনটি মুদ্রণ করবে। যেহেতু আপনার টার্মিনালটি সম্ভবতঃ সক্রিয় থাকবে, এটি হ'ল আদেশটি। এর অর্থ হ'ল বেশিরভাগ টার্মিনাল এমুলেটরগুলির জন্য, আপনি নিরাপদে ধরে নিতে পারেন যে 1 ম ক্ষেত্রটি ফিরে এসেছে টার্মিনালের নাম:
$ which_term
lxterminal
এর অর্থ সংস্করণ পাওয়া তুচ্ছ v উদাহরণ স্বরূপ
$ dpkg -l $(which_term) | awk '/^ii/{print $3}'
0.1.11-4
জন্য তাই না gnome-terminal
:
$ which_term
/usr/lib/gnome-terminal/gnome-terminal-server
বা terminator
:
$ which_term
/usr/bin/python /usr/bin/terminator
সুতরাং, আমরা এটিকে আরও জটিল করতে পারি (এখানে কিছু বাশিজম রয়েছে, এটি পোর্টেবল নয়):
which_term(){
term=$(perl -lpe 's/\0/ /g' \
/proc/$(xdotool getwindowpid $(xdotool getactivewindow))/cmdline)
## Enable extended globbing patterns
shopt -s extglob
case $term in
## If this terminal is a python or perl program,
## then the emulator's name is likely the second
## part of it
*/python*|*/perl* )
term=$(basename "$(readlink -f $(echo "$term" | cut -d ' ' -f 2))")
version=$(dpkg -l "$term" | awk '/^ii/{print $3}')
;;
## The special case of gnome-terminal
*gnome-terminal-server* )
term="gnome-terminal"
;;
## For other cases, just take the 1st
## field of $term
* )
term=${term/% */}
;;
esac
version=$(dpkg -l "$term" | awk '/^ii/{print $3}')
echo "$term $version"
}
এটি আমি পরীক্ষিত সমস্ত ক্ষেত্রে কাজ করে।