বর্তমান ডিরেক্টরি জন্য মাউন্ট তথ্য


20

df .বর্তমান ডিরেক্টরিটিতে থাকা মাউন্টটির কিছু তথ্য পেতে আমি করতে পারি এবং আমি যে সমস্ত তথ্য চাই তা থেকে mountপেতে পারি , তবে অনেক তথ্যতে (অন্যান্য মাউন্টগুলির তথ্য) পেতে পারি। আমি এটি গ্রেপ করতে পারি, তবে আরও ভাল উপায় আছে কিনা তা নিয়ে ভাবছি।

এমন কিছু কমান্ড mountinfoরয়েছে যা mountinfo .আমার চাই তথ্য দেয় (যেমন df ., তবে যে তথ্য mountদেয় তা দিয়ে ))


আমি দেবিয়ান গ্নু + লিনাক্স ব্যবহার করছি।


1
আমি বিশ্বাস করি statকমান্ডটিও ব্যবহার করা যেতে পারে। তবে, আমি নিশ্চিত নই %mযে মাউন্ট পয়েন্ট দেয় এমন বিকল্পটি আপনার সিস্টেমের সংস্করণে সমর্থিত কিনা। আমি আমার সিস্টেমে পরীক্ষা করে দেখেছি এবং মাউন্ট পয়েন্টটি ফিরে আসেনি বলে মনে হচ্ছে।
রমেশ

1
@ রমেশ, হ্যাঁ stat "--printf=%m\n" .বর্তমান ডিরেক্টরিটিতে থাকা ফাইল-সিস্টেমের মাউন্ট-পয়েন্টটি পেয়েছে Thus এভাবে আমাদের কয়েকটি উত্তর সহজ করার সুযোগ দেয়। ধন্যবাদ।
ctrl-alt-delor

উত্তর:


18

আমি মনে করি আপনি এরকম কিছু চান:

findmnt -T .

বিকল্পটি ব্যবহার করার সময়

-T, --তারেটের পথ
যদি পাথটি কোনও মাউন্টপয়েন্ট ফাইল বা ডিরেক্টরি findmntনা হয় তবে মাউন্টপয়েন্টটি পেতে বিপরীত ক্রমে পাথ উপাদানগুলি পরীক্ষা করে। এর মাধ্যমে আপনি কেবলমাত্র নির্দিষ্ট ক্ষেত্রগুলি মুদ্রণ করতে পারেন -o, --output [list]। উপলব্ধ ক্ষেত্রগুলির তালিকার জন্য
দেখুন findmnt --help


বিকল্পভাবে, আপনি চালাতে পারেন:

(until findmnt . ; do cd .. ; done)

আপনি যে সমস্যাটি চালাচ্ছেন তা হ'ল সমস্ত পাথ কোনও না কোনও কিছু বা অন্যের সাথে সম্পর্কিত, তাই আপনাকে কেবল গাছটি হাঁটতে হবে। প্রত্যেকবার.

findmntইউজ-লিনাক্স প্যাকেজের সদস্য এবং এখন কয়েক বছর ধরে রয়েছে। এখনই আপনার ডিস্ট্রো নির্বিশেষে, আপনার যদি সরঞ্জামও থাকে তবে এটি ইতিমধ্যে আপনার লিনাক্স মেশিনে ইনস্টল করা উচিত mount

man mount | grep findmnt -B1 -m1
For  more robust and customizable output use
findmnt(8),  especially  in  your   scripts.

findmntকোনও মাউন্ট-পয়েন্ট আর্গুমেন্ট ছাড়াই সমস্ত মাউন্টগুলির তথ্য মুদ্রণ করবে এবং কেবল এটির সাথে তার যুক্তির জন্য। -Dহয় অনুকরণdf বিকল্প। -Dএর আউটপুট ছাড়া mount's এর অনুরূপ - তবে আরও কনফিগারযোগ্য। চেষ্টা করুন findmnt --helpএবং নিজের জন্য দেখুন।

আমি এটি সাবসেলের সাথে আটকে রাখি যাতে বর্তমান শেলের বর্তমান ডিরেক্টরিটি পরিবর্তন হয় না।

তাই:

mkdir -p /tmp/1/2/3/4/5/6 && cd $_ 
(until findmnt . ; do cd .. ; done && findmnt -D .) && pwd

আউটপুট

TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw
SOURCE FSTYPE  SIZE   USED AVAIL USE% TARGET
tmpfs  tmpfs  11.8G 839.7M   11G   7% /tmp
/tmp/1/2/3/4/5/6

যদি আপনার কাছে -Dবিকল্প উপলব্ধ না থাকে (ইউজ-লিনাক্সের পুরানো সংস্করণগুলিতে নয়) তবে আপনার কখনই ভয় পাওয়ার দরকার নেই - এটি কোনও ক্ষেত্রেই সুবিধার পরিবর্তনের চেয়ে সামান্য কিছু। এটি প্রতিটি কলের জন্য উত্পন্ন কলাম শিরোনামগুলি লক্ষ্য করুন - আপনি প্রতিটি আবেদনের জন্য -oইউটিপুট সুইচটি অন্তর্ভুক্ত বা বাদ দিতে পারেন। আমি যেমন সরবরাহ -Dকরতে পারে তেমন আউটপুট পেতে পারি :

 findmnt /tmp -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET

আউটপুট

SOURCE FSTYPE  SIZE  USED AVAIL USE% TARGET
tmpfs  tmpfs  11.8G  1.1G 10.6G  10% /tmp

আমি এটি পছন্দ করি, কিছুটা বাদে -Dআমার কাছে সেই বিকল্প নেই। (আমি ডেবিয়ান 7, ইউজার-লিনাক্স 2.20.1-5.3 এ আছি)
ctrl-alt-delor

আমি আপনাকে কয়েক দিনের মধ্যে করব, কারও কাছে আরও নিখুঁত উত্তর আছে কিনা তা দেখার জন্য আমি কিছুটা সময় রেখে যাব। যদিও এটি নিখুঁত কাছাকাছি (যদি এটি ডিএফ এর মতো কাজ করে: লুপটির প্রয়োজন হয় না, তবে এটি নিখুঁত হবে)।
ctrl-alt-delor

@রিচার্ড - এটি একটি ভাল ধারণা - উত্তরগুলি খুব শীঘ্রই গৃহীত হয় তবে আমি এটি পছন্দ করি না। লুপ সম্পর্কিত এবং df- আমি বাজি রাখতে ইচ্ছুক এটি লুপ করে, আপনাকে এটি করার জন্য এটি বলার দরকার নেই।
মাইকজার্ভ

1
@ রমেশকে ধন্যবাদ আমরাও করতে পারিfindmnt $(stat "--printf=%m\n" .)
ctrl-alt-delor

2
আমার সংস্করণটির findmntএকটি -Tবিকল্প রয়েছে যা cd ..লুপটিকে বাইপাস করতে পারে । অন্য কারও কাজে লাগতে পারে।
নাইট্রোজেন

1

লিনাক্স / ইউনিক্স উপায়টি হ'ল ছোট ছোট ইউটিলিটিগুলির একটি সরঞ্জামবাক্স যা সংযুক্ত হওয়ার পরে, আপনাকে ফলাফল প্রদান করবে যা আপনি পরে এসেছেন।

তারা প্রতিটি ঘটনার জন্য একটি উপযোগ না ঝোঁক। পরিবর্তে আপনার কাছে অনেকগুলি ছোট ছোট দরকারী ইউটিলিটি রয়েছে যা পাইপগুলির সাথে একত্রিত হয় this এর সুবিধাটি হ'ল কোনওটি উপলব্ধ না থাকলে আপনি নিজের ইউটিলিটি বেশ সহজেই লিখতে পারবেন।

উদাহরণস্বরূপ, আপনার পরে তথ্যটি পেতে, আপনি ব্যবহার করতে পারেন:

mount | grep $(df  --output=source . | tail -1)

আপনি যদি উপরের ডিরেক্টরিটি বিভিন্ন ডিরেক্টরি দিয়ে পুনরায় ব্যবহার করতে চান তবে একটি স্ক্রিপ্ট তৈরি করুন:

#!/bin/bash
mount | grep $(df  --output=source $1 | tail -1)

এটি হিসাবে সংরক্ষণ করুন mountinfoএবং এটি কার্যকর ( chmod +x mountinfo)। তারপরে আপনি এটি ব্যবহার করতে পারেন:

mountinfo .

আপনি যদি এমন একটি সিস্টেম চান যা সমস্ত কিছুর জন্য একটি ইউটিলিটি রয়েছে যার মধ্যে কেউই একে অপরের সাথে হস্তক্ষেপ না করে, তবে একটি নির্দিষ্ট জনাব গেটস আপনাকে সহায়তা করতে সক্ষম হতে পারে ;-)


--outputকেবলমাত্র জিএনইউ কোর্টিলস (≥8.22) এর অতি সাম্প্রতিক সংস্করণগুলিতে বিদ্যমান।
গিলস 'অশুভ হওয়া বন্ধ করুন'

এটি আমি যা করছি তা বেশ, এটি কেবলমাত্র mountকোনও বিকল্প ছাড়াই কিছুটা ভাবার পরেও মনে হয় না: বিকল্পগুলির সাহায্যে আপনি মাউন্ট পয়েন্টগুলি তৈরি করেন, সেগুলি তালিকাভুক্ত না করে, আমি আরও ভাল তালিকার সরঞ্জামের জন্য আশা করছিলাম। যেমনটি আমরা দেখতে পাই @ মিমকিজার আমাদের দেখিয়েছে findmnt
ctrl-alt-delor

1

মাউন্ট পয়েন্টগুলি ফাঁকা থাকলে এটি কিছুটা অগোছালো হতে পারে তবে মাউন্ট পয়েন্টগুলিতে নিউলাইন রয়েছে এমন ক্ষেত্রে বাদে এটি কাজ করা উচিত:

#!/bin/sh
mountpoint="$(df -P "$1" | awk '{
    if (NR==1)
        i=index($0,"Mounted on");
    else
        print substr($0,i);
    }')"
mount|grep " on ${mountpoint} type "

df -Pফাইল সিস্টেমের জন্য একটি লাইন আউটপুট; এই বিকল্পটি ছাড়াই, dfমাউন্ট পয়েন্ট দীর্ঘ হলে দুটি লাইন আউটপুট দিতে পারে। মাউন্ট পয়েন্টের নামটি একই কলামে শিরোনাম লাইনে "মাউন্ট ইন" লেবেলের মতো শুরু হয়।

আমরা মাউন্ট পয়েন্ট পাওয়ার পরে, এর আউটপুটে এটির জন্য গ্রেপ করব mount


1

আমি কোনও কমান্ড জানি না, তবে আপনি একটি ফাংশন তৈরি করতে পারেন। আপনি নীচে আপনার যোগ করতে পারেন .bashrc:

mountinfo () {
  mount | grep $(df -P "$1" | tail -n 1 | awk '{print $1}')
}

এটি mountকমান্ডটি কার্যকর করে এবং আউটপুটটি পাস করে grepgrepএর আউটপুট অনুসন্ধান করবে df -P "$1" | tail -n 1 | awk '{print $1}'এবং এটি ভেঙে দেবে:

  • df -P "$1"dfফাংশনটি পাস করা যুক্তি চালানো হবে ,
  • tail -n 1শুধুমাত্র দ্বিতীয় লাইন আউটপুট দেবে, partitionতথ্য রয়েছে এমন এক ।
  • awk '{print $1}'উদাহরণস্বরূপ, এই লাইনের প্রথম অংশটি ডিস্ক / পার্টিশন নম্বর প্রিন্ট করবে /dev/sda5। এটিই grepমাউন্ট কমান্ডে সন্ধান করবে এবং এটি আউটপুট করবে।

.bashrcপরিবর্তনগুলি প্রয়োগ করতে, বা লগ আউট করে আবার লগ ইন করতে আপনার ফাইল উত্স করুন ।

এখন, আপনি যদি চালনা করেন তবে আপনি mountinfo .যে ফলাফলটি চান তা পেয়ে যাবেন।


এটি আমি যা করছি তা বেশ অনেকখানি (তবে ফাংশন ব্যতীত, আমি এটি যথেষ্ট করি না, যখন আমি এটি করি অন্য সিস্টেমে যেমন এই সাইটের উত্তর রয়েছে on), এটি mountকোনও বিকল্প নেই বলে কিছুটা মনে হয় না is একটি চিন্তার পরে: অপশনগুলির সাথে আপনি মাউন্ট পয়েন্টগুলি তৈরি করেন, এটি তাদের তালিকাভুক্ত না করে, আমি আরও ভাল তালিকার সরঞ্জামের জন্য আশা করছিলাম। যেমনটি আমরা দেখতে পাই @ মিমকিজার আমাদের দেখিয়েছে findmnt
ctrl-alt-delor

0

আপনি যদি GNU কোর্টিলস ডিএফের সম্পূর্ণরূপে প্রাচীন সংস্করণ ব্যবহার করেন না, তবে echo $(df . --output=target | tail -n 1)কাজ করে। একইভাবে stat -c '%m' ., যদিও আমি নোট করি যে https://linux.die.net/man/1/stat%m বিন্যাস বিকল্পের ডকুমেন্টেশন অনুপস্থিত ।

এই বহনযোগ্যভাবে করা ক্লান্তিকর: উপরের কোনওটিই BSD বা স্টিগ বা df এর সাইগউইন সংস্করণে কাজ করবে না। এটি যদি মাউন্ট পয়েন্টগুলির পাথের ফাঁক হওয়ার সম্ভাবনা না থাকে df -P . | tail -1 | awk '{ print $NF}'তবে ভাল হত, তবে প্রায়শই ইউএসবি ফ্ল্যাশ ড্রাইভের ভলিউম নামের মধ্যে ফাঁকা স্থান থাকে, যা সম্ভবত মাউন্টের পাতায় উপস্থিত হবে এবং এটি ভেঙে ফেলবে। বহনযোগ্যতার জন্য, পার্ল ব্যবহারিকভাবে সর্বত্রই ইনস্টলযোগ্য এবং সিপিএএন-তে মডিউল রয়েছে সিস :: ফাইল সিস্টেম :: মাউন্টপয়েন্ট যা পছন্দসই কার্যকারিতা সরবরাহ করে।


echo $()কমান্ডের সাথে কী যুক্ত হয় তা আমাদের বলতে পারেন ?
ctrl-alt-delor 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.