দুর্ঘটনাক্রমে নামকরণ / বিন সহায়তা!


39

আমার এখানে জরুরি অবস্থা রয়েছে, লিনাক্স এবং ব্যাশ এখানে শিক্ষানবিস এবং কিছু ফাইলের নাম পরিবর্তন করার জন্য একটি স্ক্রিপ্ট লেখার চেষ্টা করতে গোলমাল করলেন। লুপটি দুর্ঘটনাক্রমে পথে এগিয়ে গেল (ডেস্কটপের কোনও ফোল্ডারে স্ক্রিপ্টটি চালিয়েছিল) এবং পুনরায় নামকরণ /binকরা হয়েছিল /D_bin( D_আমি যুক্ত করা উপসর্গ ছিল) সুতরাং এখন সিস্টেম /binসামগ্রীগুলি ব্যবহার করতে পারে না , তাই না bash, mvনাম পরিবর্তন করতে পারে না , sudoফাইলগুলি নয় ... ফাইলগুলি ইন /D_binঠিক আছে, নাম পরিবর্তন করা হয়নি, এবং সেগুলি অনুলিপি-পেস্ট করতে পারে তবে /binব্যাশ ছাড়া ফোল্ডারটি আর তৈরি করতে পারে না । সিস্টেমটি স্থিতিশীল দেখায় তবে খুব কম জিনিসই কাজ করে এবং ডেস্কটপে ফাইলগুলি অ্যাক্সেস পায় না।

অন্যান্য ফোল্ডারগুলির /মতো /lib /sbin /etcএটিও ঠিক আছে বলে মনে হয় এবং গ্রাফিকাল ডেস্কটপটি এখনও আছে। আমি পুনরায় চালু করতে ভয় পাচ্ছি কারণ এটি বুট করতে সক্ষম হবে কিনা তা আমি জানি না।

মূলের কোনও শেল আছে বা /D_binআবার নামকরণের কোনও উপায় আছে /bin? সাহায্য প্রয়োজন দয়া করে, খুব গুরুত্বপূর্ণ কাজ আপস

আমার আত্মঘাতী লিপি: $:

#!/bin/bash
files=~/Desktop/folder_1/*

for j in $files
do
    cd $j
    for i in 10n*  #file names starting by 10n
    do
       find * -maxdepth 0 ! -path . -exec mv {} D_{} \;
    done
    cd ..
done

:( ধন্যবাদ !!!!


7
আপনি এই ধরণের জিনিস চেষ্টা করতে এবং শেখার জন্য কোনও ভিএম ব্যবহার করতে চেষ্টা করতে পারেন, তাই আপনি কখনই বেশি ঝুঁকি নিতে পারবেন না।
এম। বেরেরেরা

7
এখন সমস্যাটি সমাধানের জন্য, আপনি উবুন্টু দিয়ে একটি বুটেবল ইউএসবি তৈরি করতে পারেন যেন আপনি ওএস ইনস্টল করতে চান এবং উবুন্টু টিপতে চান , সেখান থেকে আপনি একটি টার্মিনাল খুলতে এবং ফোল্ডারটির নাম পরিবর্তন করতে পারেন।
এম.বেসেরা 13


32
/D_bin/mv -T /D_bin /binএবং পরের বারে আপনার স্ক্রিপ্টগুলি রুট হিসাবে চালাবেন না।
জেসন সি

5
বিটিডব্লিউ এই জাতীয় স্ক্রিপ্ট তৈরি করার সময় আমি সাধারণত স্ক্রিপ্টটি চালানোর পরিবর্তে সম্ভাব্য ধ্বংসাত্মক কমান্ড প্রতিধ্বনি করে প্রথমে একটি ড্রাই রান করি এবং এর ক্রিয়াগুলি বুদ্ধিমান হয়ে যায় তা যাচাই করে। এছাড়াও: নিয়মিত ব্যাকআপ।
জেসন সি

উত্তর:


89

এই সমস্যাটি সমাধানের বিভিন্ন উপায় রয়েছে।

যদি আপনার শেল (কোনও উন্মুক্ত টার্মিনাল) অ্যাক্সেস থাকে তবে চালান:

sudo /D_bin/mv -T /D_bin /bin

sudoহয় /usr/binতাই সুনির্দিষ্ট পাথ সঙ্গে এটি চালানোর জন্য কোন প্রয়োজন নেই।

আপনি যে জিনিসটি করতে পারেন তা হ'ল /D_binআপনার PATHপরিবেশ পরিবর্তনশীলটিতে এটি যুক্ত করুন:

export PATH=$PATH:/D_bin

আপনার যদি কোনও শেল অ্যাক্সেস না থাকে:

  1. সিস্টেমটি পুনরায় বুট করুন
  2. গ্রাব উপস্থিত হলে গ্রাবটি eসম্পাদনা করতে টিপুন
  3. লাইনাক্সের সাথে শুরু হওয়া লাইনের শেষে, যুক্ত করুন:

    init=/D_bin/bash
  4. চাপুন CTRL+x

এখন আপনাকে বাশ শেলের মধ্যে ফেলে দেওয়া হবে, আপনার ফাইল পড়া ও লিখনযোগ্য হিসাবে পুনরায় গণনা করা উচিত।

/D_bin/mount -o remount,rw /

এবং ডি_বিন ডিরেক্টরিটি বিনটিতে সরান:

/D_bin/mv -T /D_bin /bin

তারপরে সিস্টেমটি পুনরায় বুট করুন।

এটি কাজ করা উচিত, তবে যদি আপনার পক্ষে কিছুই না কাজ করে তবে আপনি সিস্টেমটি একটি লাইভ উবুন্টু ডিস্ক / ইউএসবি দিয়ে বুট করতে এবং সমস্যাটি সমাধান করতে পারেন।


2
প্রথমটি এটি সমাধান করেছে। অনেক ধন্যবাদ, সত্যিই আমার দিনটি বাঁচিয়েছে। কৌতূহলের বাইরে, স্ক্রিপ্টটি দেখে কেন নাম পরিবর্তন / বিনে পৌঁছেছে? ডেস্কটপের সমস্ত ফোল্ডার '_D' পেয়েছে তবে বিন বা বাদে ঘরে বা মূলে অন্য কোনও নয়।
কার্লোস ডি জাপাটা

9
@ কার্লোসডি.জাপাটা: যদি আপনাকে কোনও স্ক্রিপ্টের লুপে ডিরেক্টরি পরিবর্তন করতে হয় তবে প্রায়শই কোডটি সাব-শাইলে চালানো ভাল ধারণা। cd "$j"(নামটি ডাবল উদ্ধৃতিতে হওয়া উচিত) এর আগে একটি খোলা প্রথম বন্ধনী যুক্ত করুন এবং cd ..ম্যাচিং বন্ধের প্রথম বন্ধনীর সাথে দুষ্টমি তৈরিকে প্রতিস্থাপন করুন । এছাড়াও, আপনি কেন রুট হিসাবে চালাচ্ছিলেন। আপনার এত ক্ষতি করতে সক্ষম হবেন না।
জোনাথন লেফলার

3
@ CarlosD.Zapata: আপনার পরে cd ..করা একটি pwd, আপনার অপসারণ findস্ক্রিপ্ট থেকে কমান্ড, তাহলে এটি একজন সাধারণ ব্যবহারকারী হিসেবে চালানো। আপনি স্ক্রিপ্টটি যেতে দেখবেন /, কারণ আপনি এমন একটি সিডি-জ করেন যা আমি অনুমান করি যে ফাইলগুলি ডিরেক্টরি নয়। সুতরাং প্রতিটি লুপে আপনি এক ধাপ পিছিয়ে যান এবং অবশেষে আপনি ভিতরে /
রাভেক্সিনা

1
@ কার্লোসডি.জাপাটা মনে রাখবেন যে এটি "থামিয়ে" থাকতে পারে /binকারণ এটি ভিতরে ফোল্ডারে কাজ করে /bin। আমি সেগুলি (যদিও মূল হিসাবে না!) চেক করব
wizzwizz4

17
এটি সম্ভবত / বিনটি বন্ধ হয়ে গেছে কারণ / বিনটি এটির নামকরণের ক্ষেত্রে ঘটেছিল / এর মধ্যে প্রথম ফোল্ডার ছিল (এটি বর্ণানুক্রমিকভাবে প্রথম) এবং এর পরে, এটি আর চালানো যায় না mv
ব্যবহারকারী 253751

8

আপনার যদি কোনও চলমান টার্মিনাল খোলা না থাকে তবে এই সমস্যাটি সমাধান করতে, আমি প্রথমে একটি "শেল বিকল্প" সন্ধান করার চেষ্টা করব যা আপনি ব্যাশের পরিবর্তে ব্যবহার করতে পারেন। পাইথন রয়েছে /usr/bin, তাই এখনও কাজ করা উচিত।

Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.call(["sudo", "/D_bin/mv", "-T", "/D_bin", "/bin"])

যদি এটি কাজ না করে, আমি সরাসরি সরাসরি সিডি / ইউএসবি থেকে বুট করব এবং একটি জ্ঞাত-বুদ্ধিমান চলমান পরিবেশ থেকে সমস্ত কিছু ঠিক করব।

একটি সাধারণ পরামর্শ হিসাবে, আমি মন্তব্যে জোনাথন লেফ্লারকে দ্বিতীয় করতাম: cd ..স্ক্রিপ্টগুলিতে কখনও ব্যবহার করবেন না, এটি সহজেই এই জাতীয় সমস্যার কারণ হতে পারে। $jএকটি সাব-শেলের মধ্যে ডিরেক্টরিতে কেবল সিডি করা ভাল , এইভাবে আপনাকে ফিরে আসার বিষয়ে চিন্তা করতে হবে না।

#!/bin/bash
files=~/Desktop/folder_1/*

for j in $files
do
  (
    cd "$j"
    for i in 10n*  #file names starting by 10n
    do
       find * -maxdepth 0 ! -path . -exec mv {} D_{} \;
    done
  )
done

এছাড়াও, অবশ্যই, একেবারে প্রয়োজনীয় না হলে স্টাটগুলি রুট হিসাবে চালাবেন না।


অন্য কোনও শেল / টার্মিনালে অ্যাক্সেস না রেখে পাইথনের মতো ইন্টারেক্টিভ শেলটি চালানো কি সম্ভব? আমি মনে করি যে কর্মক্ষেত্রটি একটি স্ক্রিপ্ট তৈরি করা উচিত যা এটি রুট হিসাবে চালানোর জন্য পাসওয়ার্ডের পাশাপাশি কমান্ড ধারণ করে। জিইউআই আমার অনুমানের বাকি কাজগুলি করবে।
রাভেক্সিনা 13

@ রেভেক্সিনা: প্রতিটি কিছুর শেলের দরকার নেইpythonপ্রক্রিয়াটি চালানোর জন্য খুব নিশ্চিত আপনার কেবল একটি টার্মিনাল অ্যাপ্লিকেশন প্রয়োজন, এবং চালাতে os.system("sudo ...")আপনার কেবল একটি * নিক্স কার্নেল প্রয়োজন। হয়তো আমি এটা একটি VM পরবর্তী চেষ্টা করব ...
leftaroundabout

অতিরিক্তভাবে, cdস্ক্রিপ্টগুলিতে প্রবেশ cd -করার সময়, আপনি একটি ডিরেক্টরি সিডি করতেন না, বরং আপনি যেখানে ছিলেন সেখানে ফিরে যাওয়াই ভাল । আপনি যদি প্রাথমিক পরিবর্তন করেন cd, তবে cd ..আপনি যেখানে ছিলেন সেখানে ফিরে পাবেন না, তবে cd -থাকবেন।
ফ্রেমবট

মত @JoeFrambach cd ..আমি চাই না ব্যবহার cd -শুধুমাত্র কম্যান্ড-লাইনে স্ক্রিপ্ট-এ। cd -সমস্যার তুলনায় সম্ভবত কোনও সমস্যা-গ্যারান্টি কম cd ..তবে আমি এখনও এটিকে নিরাপদ বলে বিবেচনা করব না - যদি কেউ মাঝখানে আরও ডিরেক্টরি পরিবর্তন যুক্ত করে, তবে এটি আপনাকে নির্বিঘ্নে নিয়ে যাবে। যেখানে ডিরেক্টরিগুলি পরিবর্তিত হয় এবং আপনি কোন দিকে ফিরে যান সে জন্য সাব-শেলগুলি আপনাকে একটি স্পষ্টভাবে সীমিত সুযোগ দেয়
বাম দিকের বাইরে

@ রাভেক্সিনা আমি কেবল এটি চেষ্টা করেছি: পাইথনটি সত্যিই চালু করা যেতে পারে। তার os.systemনেই না ছাড়া কাজ shবর্তমান, কিন্তু subprocess.callকাজ করে।
22-29 এ বাম দিকের বাইরে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.