কীভাবে কোনও ফাইলের সাথে আউটপুট পুনর্নির্দেশ করবেন?


12

আমার লক্ষ্য হ'ল স্ক্রিপ্ট থেকে সমস্ত আউটপুট কোনও ডিরেক্টরিতে লগইন করা যা স্ক্রিপ্টটি তৈরি করতে চলেছে।

উদাহরণস্বরূপ, আমার আছে:

~/.abc.sh:

#! /bin/bash
rails new myapp

আমি যখন দৌড় ...

cd ~/code
. ~/.abc.sh

... এটি ডিরেক্টরিতে একটি নতুন রেল অ্যাপ তৈরি করবে ~/code/myapp

যখন রেলগুলি একটি অ্যাপ তৈরি করছে তখন এটি পুরোপুরি পাঠ্যকে আউটপুট করে দেয় যা আমি ক্যাপচার করতে এবং একই ডিরেক্টরিতে railsনতুন কমান্ডটি তৈরি করা একই ডিরেক্টরিতে একটি লগ ফাইলে সংরক্ষণ করতে চাই । আমি টার্মিনালে সেই পাঠ্যটিও প্রদর্শন করতে চাই।

কিভাবে আমি এই কাজ সম্পর্কে যান?

উত্তর:


23

আপনি teeএটির জন্য কমান্ডটি ব্যবহার করতে পারেন :

command | tee /path/to/logfile

শেল না লিখে সমপরিমাণটি হ'ল:

command > /path/to/logfile

আপনি যদি >>শেলটিতে আউটপুট ( ) যুক্ত করতে এবং প্রদর্শন করতে চান তবে -aবিকল্পটি ব্যবহার করুন :

command | tee -a /path/to/logfile

দয়া করে নোট করুন যে পাইপটি কেবল স্টডআউটকে ধরে ফেলবে, স্টাডারের ত্রুটিগুলি পাইপ দিয়ে প্রসেস হয় না tee। আপনি যদি ত্রুটিগুলি লগ করতে চান (স্ট্ডার থেকে), ব্যবহার করুন:

command 2>&1 | tee /path/to/logfile

এর অর্থ: commandস্টার্ডার স্ট্রিম (2) স্টাডআউট (1) এ চালান এবং পুনর্নির্দেশ করুন। এটি teeঅ্যাপ্লিকেশন সহ পাইপে পাস হবে ।


মানে ~/.abc.sh | tee <file>? যদি তাই হয়, তবে সমস্যাটি আমি জানি না যে আমি কখন ডায়রিটি কল করব তখন স্ক্রিপ্টটি অ্যাপটি তৈরি করতে চলেছে, তবে আমি কীভাবে fileযুক্তিতে কী করব তা আমি কীভাবে জানব ? (দুর্দান্ত উদাহরণগুলির জন্য ধন্যবাদ)
জাব্বা

@ জাবা: একটি অস্থায়ী ফাইল তৈরি করে এরপরে সরানোর কী আছে?
লেকেনস্টেইন

ঠিক আছে, এটি কাজ করা উচিত :)। সে সম্পর্কে আমি কীভাবে একটি র‌্যান্ডম নাম দিয়ে একটি টেম্প ফাইল তৈরি করব যা আমি তারপরে আউটপুট এবং তারপরে একটি পছন্দসই স্থানে অনুলিপি করতে পারি? "টেম্প ফাইলের নাম" পেতে কিছু বিল্ট-ইন কমান্ড আছে?
জাব্বা

@ জাবা: এটির জন্য আদেশ mktemp। ম্যানুয়াল পৃষ্ঠাটি দেখুন man mktemp
লেকেনস্টেইন

।, কবজির মতো কাজ করুন
সান জুনওয়েন

0

scriptএকটি ইন্টারেক্টিভ সেশন শুরু করবে এবং সমস্ত আউটপুট (stdout / stderr ইত্যাদি) কোনও ফাইলে -cলগ করবে , বা ( পরামিতি সহ) একটি কমান্ড চালাবে এবং এর আউটপুট লগ করবে।

script -c ~/.abc.sh -f abc.log

দ্রষ্টব্য: একটি ইন্টারেক্টিভ সেশনে, আপনি সাধারণত যেমনটি (যেমন exitবা Ctrl-D) করতে চান সেশনটি বের করে দিয়ে আপনি রেকর্ডিং বন্ধ করতে পারেন ।

ভিডিও প্লেব্যাক সহ সেশন রেকর্ডিংয়ের জন্য, আপনি এসিইনিমাও চেষ্টা করতে পারেন ।

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