লিনাক্স ব্যাশে টিলডের অর্থ (হোম ডিরেক্টরি নয়)


106

প্রথমে, আমি জানি এটি ~/হল হোম ডিরেক্টরি। সিডিিং ~বা~/ আমাকে হোম ডিরেক্টরিতে নিয়ে যায়।

যাইহোক, cd ~Xআমাকে একটি বিশেষ জায়গায় নিয়ে যায়, যেখানে Xকিছু মনে হয়।

ব্যাশ, যদি আমি "আঘাত cd ~" এবং হিট ট্যাব, এটা সম্ভব একটি গুচ্ছ দেখায় ~Xমত অপশন ~mailএবং ~postgresএবং ~ssh। এই ফোল্ডারগুলিতে গিয়ে একটি pwdকরণ আমাকে দেখায় যে এই ফোল্ডারগুলি হোম ডিরেক্টরিতে নেই; তারা সব জায়গা জুড়ে।

এঁরা উপাধি নন। আমি চেক করেছি. এগুলি env.ভেরিয়েবল নয় , না হলে তাদের একটি দরকার $

এই লিঙ্কগুলি কী সেট করছে এবং কোথায় এইগুলি সেট করা হচ্ছে তা কোথায় পাব?


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

উত্তর:


71

এটি " টিল্ড এক্সপেনশন " নামে একটি বাশ বৈশিষ্ট্য । এটি শেলের একটি ফাংশন, ওএস নয়। উদাহরণস্বরূপ, আপনি সিএসএসের সাথে আলাদা আচরণ পাবেন।

তথ্যটি কোথা থেকে আসে সে সম্পর্কে আপনার প্রশ্নের উত্তর দেওয়ার জন্য: আপনার হোম ডিরেক্টরিটি ভেরিয়েবল থেকে আসে $HOME(আপনি সেখানে যা সঞ্চয় করেন তা নয়), অন্য ব্যবহারকারীর বাড়িগুলি রিয়েল-টাইম ব্যবহার করে পুনরুদ্ধার করা হয় getpwent()। এই ফাংশনটি সাধারণত এনএসএস দ্বারা নিয়ন্ত্রিত হয় ; সুতরাং ডিফল্ট মানগুলি এড়িয়ে যায় /etc/passwd, যদিও এটি এনআইএস, এলডিএপি বা এসকিউএল ডাটাবেস হিসাবে পছন্দসই কোনও উত্স ব্যবহার করে তথ্য পুনরুদ্ধার করতে কনফিগার করা যায়।

হোম ডিরেক্টরি অনুসন্ধানের চেয়ে টিলডে সম্প্রসারণ বেশি। এখানে একটি সংক্ষিপ্তসার:

~              $HOME
~fred          (freds home dir)

~+             $PWD       (your current working directory)
~-             $OLDPWD    (your previous directory)
~1             `dirs +1`
~2             `dirs +2`
~-1            `dirs -1`

dirsএবং ~1, ~-1ইত্যাদি সাথে ব্যবহার করা হয় pushdএবং popd


একটি নোট হিসাবে মাছ প্লেইন টিল্ড ব্যতীত তাদের কোন অবলম্বন পাওয়া যায়নি (~)

কেন তারা এলো ~+? বরং অকেজো মনে হচ্ছে।
ক্রেগক্স

3
~ + মোটামুটি একই রকম। যাইহোক,। / ফাইলের মতো কিছু ব্যবহার করতে এটি ফাইল সিস্টেমে গিয়ে কোথায় খুঁজে বের করতে হবে। এটি অবস্থিত - এটি কয়েকটি চক্র নেয়। ~ + ব্যবহারের ফলে শেল ভেরিয়েবল $ পিডাব্লুডির সামগ্রীগুলি কেবলমাত্র ফাইল সিস্টেমকে অতিক্রম করার আগেই সংজ্ঞায়িত করা হয়েছে তা ফিরিয়ে দিয়ে কাজটি সাশ্রয় হয়।
এসডসোলার

32

সেগুলি হল ব্যবহারকারীদের হোম ডিরেক্টরি। cd ~(your username)উদাহরণস্বরূপ চেষ্টা করুন ।


1
সেগুলি কোনও সিমলিংক নয়, পরিষেবা অ্যাকাউন্টগুলিতে / বাড়ির নীচে হোম ডিরেক্টরি নেই
আনা বেটস

আমার ক্ষেত্রে সেরা উত্তর। এছাড়াও, আমার বিশেষ ক্ষেত্রে এটি মূল ডিরেক্টরি / ফোল্ডার ছিল, হোম ফোল্ডারটি নয়।
wlwl2

16

তারা ব্যবহারকারীর হোম ডিরেক্টরি হয় /etc/passwd? পোস্টগ্রিস, সেন্ডমেল, অ্যাপাচি ইত্যাদির মতো পরিষেবাগুলি এমন সিস্টেম ব্যবহারকারী তৈরি করে যা সাধারণ ব্যবহারকারীদের মতো হোম ডিরেক্টরি থাকে।


2
প্রকৃতপক্ষে তারা হলেন ~ ব্যবহারকারীর
নামটি

14

যারা ব্যবহারকারী। আপনার পরীক্ষা করুন /etc/passwd

cd ~username আপনাকে সেই ব্যবহারকারীর হোম ডিরেক্টরিতে নিয়ে যায়।


FTW এর। ভোট দিন। এটি পরিষ্কার করার জন্য টিএনএক্স। আমি অবাক হই যে এটিতে কয়টি চক্র এবং সম্ভবত একটি সাবশেল জড়িত। আপনার সিস্টেমে একটি ছোট ISP এর মতো 3K ব্যবহারকারী রয়েছে কিনা তা একবার ভেবে দেখুন। বাবা।
এসডসোলার

9

আমার মেশিনে, আমার জিনিসগুলি যেভাবে সেট আপ করা হয়েছে তা করার কারণে:

cd ~             # /work1/jleffler
cd ~jleffler     # /u/jleffler

প্রথমটি পরিবেশের পরিবর্তনশীলের মানের দিকে মনোযোগ দেয় $HOME; আমি ইচ্ছাকৃতভাবে $HOMEকোনও এনএফএস-মাউন্ট করা ফাইল সিস্টেমের পরিবর্তে স্থানীয় একটি ফাইল ফাইলটিতে সেট করেছি । দ্বিতীয়টি পাসওয়ার্ড ফাইল থেকে পড়ে (আনুমানিক; এনআইএস কিছুটা জটিল করে তোলে) এবং পাসওয়ার্ড ফাইলটি বলে যে আমার হোম ডিরেক্টরিটি/u/jleffler সেই ডিরেক্টরিতে পরিবর্তিত হয়েছে।

বিরক্তিকর জিনিস হ'ল বেশিরভাগ সফ্টওয়্যার উপরে হিসাবে আচরণ করে (এবং শেলের জন্য পসিক্স স্পেসিফিকেশনটির জন্য এই আচরণের প্রয়োজন হয়)। আমি এমন কিছু সফ্টওয়্যার ব্যবহার করি (এবং এটি ব্যবহার সম্পর্কে আমার কাছে খুব পছন্দ নেই) যা পাসওয়ার্ড ফাইল থেকে তথ্যটিকে $ হোমের বর্তমান মান হিসাবে বিবেচনা করে, যা ভুল।

এটিকে প্রশ্নের সাথে প্রয়োগ করা - যেমনটি অন্যেরা উল্লেখ করেছে, ' cd ~x' ব্যবহারকারীর 'এক্স' এর হোম ডিরেক্টরিতে যায় এবং সাধারণত যখনই টিল্ড সম্প্রসারণ করা হয়, তার ~xঅর্থ ব্যবহারকারী 'এক্স' এর হোম ডিরেক্টরি (এবং এটি একটি ত্রুটি যদি ব্যবহারকারী 'এক্স' উপস্থিত না থাকে)।


এটি উল্লেখযোগ্য হতে পারে:

cd ~-       # Change to previous directory ($OLDPWD)
cd ~+       # Change to current directory ($PWD)

আমি 'এর জন্য তাত্ক্ষণিকভাবে কোনও ব্যবহার খুঁজে পাচ্ছি না~+আপনি বর্তমান ডিরেক্টরিতে যাওয়ার পথে চলন্ত সিমলিংকগুলি সহ কিছু অদ্ভুত জিনিস না করলে ' এর ।

আপনি এটি করতে পারেন:

cd -

যে একই মানে ~-


1
সম্পর্কে cd ~+: আপনি সম্ভবত বর্তমানে যে ডিরেক্টরিটি রয়েছেন তা এখনও বিদ্যমান কিনা তা যাচাই করার জন্য আপনি সম্ভবত এটি ব্যবহার করতে পারেন - এমনকি এটি এটি করার একটি অপূর্বর পদ্ধতি way
অধ্যাপকরা


1

আপনি যদি ব্যবহার করছেন autofsতবে প্রসারণটি সম্ভবত আসবে /etc/auto.home(বা আপনার ডিসট্রোর জন্য অনুরূপ)। উদাহরণস্বরূপ, আমার /etc/auto.masterচেহারাগুলি এর মতো:

/home2 auto.home --timeout 60

এবং /etc/auto.homeদেখে মনে হচ্ছে:

mgalgs -rw,noquota,intr space:/space/mgalgs

0

আপনি সম্ভবত নিজের ডিরেক্টরি ডিরেক্টরিতে ওপেন ডিরেক্টরি / অ্যাক্টিভ ডিরেক্টরি / এলডিএপি ব্যবহারকারীদের "স্বয়ংক্রিয়ভাবে" দেখছেন এটি সম্ভব।

* নিক্সে, ~আপনার হোম ডিরেক্টরিতে সমাধান করবে। তেমনি ~X'ব্যবহারকারী এক্স' এর সমাধান করবে।

ডিরেক্টরিগুলির জন্য অটোমাউন্টের অনুরূপ, ওপেনডাইরেক্টরি / অ্যাক্টিভ ডিরেক্টরি / এলডিএপি বড় ডিরেক্টরিগুলি ব্যবহারকারীর ডিরেক্টরিতে স্বয়ংক্রিয়ভাবে ব্যবহারকারীর ডিরেক্টরিতে ব্যবহৃত হয়। এই ব্যবহারকারীরা প্রকৃত লোক হতে পারে বা তারা বিভিন্ন বৈশিষ্ট্য সরবরাহ করার জন্য তৈরি মেশিন অ্যাকাউন্ট হতে পারে।

আপনি যদি টাইপ ~Tabকরেন তবে আপনার মেশিনে ব্যবহারকারীর একটি তালিকা দেখতে পাবেন।

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