อีกวิธีหนึ่งคือการสร้างคำสั่งของคุณเองโดยเฉพาะสำหรับวัตถุประสงค์นี้ สิ่งนี้สามารถทำได้ผ่านฟังก์ชั่นซึ่งอาจมีลักษณะ:
$ function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
โดยที่: (1) mv-special
เป็นชื่อฟังก์ชัน (2)ตัวแปร$1
และ$2
ข้อโต้แย้งในการทำงานที่จะถูกใช้โดยคำสั่งmv
และcd
; (3) $(echo $2-)
เพิ่มอักขระ wildcat ที่ส่วนท้ายของสตริงใน 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
ในสถานการณ์นี้