Another ~ `(হোম ডিরেক্টরি) এর মতো আরেকটি শর্টকাট তৈরি করুন


10

আমি ~~একটি অন্য ডিরেক্টরিতে নির্দেশ করতে চাই যাতে আমি এটি শর্টকাট হিসাবে ব্যবহার করতে পারি। আমি এটির মতো একই কার্যকারিতা রাখতে চাই ~। কিভাবে আমি এটি করতে পারব?




1
@ ভারুন অগা হা হা, মজার বিষয়টি ঠিক যেমনটি আমি একই সমাধানের কথা ভেবেছিলাম ঠিক তেমনটিই পেয়েছি। লজ্জা। আমি ভেবেছিলাম আমি এক মিনিটের জন্য একটি অনন্য প্রজাপতি :(
গ্রেভি

উত্তর:


14

আসলে, একটি উপায় আছে, এটি দুর্দান্ত উপায় নয়, তবে এটি একটি উপায়, হাহাহা!

আপনার /etc/passwdফাইলে নিম্নলিখিতগুলি যুক্ত করুন:

~:x:1111:99:special Character user:/test:/sbin/nologin

1111ইউআইডি হিসাবে এমন কিছু প্রতিস্থাপন করুন যা কিছু অর্থবোধ করে, /testআপনি যে ডিরেক্টরিটি চান তা replace নকল করতে চান replace

99আমার সিস্টেমে সেই nobodyগ্রুপটি হ'ল আমি প্রস্তাব দিই যদি আপনি এটি করেন তবে এটি নিশ্চিত হয়ে নিন যে এটি কোনও গ্রুপে কোনও অনুমতি নেই এমন কোনও গ্রুপ যা কখনও ব্যবহার হবে। তাত্ত্বিকভাবে /sbin/nologinশেল হিসাবে এটি ব্যবহার করতে সক্ষম হবে না, এটিতে একটি /etc/shadowএন্ট্রিও থাকবে না যাতে এটির পাসওয়ার্ড থাকবে না। তাত্ত্বিকভাবে ভাল হতে হবে, তবে নিশ্চিত হয়ে নিন যে এটি কোনওভাবে আপনাকে অ্যাকাউন্ট হিসাবে লগ ইন করতে দেয় না।

পার্শ্ব নোট হিসাবে: আমি কোনওভাবেই বলছি না যে এটি একটি ভাল ধারণা, তবে এটি আপনার পছন্দসই কার্যকারিতাটি সম্পাদন করবে।

সম্পাদনা: সম্পূর্ণতার জন্য এটি বরুণআগ দ্বারা প্রস্তাবিত হয়েছিল: আপনি ব্যবহারকারীর সাথে সাধারণ হিসাবে যোগ করতে পারেন useradd -s /sbin/nologin -N tmpএবং তারপরে সংশোধন করতে /etc/passwdএবং /etc/shadowব্যবহারকারীর স্থান পরিবর্তন tmpকরতে ~এবং এর অবস্থান পরিবর্তন করতে পারেনhome directory


ইউআইডি এবং জিআইডি পরিবর্তনের পরিবর্তে আমরা ঠিক useradd 'tmp'এবং তারপরে প্রতিস্থাপন tmpকরতে পারি~
বরুণআগউ

সত্য। ভাল পরামর্শ। আমি নিশ্চিত নই যে shadowএন্ট্রি দিয়ে বৈধতা দেওয়ার বিষয়ে আমি কীভাবে অনুভব করছি তবে আমি মনে করি যতক্ষণ না কোনও পাসওয়ার্ড সেটাকে কোনও অতিরিক্ত ঝুঁকি না হিসাবে সেট করা হয়।
গ্রেভি

8

আপনি সিডিপ্যাথ ব্যবহার করতে পারেন এবং ~~ আপনার সিডিপ্যাথ উপাদানগুলির একটিতে অক্ষরে অক্ষরে একটি ডিরেক্টরি রাখতে পারেন।

থেকে man bash(তবে সিডিপ্যাথ এমনকি এতে উপলব্ধ sh)

সিডি কমান্ডের জন্য অনুসন্ধানের পথ। এটি ডিরেক্টরিগুলির একটি কোলন দ্বারা পৃথক পৃথক তালিকা যেখানে শেল সিডি কমান্ড দ্বারা নির্দিষ্ট গন্তব্য ডিরেক্টরিগুলি সন্ধান করে। একটি নমুনার মান হ'ল "।: ~: / Usr"।

এটি আপনাকে করতে দেয় cd ~~

vi ~~/someFileডিরেক্টরি গাছের যে কোনও জায়গা থেকে আপনি যদি এমন কিছু করতে চান ~~তবে আপনি যদি নিজের শেলটি হ্যাক না করেন তবে আপনি যদি আক্ষরিকভাবে জোর দিয়ে থাকেন তবে আপনার ভাগ্য বা পরিবেশের পরিবর্তনশীল আপনার যাদু ডিরেক্টরিগুলি সংরক্ষণ করতে ব্যবহার করতে পারেন যাতে আপনি করতে পারেন যেমন,$tilda/someFile

আমি সাধারণত আমার হোম ডিরেক্টরিতে শীঘ্রই নামযুক্ত ডিরেক্টরিগুলির ভিতরে প্রায়শই অ্যাক্সেস করা ফাইলগুলি রাখি যাতে আমি তাদের মতো ~/bবা পাথ দিয়ে অ্যাক্সেস করতে পারি ~/l

স্বাভাবিকভাবেই, আপনি সাধারণত সিমলিংকের সাথে ডিরেক্টরিগুলি আপনার পছন্দ অনুযায়ী ডিরেক্টরিগুলিতে প্রতিস্থাপন করতে পারেন।


1

শেলের ~টিলডের সম্প্রসারণ বেশিরভাগ প্রোগ্রামযোগ্য। এটি এর পূর্ববর্তী প্রসঙ্গে ঘোষিত সিস্টেম ব্যবহারকারীর ব্যবহারকারীর ডিরেক্টরিতে প্রসারিত হয় (এবং এই লাইনগুলির সাথে একটি দুর্দান্ত সমাধান ইতিমধ্যে সরবরাহ করা হয়েছে) , $HOMEশেল ভেরিয়েবলের মান, বা একেবারেই নয়।

তাই:

(HOME=/tmp; cd ~)
pwd; echo "$HOME"

/tmp
/home/mikeserv

আমি $HOMEসমস্ত সময় পরিবর্তন করি এবং এটি পুনরায় সেট করার জন্য আমি আমার শেলের পরিবেশ ফাইলটিতে একটি ফাংশন রাখি:

home(){
    HOME=~$USER
    cd ~; pwd
}

আপনি যদি ~টিল্ডটি এমন কোনও উপায়ে ব্যবহার করতে চান যা আপনার হোম ডিরেক্টরিটি নির্দেশ করে না, তবে এটি করুন । কেবল পুনরায় নিয়োগ দিন $HOME। এটি ভয় পাবেন না। $HOMEঅন্যের মতো কেবল শেল ভেরিয়েবল।


আমার কাছে আরও একটি পরামর্শ হ'ল @ পিএসকোকিকের ব্যবহার সম্পর্কে দুর্দান্ত পরামর্শের সামান্য বিস্তৃতি $CDPATH। একটি জিনিস তিনি উল্লেখ করেন নি, তবে তা হ'ল আপনি $CDPATHবর্তমান শেল মানটি মোটেও পরিবর্তন না করেই ইনলাইনটি ব্যবহার করতে এবং পরিবর্তন করতে পারেন $CDPATH। উদাহরণ স্বরূপ:

mkdir -p /tmp/1/2
CDPATH=/tmp cd 1/2

/tmp/1/2

cdঅগত্যা একটি শেল অন্তর্নির্মিত, তবে এটি কোনও পসিক্স বিশেষ শেল অন্তর্নির্মিত নয়, এবং এর জন্য মান ঘোষণা করা $CDPATHতার বর্তমান শেল মানকে প্রভাবিত করে না। যদি আপনি এটির উপরে যেমন ব্যবহার করেন তবে উপরের $CDPATHমানটি কেবলমাত্র একটি cdকমান্ডের পরিবেশের জন্য পরিবর্তিত হয় এবং এর পরে পূর্ববর্তী মানটিতে পুনরুদ্ধার করা হয়। ইতিহাসের সমাপ্তির সাথে একত্রে ব্যবহার করার সময় আমি উপরের কৌশলটি সর্বাধিক দরকারী বলে খুঁজে পাই। আমি উপরের জিনিসটি করব, একটি ডিরেক্টরিতে পরিবর্তন করব, কয়েকটি কমান্ড চালাব, তারপরে আমি আমার cdকমান্ডটিতে ফিরে না আসা অবধি টিপুন এবং অন্য কোথাও যাওয়ার জন্য দু'একটি পথ অংশকে ব্যাকস্পেসে রেখেছি ।


এখন আপনি যদি এই দুটি ধারণাগুলি একত্রিত করেন তবে আপনি পূর্ববর্তী ব্যবহৃত কমান্ডটিকে পরের বার ব্যবহার করার সময় সম্পূর্ণ আলাদা কিছু বোঝাতে পারেন।

for HOME in /tmp ~
do  mkdir -p ~/1/2
    CDPATH=~ cd 1/2
done

/tmp/1/2
/home/mikeserv/1/2

0

ব্যাশ ফাংশন হিসাবে নিখুঁতভাবে কাজ করে:

$ function ~~ { cd /tmp; }
$ pwd
/home/jackman
$ ~~
$ pwd
/tmp
$ cd -
$ pwd
/home/jackman

এখানে আরেকটি পদ্ধতির সাথে সামান্য কাছাকাছি আসে (আমি জানি যে প্রয়োজনীয়তার সাথে আমি এটিকে কাছে পাচ্ছি না)

function ~~ { echo /test; }

তারপরে আরও কয়েকটি চরিত্রের সাথে:

cd `~~`/subdir
vi `~~`/file

2
ঠিক আছে, cd ~~/foo/barএত ভাল কাজ করছে না vim ~~/foo.txt, ইত্যাদি ...
ডার্বার্ট

1
প্রশ্নটি অস্পষ্ট। যদি এটি পছন্দসই ব্যবহার হয় তবে আমি কেসটি CDPATHপরিচালনা করতে ভেরিয়েবলটি ব্যবহার করব cd
গ্লেন জ্যাকম্যান

এটি সম্পূর্ণ পরিষ্কার নয় বলে সম্মত হন, তবে ওপি এটির মতো কাজ করার জন্য বলে না ~। এবং ~কমান্ডের মতো ব্যবহার করা হয় না।
ডারোবার্ট

আমি এটি পুরোপুরি বানান না থাকলে নিজেকে মোটামুটি বোধগম্য বলে মনে করেছি। সমস্যাটি CDPATHহ'ল এটি .... সিডি-র বাইরের কমান্ডগুলির জন্য কাজ করে না। IE আপনি করতে পারেন cd ~~বা cd ~~/testdir1আপনি করতে পারেন নিvim ~~testdir1
গ্রেভি

আপনি একটি উপাধি যা একটি ফাংশন কল সঙ্গে আরও ভাল করতে পারেন। পছন্দalias cd~='HOME=$OTHER_HOME; home(){ cd -- "$1"; HOME=~$USER; unset -f home;}; home '
মাইকজার্ভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.