টিলড (~) ইউনিক্স ডিরেক্টরিতে কাজ করছে


22

সুতরাং, আমি একটি ইউনিক্স পরিবেশে কাজ করছি এবং আমি লক্ষ্য করেছি যে আমার ওয়ার্কিং ডিরেক্টরিটির ভিতরে যা আমার ইউনিক্সের বাড়ি থেকে মাইল মাইল দূরে রয়েছে একটি রয়েছে ~

এখন, অতীতে একবার, আমি rm -rf ~আমার ওয়ার্কিং ডিরেক্টরি থেকে করেছি এবং আমার হোম ডিরেক্টরিটি পুরোপুরি মুছতে পেরেছি এবং আইটি জড়িত ছিল।

আমি আর এটি করতে চাই না। একই সাথে, আমি জানতে চাই

  1. ~আমার ওয়ার্কিং ডিরেক্টরিতে তৈরি করা হয় কেন ? সংরক্ষণের সময় এটি কোনও ত্রুটিযুক্ত আঙুলের স্লিপ ( :w!তবে কী হয় :w~? !!)

  2. চেক ইন করার আগে, এমন একটি স্ক্রিপ্ট রয়েছে যা অতিরিক্ত ফাইল বা ফোল্ডার সন্ধান করে যা p4 অবগত নয় তাই ডিএফ এটি ~কোনও সমস্যার কারণ হতে পারে। তাহলে আমি কীভাবে ~আমার ওয়ার্কিং ডিরেক্টরি থেকে মুছে ফেলতে পারি এবং একই সাথে আমার বাড়িটি মুছতে পারি না?

আমার delপরিবর্তে আমি ব্যবহার করি এমন একটি ব্যাকআপ কমান্ড রয়েছে rm -rf। এটি কেবল সাময়িক স্থানে স্টাফ রাখে। আমি এটি ব্যবহার করতে পারি এবং এ থেকে মুক্তি পেতে পারি ~। তবে কেন এটি হয় তা জানার জন্য আমি আরও আগ্রহী এবং আমি কীভাবে এটি অপসারণ করতে পারি?


সাধারণত, শেলটি প্রতিস্থাপন your আপনার হোম ডিরেক্টরি সহ একটি পাথের শুরুতে। /home/yourUserName/~ডাকা ডিরেক্টরিটি অ্যাক্সেসের জন্য পুরো পথটি ব্যবহার করুন ~
জোফেল

এবং u otheruser / ফাইলটি সম্পূর্ণ ব্যবহারের জন্য অন্য ব্যবহারকারীর হোম ডিরেক্টরিগুলি উল্লেখ করতে ব্যবহার করা যেতে পারে।
গডলিজিক

দেখে মনে হয় এক ঝাঁকুনি!
Xolve করুন

উত্তর:


36

হয় তা উদ্ধৃত করুন:

rm -i '~'
rm -i "~"
rm -i \~

অথবা এটি কেবল একটি বেসনামের পরিবর্তে কোনও পথ দ্বারা রেফারেন্স করুন:

rm -i ./~
rm -i /path/to/~

উল্লেখ্য, একটি মজার সুদর্শন একক অক্ষর নাম থাকা সত্ত্বেও, এই ধারণার দিক থেকে কোন পার্থক্য নাই আপনি নামের একটি ফাইল তৈরি করেছে যদি SOME$PATHকরে

touch 'SOME$PATH'

এবং এটি করে এটি সরিয়ে দেওয়ার চেষ্টা করেছেন:

rm -i SOME$PATH

( সতর্কতা: ভেরিয়েবলটি SOME$PATH এখানে উদাহরণের জন্য উদ্ধৃত করা হয়নি। সাধারণত এটি উদ্ধৃতিতে আবদ্ধ থাকে 'SOME$PATH' )

উভয় ক্ষেত্রেই, শেলটি আপনার দেওয়া নামটি প্রসারিত করছে এবং এটি আপনাকে আটকাতে হবে।

এছাড়াও: rm -rfএকটি ফাইল সরানোর জন্য ব্যবহার করবেন না ! এর পুরো উদ্দেশ্য rm -rহ'ল rmডিরেক্টরিগুলি অপসারণ করা ঠিক আছে tell আপনি যদি ফাইলগুলি সরানোর চেষ্টা করার সময় দুর্ঘটনাক্রমে পুরো ডিরেক্টরিগুলি মুছে ফেলতে না চান তবে অভ্যাসগতভাবে পাস করবেন না -r!


12
আমি সবেমাত্র এটি পরীক্ষা করেছি। :w~ভিমে একটি ফাইল তৈরি করেছে ~rm ~ফিরে এসেছিল cannot remove /home/seth it is a directoryফাইলটিrm "~" মুছে ফেলেছে । কেবল আন্ডারলাইন করতে -rfস্বয়ংক্রিয়ভাবে পাস করবেন না
শেঠ

4
ডিফল্টরূপে হিংসাত্মক বিকল্পগুলি বাদ দেওয়ার পরামর্শ দেওয়ার জন্য +1। এটি kill -9ডিফল্টরূপে করার মতো , যা আমি দেখেছি।
সেলেদা

আমি দেখতে উদাহরণস্বরূপ rm -i $FOOইচ্ছাকৃতভাবে উদাহরণ অনুরোধে জন্য পরিবর্তনশীল উদ্ধৃত করে না, কিন্তু এখনও: জড়িত একটি শেল উদাহরণ দেখিয়ে rmএবং unquoted পরিবর্তনশীল যেমন যুক্তি খুব খারাপ , প্রসঙ্গের স্বাধীন আহ, দুঃখিত। আমি নিশ্চিত যে এমনকি প্রবঞ্চন করা যেতে পারে :) আমি কিছু নোট যোগ করব - তবে আপনি উদাহরণটি পরিবর্তন করতে পারেন, একটু?
ভোলকার সিগেল

@ ভোলকারসিগেল, পয়েন্টটি নেওয়া হয়েছে - আমি আপনার সম্পাদনার অংশ নিয়েছি, তবে পাদটীকাটি কিছুটা ভারী হাতে লাগছিল। সমস্যাগুলির সম্ভাবনা কম হওয়ার কারণে আমি একটি ভেরিয়েবলের নামও পরিবর্তন করেছি - বেশিরভাগ লোকের ফাইল SOME/bin:/usr/binসিস্টেমে কোথাও একটি ফাইল নেই । :)
গডলিজিক

হ্যাঁ, ভাল লাগছে! (আমি প্রায় উত্তর দিতে যাচ্ছিলাম: কি? ভারী হাতে? আপনি কি কখনও আপনার লাইভে সত্যিকারের উদ্ধৃতি সমস্যা অনুভব করেছেন ?;) সাধারণভাবে সাধারণভাবে ... কিছুটা ভুল শেল উদাহরণের পরিমাণ সম্পর্কে খানিকটা উদ্বিগ্ন! ভুল উদাহরণ ছাড়াও বুঝতে! )
ভোলকার সিগেল

1

Il ls ~আপনার বাড়ির দিরের শর্টকাট হ'ল টিলডটি আপনার বাড়ির দিরকে এইভাবে প্রসঙ্গে ব্যবহার করবে। আপনি যদি তা করেন ls ~brownতবে আপনি ব্রাউন এর বাড়ির দির সামগ্রীগুলি তালিকাভুক্ত করবেন list

ভিআইএম, অন্যথায় না বলা পর্যন্ত, পরিবর্তিত ফাইলটির একটি ব্যাক-আপ অনুলিপি তৈরি করবে: মাইফাইল মাইফাইল ~ ~

এই আচরণটি ভাল কারণ এটি একটি ব্যাক-আপ তৈরি করে তবে আপনি এটি না চাইলে আপনার সাথে যুক্ত করুন v Vimrc ফাইল: কোনও ব্যাকআপ সেট করবেন না (যা আমি সবেমাত্র অ্যাক্সেস করেছি vi ~/.vimrc)।

এবং অবশ্যই অন্যরা যেমন বলেছিল, আপনার কাছে যদি called নামে একটি ফাইল থাকে তবে কেবল char ~ হিসাবে চরটি এড়িয়ে যান ~

me 217 % vi this      (saved as :w~)
me 218 % ls
this  ~
me 219 % cat \~
kfdkdfk
me 220 % \rm \~
me 221 % ls
this

0

এটি ভুল টাইপ দ্বারা প্রভাবিত হতে পারে। আপনার TERM=xtermকনফিগারেশনটি যদি আমার মতো কিছু হয় তবে ব্যবহারিকভাবে আপনার কীবোর্ডের প্রতিটি ফাংশন কী যেমন এস্কেপ সিকোয়েন্সগুলি প্রেরণ করবে ...

infocmp -1 | grep -n \~ | tail -n3
138:    kich1=\E[2~,
141:    knp=\E[6~,
142:    kpp=\E[5~,

আউটপুট অর্ধেকের বেশি infocmp -1রয়েছে ~টিল্ড আমার মেশিনে বেরিয়ে - এবং আমি একটি ক্ষতি আছি তা বুঝতে তাদের অধিকাংশই না। আমি জানি যে zshকমপক্ষে প্রকৃতপক্ষে বেশিরভাগ ক্ষেত্রে স্ট্রিংয়ের পালিয়ে যাওয়া অংশটি খায় - এবং কেবল ~টিলড ছেড়ে যায় ।

উদাহরণস্বরূপ, টাইপ echoতারপর <space>তারপর F6এবং <return>কপি করে প্রিন্ট ...

/home/mikeserv

প্রকৃত প্রস্থান পাঠানোর ক্রমটি হ'ল ...

kf6=\E[17~

মজার বিষয় হল, এই পালানোর ক্রমগুলির মধ্যে আরও কয়েকটি রয়েছে যাতে >অক্ষর রয়েছে।

infocmp -1 | grep \>
is2=\E[!p\E[?3;4l\E[4l\E>,
rmkx=\E[?1l\E>,
rs2=\E[!p\E[?3;4l\E[4l\E>,

এগুলি সাধারণত পালানো হয় - পুনরায় সেট করা এবং প্রারম্ভিককরণের স্ট্রিং। কোনও ইন্টারেক্টিভ শেল যখন ইনপুটটির জন্য অপেক্ষা করছে তখন কোনও বাদ পড়ে যাওয়া কীবোর্ড বা কোনও ধরণের বোতাম-ধাক্কা খাওয়ার ফলে ~আপনার ফাইল-সিস্টেম জুড়ে এলোমেলোভাবে কাটা ফাইল হতে পারে । কমপক্ষে, এটি মাঝেমধ্যে খনিতে ক্রপ হয়।

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