ইউনিক্স কমান্ড - সন্ধান করুন


9

আমি ইউএনআইএক্স কমান্ড শিখার চেষ্টা করছি এবং আমি শিখতে এই গেমটি খেলছি এবং আমি এই মুহূর্তে সত্যই আটকে আছি। আমি ssh এর মাধ্যমে একটি সার্ভারে আছি এবং ডিরেক্টরিটি এলোমেলো ফাইল এবং ফোল্ডারে পূর্ণ এবং পরবর্তী স্তরের পাসওয়ার্ডটি ফাইলগুলির মধ্যে একটির মধ্যে রয়েছে। আমাকে জানানো হয়েছে যে ফাইলটির নিম্নলিখিত সংক্ষিপ্তসার রয়েছে:

  • মানব পাঠযোগ্য
  • 1033 বাইট
  • অ এক্সিকিউটেবল

আমি অনুমান করছি যে আমার findকমান্ডটি ব্যবহার করা উচিত এবং আমি চেষ্টা করেছিলাম find ! -executableকিন্তু এটি একটি প্রচুর ফাইল ফিরিয়ে দিয়েছে। ম্যানুয়াল বা অনলাইনে আমি খুঁজে পেতে পারি এমন একমাত্র মানব-পঠনযোগ্য সহায়তা হ'ল ফাইলের আকারগুলি মানব পাঠযোগ্য printing তাহলে আমি কি এখানে কিছুটা হারিয়েছি?

এছাড়াও আমি চেষ্টা করেছিলাম find ~ -size 1033bকিন্তু কিছুই ফেরেনি। কিন্তু যখন আমি চেষ্টা করেছিলাম তখন find ~ -size -1033bডিরেক্টরিতে থাকা প্রতিটি ফাইল ফিরে আসে।


আমি সত্যিই এই গেমটি সম্পর্কে আরও জানতে চাই!
ivanivan

2
@ivanivan bandit.overtjeeire.org
avgvstvs

উত্তর:


16

মানব-পঠনযোগ্য ফাইলের নামগুলি ফিল্টার করার জন্য, আপনি [:print:]( মুদ্রণযোগ্য ) অক্ষর শ্রেণীর নামটি ব্যবহার করতে পারেন । ম্যানুয়ালটিতে আপনি এই জাতীয় ক্লাস সম্পর্কে আরও জানতে পারবেন grep

find . -type f -size 1033c -name "[[:print:]]*" ! -executable

দ্বিতীয় চিন্তায়, "মানব-পঠনযোগ্য" প্রয়োজনীয়তার পরিবর্তে ফাইলটির নামের পরিবর্তে ফাইলের বিষয়বস্তু উল্লেখ করা যেতে পারে। অন্য কথায়, আপনি পাঠ্য ফাইলগুলি অনুসন্ধান করবেন । ওটা একটু বেশিই মুশকিল। @ ডি_বাই যেমন একটি মন্তব্যে পরামর্শ দিয়েছেন, তারপরে fileআপনার ফাইলের বিষয়বস্তুর ধরণ নির্ধারণ করতে কমান্ডটি ব্যবহার করা উচিত । তবে fileপাইপের পরে চালানো ভাল ধারণা হবে না কারণ এটি ফাইলটির নাম প্রদর্শনের কাজটিকে জটিল করে তুলবে। আমি যা পরামর্শ দিচ্ছি তা এখানে:

find . -type f -size 1033c ! -executable -exec sh -c 'file -b $0 | grep -q text' {} \; -print

fileপার্টটি কীভাবে কাজ করে তা সংক্ষেপে এটি :

  • -execসম্পৃক্ত, executes sh -c 'file -b $0 | grep -q text' FILENAMEপ্রত্যেকের জন্য FILENAMEমাফিক সব আগের শর্ত (ধরন, আকার, অ এক্সিকিউটেবল)।
  • এই ফাইলগুলির প্রত্যেকের জন্য, একটি শেল ( sh) এই ছোট স্ক্রিপ্টটি চালায় : ফাইলের নামের সাথে file -b $0 | grep -q textপ্রতিস্থাপন $0করে।
  • fileপ্রোগ্রাম প্রতিটি ফাইলের বিষয়বস্তুর প্রকার নির্ধারণ করে এই তথ্য আউটপুট। -bবিকল্প প্রতিরোধ প্রতিটি পরীক্ষিত ফাইলের নাম মুদ্রণ।
  • grepfileপ্রোগ্রাম থেকে আসা আউটপুট ফিল্টার করে "পাঠ্য" সম্বলিত লাইন অনুসন্ধান করে । (আপনার নিজের জন্য দেখুন, fileকমান্ডের একটি সাধারণ আউটপুট কেমন লাগে))
  • তবে grepফিল্টারকৃত পাঠ্য আউটপুট দেয় না, কারণ এতে -q(শান্ত) বিকল্পটি দেওয়া আছে। এটি যা করে, কেবলমাত্র তার প্রস্থান স্থিতিটি পরিবর্তন করতে হয় 0(যা "সত্য" প্রতিনিধিত্ব করে - ফিল্টারযুক্ত পাঠ্যটি পাওয়া গেছে) বা 1 (যার অর্থ "ত্রুটি" - "পাঠ্য" পাঠ্যটি আউটপুটে প্রদর্শিত হয়নি file)।
  • আসল / মিথ্যা প্রস্থান স্থিতিটি grepআরও পাশ করা shহয় findএবং পুরো -exec sh -c 'file $0 | grep -q text' {} \;পরীক্ষার চূড়ান্ত ফলাফল হিসাবে কাজ করে ।
  • যদি উপরে পরীক্ষা ফিরে সত্য , -printকমান্ড এক্সিকিউট করা হয় (যেমন পরীক্ষিত ফাইলের নাম ছাপা হয়)।

আমি জানি এটি পুরানো তবে আমি যুক্ত করতে চাই যে এটি ব্যবহার find . -type f -size 1033cকরে ঠিক একই প্রতিক্রিয়াও ফিরে আসবে।
ব্র্যান্ডন বেনিফিল্ড

8
find . -type f -readable -size 1033c ! -executable

নোট করুন যে আমি ফাইল আকারের cপরিবর্তে ব্যবহার করেছি bb512 বাইট ব্লকের জন্য। cপ্রকৃত বাইট জন্য।


2
আমি মনে করি না -readableমানব-পঠনযোগ্য (অর্থাত্
দ্বিপদী

1
@ হাহামু - ঠিক আছে তবে, ফাইলগুলি ফিল্টার করা সম্ভবত খারাপ নয় কারণ ব্যবহারকারীর পড়ার কোনও অধিকার নেই! কোনও ফাইলটিতে মানব-পঠনযোগ্য সামগ্রী রয়েছে কিনা তা নির্ধারণ করার জন্য, নামগুলি পিপেকে findপাঠানো হয়েছে file
ডি_বাই

2

আমি যা লিখেছি তা হ'ল:

find -size 1033c ! -executable

এবং ফাইল পেয়েছি। দৃশ্যত মানুষের পাঠযোগ্য অংশটি আপনাকে ফেলে দেওয়া হয়েছিল।


0
find . -readable -size 1033c \! -executable

পড়ার যোগ্য অর্থ ফাইলগুলি অ্যাকাউন্ট দ্বারা পঠন করা যায়, এটি তাদের প্রয়োজনীয়ভাবে মানব পাঠযোগ্য করে তোলে না।
অ্যান্থন

0

আমি মনে করি গেমটির জন্য তবে সঠিক বাক্য গঠনটি হ'ল:

file ./* 

আপনি একটি রিটার্ন পান যা প্রতিটি ফাইলের অন্তর্ভুক্ত যা তালিকাবদ্ধ করে। দস্যু গেমটিতে আপনি যা অর্জন করতে চাইছেন তাতে এটি কার্যকরভাবে কাজ করেছে। এই কাজের জন্য আসল কার্ভ বলটি হ'ল প্রতিটি ফাইল - (হাইফেন) দিয়ে শুরু হয়।


আপনি এর উপর এই কমান্ডটিতে হাইফেন যুক্ত করে এটির উন্নতি করতে পারেন file ./-*
কনস্ট্যান্টফুন

0

আমি মনে করি এটি সেরা আসল উত্তর যা সমস্ত 3 শর্তকে আবরণ করবে

find inhere/ -type f -size 1033c ! -executable |xargs file | grep text

তবে অনেকে যেমন বলেছিলেন, কার্যকরযোগ্য এবং মানব পাঠযোগ্য আমাদের ব্যবহার থেকে দূরে সরিয়ে রেখেছিলেন, তাই ব্যবহার করে

find inhere/ -type f -size 1033c 

যথেষ্ট যথেষ্ট!

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