শুধু এটি ঠিক করা
এই কমান্ডটি একটি ত্রুটি বার্তা "ERROR: এক্সট্রাক্ট: পাথ অবশ্যই পরম হতে হবে" দেখায়:
./cuda_6.5.14_linux_64.run -extract=~/Downloads/nvidia_installers
ত্রুটিটি সহায়ক নয় - প্রোগ্রামামটি ইতিমধ্যে খুব বিভ্রান্ত হয়েছিল।
আপনি ইতিমধ্যে জানেন যে ত্রুটিটি এর থেকে রয়েছে ~
, কারণ এটি $HOME
পরিবর্তে কাজ করে।
সমস্যা: ~
কেবল একটি শব্দের শুরুতে প্রতিস্থাপন করা হয়।
উদাহরণস্বরূপ, এটি টিলডের সাথে কাজ করে:
echo -extract ~/Downloads
আপনার যদি বাক্সের বিকল্প বাক্যাংশের প্রয়োজন হয় তবে এর =
পরিবর্তে OME HOME ব্যবহার করা ~
সবচেয়ে পরিষ্কার সমাধান;
echo -extract=$HOME/Downloads
অনুশীলন
আপনার যা জানা উচিত:
~
একটি শব্দের শুরুতে না হয়ে যখন গেমগুলি প্রসারিত হয় সেখানে বিশেষ ক্ষেত্রে রয়েছে : ভেরিয়েবল অ্যাসাইনমেন্টের অংশ হিসাবে, সরাসরি পরে =
। যা অবশ্যই এখানে বিভ্রান্তিকর।
PATH এর মতো ভেরিয়েবলগুলির সাথে ব্যবহারের জন্য এটি অন্যান্য গুরুত্বপূর্ণ বিশেষ ক্ষেত্রে। চলক কার্যক্রমে, প্রথমটির মতো পরেও ~
প্রসারিত হয় ।:
=
$ dir=~ sh -c 'echo D2: $dir'
D2: /home/user
$ sh -c 'echo D2: $dir' dir=~
D2:
$ echo Dir: $dir
Dir:
$ dir=~; sh -c 'echo D2: $dir'
D2:
$ echo Dir: $dir
Dir: /home/user
$ sh -c 'echo D2: $dir'; d3=~
D2:
$ echo d3: $d3
d3: /home/user
টিলডের অর্থ
একটি শেল, ~
টিল্ড আসলে একটি পথ নয়। এটি কেবল কোনও পথ দ্বারা প্রতিস্থাপন করা হয় $HOME
, কিছু সময়।
এটি শর্টহ্যান্ড, বা সংক্ষিপ্তসার মতো কিছু যা শেল সরবরাহ করে।
এটি সাধারণভাবে কোনও পথের মতো ব্যবহার করা যায় না, শেলটি এটি কেবল খুব বিশেষ জায়গায় কোনও পাথে "প্রসারিত" করে।
এমনকি এটি প্রসারিত হলেও, এটি হোম ডিরেক্টরি ছাড়া অন্য কোনও কিছুর জন্য হতে পারে।
- এটি কেবল একটি শব্দের শুরুতে বা একটি বা পরে চলক কার্যক্রমে প্রসারিত হয়
:
=
- এটি কেবল প্রসারিত হয় যদি এটি উদ্ধৃতিগুলির মধ্যে না থাকে
- এটি কেবল তখনই প্রসারিত হবে
$HOME
যদি ক এর আগে শব্দের কোনও অক্ষর না থাকে/
কমান্ড লাইনে সমস্যা
এই অনুসারে, আপনার কমান্ডের সমস্যাটি হ'ল টিল্ড ইন
-extract=~/Downloads/nvidia_installers
এটি প্রসারিত নয়, কারণ এটি তালিকাভুক্ত কেসের একটি নয় not এখানেই শেষ.
সমাধানটি হ'ল টিল্ডকে শব্দের প্রথম অযোগ্য অক্ষর তৈরি করা, অন্য কোনও চরিত্রের সাথে পরবর্তী কোনও চিহ্ন নেই /
- বিকল্পের যুক্তির আগে কোনও স্থানের সাথে কোনও বিকল্প ব্যবহার করার সময় আপনি কেবল এটি পাবেন:
-extract ~/Downloads/nvidia_installers
$HOME
পরিবর্তে আরেকটি সমাধান ব্যবহার করা হবে। একটি স্ক্রিপ্টে, এটি সাধারণত আরও ভাল পছন্দ।
-extract=$HOME/Downloads/nvidia_installers
ত্রুটি বার্তা
কিন্তু ত্রুটি বার্তাটি কীভাবে হয়
"ERROR: extract: path must be absolute."
?
এই সব মধ্যে ফিট?
আমরা জানি যে টিল্ডটি প্রসারিত হয়নি। এর মানে হল যে প্রোগ্রামটি যুক্তিসঙ্গত পাঠ্য সহ পেয়েছে ~
, তবে /home/auser
সেই পথ হিসাবে। সেই পথটি ~/Downloads/nvidia_installers
- তবে এখন কোনও শেল নেই, তাই টিলডের কোনও বিশেষ অর্থ নেই। এটি একটি সাধারণ ডিরেক্টরি নাম name এবং ফর্মের অন্যান্য প্রতিটি পথের মতো foo/bar/baz
এটিও একটি আপেক্ষিক পথ
অন্যান্য ব্যবহার
উপরের অন্যান্য সমস্ত বিধি প্রয়োগের সাথে ~
যেমন এর পরেও অক্ষরগুলি থাকে ~alice
- এবং সেখানে একটি ব্যবহারকারীর নাম রয়েছে alice
যা তার alice
পরিবর্তে হোম ডিরেক্টরিতে প্রসারিত হবে, বলুন home/alice
।
এছাড়াও, যদি আপনি bob
, ~
প্রসারিত হবে /home/bob
, এবং ~bob
একই প্রসারিত হবে।
বৈকল্পিকটি ~+
বর্তমান ডিরেক্টরিতে প্রসারিত হয়েছে,$PWD
পূর্ববর্তী ডিরেক্টরি, যেখানে আপনি শেষ পূর্বে ছিল উল্লেখ করতে cd
, আপনি ব্যবহার করতে পারেন ~-
, যা প্রসারিত হয় $OLDPWD
।
আপনি যদি ব্যবহার করেন pushd
এবং popd
পরিবর্তে cd
, আপনি ইতিমধ্যে জানবেন যে ডিরেক্টরি স্ট্যাকের মতো অ্যাক্সেস করা যেতে পারে ~-2
।
বিস্তারিত
সমস্ত ক্ষেত্রে যেখানে ~
কোনও পথে প্রসারিত হয় সেগুলি শেল দ্বারা পরিচালিত হয় । অন্যান্য প্রোগ্রামগুলির জন্য, ~
কেবলমাত্র একটি সাধারণ ফাইলনাম অক্ষর।
শেলের অভ্যন্তরের সঠিক সংজ্ঞাটির জন্য , এখানে
নোটের প্রাসঙ্গিক বিভাগটি উল্লেখ করা হয়েছে যে কতগুলি ক্ষেত্রে কেবল একটি বিশেষ কেস দ্বারা প্রতিস্থাপন করা হয়েছে : "এই লগইন নামটি যদি নাল স্ট্রিং হয় তবে শিল প্যারামিটার হোমের মান দিয়ে টিল্ড প্রতিস্থাপন করা হবে। " :man bash
~
$HOME
Tilde Expansion
If a word begins with an unquoted tilde character (`~'), all of the charac‐
ters preceding the first unquoted slash (or all characters, if there is no
unquoted slash) are considered a tilde-prefix. If none of the characters
in the tilde-prefix are quoted, the characters in the tilde-prefix follow‐
ing the tilde are treated as a possible login name. If this login name is
the null string, the tilde is replaced with the value of the shell parame‐
ter HOME. If HOME is unset, the home directory of the user executing the
shell is substituted instead. Otherwise, the tilde-prefix is replaced with
the home directory associated with the specified login name.
If the tilde-prefix is a `~+', the value of the shell variable PWD replaces
the tilde-prefix. If the tilde-prefix is a `~-', the value of the shell
variable OLDPWD, if it is set, is substituted. If the characters following
the tilde in the tilde-prefix consist of a number N, optionally prefixed by
a `+' or a `-', the tilde-prefix is replaced with the corresponding element
from the directory stack, as it would be displayed by the dirs builtin
invoked with the tilde-prefix as an argument. If the characters following
the tilde in the tilde-prefix consist of a number without a leading `+' or
`-', `+' is assumed.
If the login name is invalid, or the tilde expansion fails, the word is
unchanged.
Each variable assignment is checked for unquoted tilde-prefixes immediately
following a : or the first =. In these cases, tilde expansion is also per‐
formed. Consequently, one may use filenames with tildes in assignments to
PATH, MAILPATH, and CDPATH, and the shell assigns the expanded value.