เป็นไปได้ไหมที่จะสร้างชื่อแทนทราย?


8

ฉันกำลังมองหาวิธีที่จะทำให้ชื่อแทนต่อไปนี้ใช้ได้กับชื่อไฟล์ใด ๆ

alias dim='cd /home/jason/Documents; vim *the desired file*; cd'

ฉันสงสัยว่ามีวิธีที่ฉันสามารถเปลี่ยนชื่อแทนนี้เพื่อให้ฉันสามารถพิมพ์ชื่อไฟล์ใด ๆ เช่น:

dim *the desired file*

และยังคงได้ผลเหมือนเดิม โดยทั่วไปมีวิธีเรียกสิ่งใดก็ตามที่พิมพ์หลังจากชื่อนามแฝงเป็นชื่อแทนเอง สิ่งที่ต้องการ:

alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'

//, จุดประสงค์ของสิ่งนี้คืออะไร?
นาธาน Basanese

คำตอบ:


8

ไม่คุณไม่สามารถทำได้โดยใช้นามแฝงของเชลล์ คุณต้องใช้ฟังก์ชั่น

นี่เป็นฟังก์ชั่นง่าย ๆ ในการทำงาน:

dim() {
cd /home/jason/Documents
vim "$1"
cd
}

ฟังก์ชั่นdimจะใช้ชื่อไฟล์เป็นอาร์กิวเมนต์ คุณสามารถวางข้อมูลโค้ดนี้ไว้ท้าย~/.bashrcไฟล์แล้วเรียกใช้เป็น:

dim file.txt

แทนที่file.txtด้วยชื่อไฟล์ใด ๆ ที่คุณต้องการ

เพื่อให้ทำงานได้จากเซสชั่นเปลือกปัจจุบันไฟล์แรก:source~/.bashrc

. ~/.bashrc

3
"$ 1" มีความหมายอะไร ฉันเป็นผู้เริ่มต้นและพยายามที่จะเรียนรู้มากกว่าเพียงแค่คัดลอกวางและเรียกมันว่าวัน
Jason Basanese

1
@ JasonBasanese ฉันขอขอบคุณการตัดสินใจของคุณ :) $1ระบุพารามิเตอร์ตำแหน่งหรืออาร์กิวเมนต์แรกของฟังก์ชั่น .. คิดว่ามันเป็นวิธีการให้ข้อมูลกับฟังก์ชั่นหรือสคริปต์ .. เช่นภาษาการเขียนโปรแกรมทั้งหมดbashนี้ใช้ .... คุณจะ ค้นหาแหล่งข้อมูลมากมายเกี่ยวกับเรื่องนี้ใน Google ..
heemayl

3

ไม่ใช่กับนามแฝงใช้ฟังก์ชันแทน

จากหน้าBash man :

นามแฝง

[... ] ไม่มีกลไกในการใช้อาร์กิวเมนต์ในข้อความแทนที่ หากจำเป็นต้องมีอาร์กิวเมนต์ควรใช้ฟังก์ชั่นเชลล์ (ดูFUNCTIONSด้านล่าง)

ดังนั้นฟังก์ชั่นของคุณอาจเป็น:

ฟังก์ชั่นสลัว () {cd ~ jason / Documents; เป็นกลุ่ม $ *; cd -;}


1
จะไม่ ~ / เอกสารทำงานได้ดีในกรณีนี้? นอกจากนี้สัญลักษณ์ $ และ * หมายถึงอะไรในกรณีนี้ และ - หลังจากแผ่นซีดีจำเป็นหรือไม่ โดยปกติฉันสามารถพิมพ์ cd และมันจะไปยังไดเรกทอรี
Jason Basanese

“ โดยปกติฉันสามารถพิมพ์ cd แล้วมันจะไปยังไดเร็กตอรี่” - ฉันรู้แค่ว่าcdจะนำคุณไปยังโฮมไดเร็กตอรี่ของคุณ; cd ..ไปหนึ่งระดับขึ้นไป cd -นำคุณไปยังไดเรกทอรีก่อนหน้าซึ่งคุณcdได้ทำการแก้ไข
Chriki

1
@JasonBasanese: ใช่ ~ / เอกสารจะใช้ได้กับทุกคน (ถ้าเป็นฟังก์ชั่นสำหรับผู้ใช้ทุกคน) $*เป็น$1 $2 $3...เพียงเพื่อให้รายการทั้งหมดเป็นกลุ่มไม่ใช่อาร์กิวเมนต์แรกที่คุณพิมพ์ และอย่างที่ Chriki พูดไว้cd -จะกลับไปยังไดเรกทอรีก่อนหน้า (อันที่คุณเคยใช้เมื่อคุณเรียกใช้ฟังก์ชัน)
CijcoSistems
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.