एक और तरीका यह है कि इस उद्देश्य के लिए अपनी खुद की कमांड समर्पित करें। इसे फंक्शन के माध्यम से किया जा सकता है जो इस तरह दिख सकता है:
$ function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
कहां: (1) mv-special
फ़ंक्शन का नाम है; (2) चर $1
और $2
फ़ंक्शन में तर्क हैं जो कमांड द्वारा उपयोग किए जाएंगे mv
और cd
; (3) $(echo $2-)
var में स्ट्रिंग के अंत में एक वाइल्डकैट वर्ण जोड़ता है $2
, और व्यवहार को ठीक करता है dirname
यदि चर $2
में केवल पथ होता है; (4) $(dirname $(echo $2-))
से केवल पथ फ़िल्टर करेगा $2
।
इस उत्तर के अनुसार फ़ंक्शन ऐसा लग सकता है:
$ function mv-special { mv $1 $2; cd ${2%/*}; }
कहां: ${2%/*}
केवल रास्ते से फिल्टर करेगा $2
।
कमांड के रूप में उपलब्ध होने के लिए यह फ़ंक्शन निर्यात किया जाना चाहिए :
$ export -f mv-special
उपयोग:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf
या:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/
कृपया उस पर ध्यान दें - दोनों प्रकारों के लिए - दूसरा तर्क ( $2
) फ़ाइलनाम या स्लैश ( /
) के साथ पूरा होना चाहिए ।
हमारे नए कमांड स्थायी रूप से उपलब्ध होने के लिए, फ़ंक्शन और एक्सपोर्ट कमांड की परिभाषा को संलग्न किया जाना चाहिए ~/.bashrc
:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
export -f mv-special
या:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd ${2%/*}; }
export -f mv-special
कस्टम कमांड बनाया जा सकता है और निष्पादन योग्य स्क्रिप्ट फ़ाइल के माध्यम से जो इसमें रखा गया ~/bin
है /usr/sbin
: मैं कस्टम टर्मिनल कमांड (स्क्रिप्ट चलाने के लिए) कैसे बना सकता हूं? लेकिन ईमानदार होने के लिए, मुझे इस परिदृश्य के व्यवहार से परेशानी का सामना करना पड़ा cd
।