আমি কীভাবে পাঠাতে অন্যান্য কমান্ড দ্বারা ছায়াযুক্ত কমান্ডগুলি তালিকা করব?


1

আমি কীভাবে আমার পথে সমস্ত কমান্ডের তালিকা করব যা অন্যান্য কমান্ড দ্বারা ছায়াযুক্ত?

যেমন, আমি যদি আছে /bin/foo, /bin/bar, /usr/local/barএবং /usr/bin/foo, আমি ভালো কিছু দেখতে চাই

foo in /bin shadows /usr/bin
bar in /bin shadows /usr/local/bin

আমি উপর ভিত্তি করে একসঙ্গে কিছু নিক্ষেপ করতে পারেন lsএবং comm, কিন্তু আমি অনেক বক্স, বিশেষ করে কিছু আউট পছন্দ করেন bashভিত্তিক (এটা এছাড়াও চমৎকার যদি alias লেখা এবং ফাংশন খুব বেশি অনুসন্ধান করা হয়েছে হতে পারে, কিন্তু খুব যে গুরুত্বপূর্ণ নয়)।


আইডির সাহায্যে আপনি এলিয়াস বা ফাংশন শেডো কমান্ড দেখতে চান কিনা তা নির্দিষ্ট করে।
ধনী হোমোলকা

উত্তর:


1

একটি সূচনা পয়েন্ট হিসাবে বা আপনি যে আদেশগুলি যাচাই করতে চান তা জানার পরে উত্তর পেতে।

whichকমান্ড শেল কমান্ড পূর্ণ পথ দেখাতে ব্যবহার করা হয়। -aবা -allসুইচটি কেবল প্রথম নয়, সমস্ত মিলের তালিকা তৈরি করবে।

which --all foo

আপনার পাথের সমস্ত কমান্ডের জন্য পার্লমঙ্কস থেকে একটি ছোট্ট ইউটিলিটি রয়েছে: পাথফাইন্ডার - আপনার রাস্তায় নকল (ছায়াযুক্ত) প্রোগ্রামগুলি সন্ধান করুন

#!/usr/bin/perl -w
use strict;

my @path = split /:/, $ENV{PATH};
my %path_inodes;
my @clean_path;

for (@path) {
  next unless m#^/#;
  my ($dev,$ino) = stat;
  next unless defined $dev;
  my $key = "$dev $ino";
  if (exists $path_inodes{$key}) {
    print "warning: $_ is linked to $path_inodes{$key}\n";
    next;
  }
  $path_inodes{$key} = $_;
  push @clean_path, $_;
}

my %progs;

## print "clean path is @clean_path\n";

for my $dir (@clean_path) {
  use DirHandle;
  my @files =
    sort grep !/^\.\.?$/,
    DirHandle->new($dir)->read;
  ## print "$dir: @files\n";
  for my $file (@files) {
    if (exists $progs{$file}) {
      print "$file in $dir is shadowed by $progs{$file}\n";
      next;
    }
    $progs{$file} = $dir;
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.