আমি সিপি থেকে ত্রুটি বার্তাগুলি কীভাবে দমন করব?


13

আমি বর্তমানে লিনাক্সে, বিশেষত কমান্ডে ত্রুটি কমান্ড দমন করার উপায়গুলি খুঁজছি cp

আমি করি:

root@ubuntu:~$ cp /srv/ftp/201*/wha*/*.jj ~/.
cp: cannot stat `/srv/ftp/201*/wha*/*.jj': No such file or directory

আমি কীভাবে স্ক্রিনে মুদ্রিত হওয়া ত্রুটি বার্তাটি দমন করব ? অর্থাৎ, আমি আমার মনিটরে এই ত্রুটি বার্তাটি দেখতে চাই না।


1
শুধু এফওয়াইআই, ত্রুটিগুলি পরীক্ষা করার সর্বোত্তম উপায় হ'ল প্রস্থান কোড। বংশীধ্বনিতুল্য stderr / dev / null মান এবং ত্রুটি কোনো দৃশ্যমান ইঙ্গিত পরিত্রাণ পেতে হবে, কিন্তু একটি অ শূন্য রিটার্ন অবস্থা চেক আপনি কি জানেন যদি একটি ত্রুটি বা ছিল না দেওয়া হবে, অন্তত যে কিভাবে এটা হয় অনুমিত হতে ...
নাথান ম্যাককয়

আপনার প্রশ্নটি পরিষ্কার নয়। আপনি কি সিপি থেকে সমস্ত ত্রুটি বার্তা আড়াল করতে চান? অথবা যদি ওয়াইল্ডকার্ড কোনও ফাইলের সাথে মেলে না তবে আপনি কোনও ত্রুটি বার্তা পেতে চান? নাকি অন্য কিছু মানদণ্ড?
গিলস 23'15

উত্তর:


38

ত্রুটি আউটপুটটি দমন করতে bash, 2>/dev/nullআপনার কমান্ডের শেষে যুক্ত করুন । এই ফাইল হ্যান্ডেল 2 (এসটিডিআরআর) থেকে পুনর্নির্দেশ করে /dev/null। অন্যান্য শেলগুলিতে অনুরূপ নির্মাণ রয়েছে, যদিও নির্দিষ্ট নির্মাণগুলি কিছুটা পৃথক হতে পারে।


ভাবছি কেন আমি কখনই সেই এক্সএক্সটি ভাবিনি
আবদুল

8

ত্রুটি বার্তাটি (এসটিডিআরআর) এতে পুনর্নির্দেশ করুন /dev/null:

root@ubuntu:~$ cp /srv/ftp/201*/wha*/*.jj ~/. 2>/dev/null

উদাহরণ:

$ cp /srv/ftp/201*/wha*/*.jj ~/.  ##Error message gets printed
cp: cannot stat ‘/srv/ftp/201*/wha*/*.jj’: No such file or directory

$ cp /srv/ftp/201*/wha*/*.jj ~/. 2>/dev/null  ##No error message gets printed

5

আপনার প্রশ্নটি পরিষ্কার নয়। সবচেয়ে বুদ্ধিমান কাজটি cpহ'ল যখন ওয়াইল্ডকার্ড কোনও ফাইলের সাথে মেলে না, cpত্রুটি বার্তাটি চালিয়ে লুকিয়ে রাখার চেয়ে at

এটি করার জন্য, শেলটি যদি ব্যাশ হয় তবে nullglobবিকল্পটি সেট করুন যাতে ওয়াইল্ডকার্ডের প্যাটার্নটি কোনও ফাইলের সাথে মেলে না nothing তারপরে প্যাটার্নটি কোনও কিছুর দিকে প্রসারিত হয়েছে কিনা তা দেখুন cpএবং সে ক্ষেত্রে কল করবেন না ।

#!/bin/bash
shopt -s nullglob
files=(/srv/ftp/201*/wha*/*.jj)
if [[ ${#files[@]} -ne 0 ]]; then
  cp "${files[@]}" ~
fi

সরল sh- তে, অস্তিত্বহীন ফাইলের দিকে ইঙ্গিত করে গ্লোবটি অপরিবর্তিত ছিল কিনা তা পরীক্ষা করুন।

set -- /srv/ftp/201*/wha*/*.jj
if ! [ -e "$1" ] && ! [ -L "$1" ]; then
  cp "$@" ~
fi

আপনি যদি শেল স্ক্রিপ্টের মধ্যে থেকে কোনও ত্রুটি নিক্ষেপ করতে সিপি না চান তবে এই কৌশলটি প্রয়োজনীয় - বা কমপক্ষে, আমি কোনও বিশেষজ্ঞ নই, তবে এটিই কাজ করে বলে মনে হচ্ছে।
নেসবার্ড

0

এটি ~ / .bashrc এ যুক্ত করুন:

alias cp='cp 2> /dev/null'

তারপর:

source ~/.bashrc

2
এটি স্থায়ীভাবে করার জন্য সুপারিশ করা আমার কাছে নির্বোধ বলে মনে হয়। ত্রুটির আউটপুটটি যখন অযাচিত stderrহয় /dev/nullতখন কেবল পাইপ করা এটি আরও ভাল ধারণা বলে মনে হয়। বা ভিন্ন নাম ব্যবহার করে cp
হালোসঘস্ট

আমি আপনার সাথে একমত কিন্তু এটি তার সমাধানের জন্য যারা তার মনিটরে কোনও ত্রুটি বার্তা দেখতে চায় না cp
এম 122

-1

আপনি ব্যবহার করতে পারেন পারেন:
1 বিকল্প: 2>/dev/null
2 বিকল্প: 2>&1
আপনি আপনার কমান্ডের শেষে এটি ব্যবহার করতে পারেন তা ত্রুটি বার্তাগুলিকে দমন করবে:

উদাহরণ এখানে-

$cp nofile.txt b.txt > log.txt 2>/dev/null

এখানে আপনি ত্রুটি বার্তা সম্পর্কে কোনও তথ্য উদ্ধার করতে পারবেন না। Ex2:

$cp nofile.txt b.txt > log.txt 2>&1

এখানে আপনি নীচের লগ ফাইল থেকে কিছু তথ্য উদ্ধার করতে পারেন:

$ cat log.txt
cp: cannot stat `nofile.txt': No such file or directory
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.