আপনি GNU screen
এর উল্লম্ব বিভাজন বৈশিষ্ট্যটি ব্যবহার করতে পারেন :
#! /bin/bash -
tmpdir=$(mktemp -d) || exit
trap 'rm -rf "$tmpdir"' EXIT INT TERM HUP
FIFO=$tmpdir/FIFO
mkfifo "$FIFO" || exit
conf=$tmpdir/conf
cat > "$conf" << 'EOF' || exit
split -v
focus
screen -t stderr sh -c 'tty > "$FIFO"; read done < "$FIFO"'
focus
screen -t stdout sh -c 'read tty < "$FIFO"; eval "$CMD" 2> "$tty"; echo "[Command exited with status $?, press enter to exit]"; read prompt; echo done > "$FIFO"'
EOF
CMD="$*"
export FIFO CMD
screen -mc "$conf"
উদাহরণস্বরূপ ব্যবহার করতে:
that-script 'ls / /not-here'
ধারণাটি হ'ল এটি একটি অস্থায়ী কনফারেন্স ফাইলের সাথে পর্দা চালায় যা একটি উল্লম্ব বিভাজন বিন্যাসে দুটি স্ক্রিন উইন্ডো শুরু করে। প্রথমটিতে, আমরা স্ট্যান্ডার দ্বিতীয়টির সাথে সংযুক্ত হয়ে আপনার কমান্ডটি চালাচ্ছি।
আমরা দ্বিতীয় উইন্ডোটির টিটি ডিভাইসটি প্রথমটির সাথে যোগাযোগ করার জন্য একটি নামক পাইপ ব্যবহার করি এবং কমান্ডটি সম্পন্ন হওয়ার পরে প্রথমটির জন্য দ্বিতীয়টি জানাতে।
পাইপ-ভিত্তিক পদ্ধতির তুলনায় অন্য সুবিধাটি হ'ল কমান্ডের স্ট্ডআউট এবং স্ট্ডার এখনও টিটিআই ডিভাইসে সংযুক্ত রয়েছে, সুতরাং এটি বাফারিংকে প্রভাবিত করে না। উভয় প্যানগুলি স্বতন্ত্রভাবে এবং নীচে স্ক্রোল করা যায় ( screen
এর অনুলিপি মোড ব্যবহার করে )।
আপনি যদি bash
সেই স্ক্রিপ্টটির সাথে ইন্টারেক্টিভ মত শেল চালান , আপনি লক্ষ্য করবেন যে প্রম্পটটি দ্বিতীয় উইন্ডোতে প্রদর্শিত হবে, যখন শেলটি প্রথম উইন্ডোতে আপনি কী টাইপ করবেন সেগুলি পড়বে যখন সেই শেলগুলি স্ট্যাডারে তাদের প্রম্পট আউটপুট দেয়।
ক্ষেত্রে bash
, প্রতিধ্বনি আপনি টাইপ কি যে যেমন দ্বিতীয় উইন্ডোতে প্রদর্শিত হবে প্রতিধ্বনি শেল (ক্ষেত্রে readline দ্বারা আউটপুট bash
হিসাবে ভাল দ্বারা stderr তে) খুলুন। কিছু অন্যান্য শাঁস মতো ksh93
, এটা প্রথম উইন্ডোতে (দেখাবে প্রতিধ্বনি , টার্মিনাল ডিভাইস ড্রাইভার দ্বারা আউটপুট, শেল নয়) যদি না আপনি শেল করা emacs
বা vi
সঙ্গে মোড set -o emacs
অথবা set -o vi
।