ฉันจะเปิดไฟล์จากภายในสคริปต์ทุบตีได้อย่างไร


22

ตกลงทำงานgedit myfile.txtได้ดี แต่สิ่งที่เกี่ยวกับการเปิดไฟล์จากภายในสคริปต์ทุบตีโดยใช้แอปเดสก์ทอปเริ่มต้นที่เชื่อมโยงกับประเภทไฟล์?

ฉันพยายามด้านล่างซึ่งใช้งานได้ดีเมื่อทำงานด้วยตนเองในเทอร์มินัล แต่เมื่อฉันวางไว้ในไฟล์ทุบตีไม่มีอะไรเกิดขึ้น:

#!/bin/bash
xdg-open "myfile.txt"&

ฉันควรทำอย่างไรดี

โปรดทราบว่าฉันต้องการไฟล์ที่จะเปิดอยู่หลังจากเทอร์มินัลปิดเช่นกัน


1
ลองระบุเส้นทางของไฟล์ .. และคุณแน่ใจหรือว่าควรจะอยู่กับเครื่องหมายคำพูด? ลองโดยไม่ใส่เครื่องหมายคำพูด
abhishek

7
คุณแน่ใจหรือว่าคำสั่งไม่ทำอะไรเลย? ฉันเพิ่งสร้างสคริปต์ที่มีเนื้อหาที่คุณอยู่ในรายการและมันจะเปิดขึ้นgeditพร้อมกับไฟล์ที่แสดงรายการ (หรือเปิดแท็บใหม่ในเซสชันที่มีอยู่) มันจะกลับมาทันทีแทนที่จะปิดกั้นจนกว่าโปรแกรมจะออก
James Henstridge

3
นอกจากนี้คุณได้รับข้อผิดพลาดอะไรบ้างเมื่อเรียกใช้สคริปต์จากเทอร์มินัล
Takkat

อ๋อ ฉันใช้เส้นทางแบบเต็มไปยังไฟล์ในสคริปต์ของฉัน แต่ลบที่นี่เพื่อชี้แจง ไม่มีความแตกต่างกับหรือไม่มีคำพูด ฉันได้พยายามxtg-openใน*.txt, *.htmlและอื่น ๆ - เพียงทำงานตามปกติ
อุตสาหกรรม

5
@ Bhishek: ไม่มีกรณีที่คำพูดเป็นอันตรายในสถานการณ์เช่นนี้และมีหลายกรณีที่คำพูดที่ละเว้นอาจทำให้เกิดปัญหาได้ เป็นวิธีปฏิบัติที่ดีในการสร้างนิสัยของการอ้างถึงสตริงทั้งหมดเสมอแม้ในกรณีที่ไม่จำเป็นเว้นแต่คุณจะมีเหตุผลเฉพาะที่ไม่ควรทำ
Scott Severance

คำตอบ:


16

ฉันคิดว่าสคริปต์ของคุณควรใช้งานได้ แต่คุณอาจเพิ่มบางสิ่งลงไปเพื่อรับข้อมูลเพิ่มเติม:

#!/bin/bash
T=`xdg-mime query filetype $1`
echo "opening file "  $1  " of type " $T "with " `xdg-mime query default $T`
xdg-open $1
echo "finished script"

เมื่อเรียกใช้สคริปต์นี้ (ชื่อ my_open.sh) ในเทอร์มินัลเช่นนี้:

my_open.sh path/to/somefile.txt

ฉันได้รับผลลัพธ์ต่อไปนี้:

opening file  path/to/somefile.txt  of type  text/plain with  gedit.desktop
finished script

ซึ่งบอกฉันว่าเส้นทางไปยังไฟล์นั้นตกลง mimetype ได้รับการยอมรับและ desktopfile ซึ่งใช้ในการเปิดไฟล์ก็โอเคเช่นกัน และ gedit จะเปิดขึ้นพร้อมกับไฟล์ที่เป็นปัญหา

ตอนนี้เมื่อทำงานกับไฟล์อื่น:

my_open.sh path/to/README

ฉันได้รับผลลัพธ์ต่อไปนี้:

opening file  path/to/README  of type  text/x-readme with
finished script

หมายเหตุชนิด mime ที่แตกต่างกันและแฟ้มเดสก์ท็อปที่ขาดหายไป อย่างไรก็ตาม xdg-open เปิดค่าเริ่มต้นสำหรับไฟล์ข้อความทั้งหมด (gedit)

ดังนั้นคุณอาจต้องการเพิ่มสิ่งนี้ในสคริปต์ของคุณและดูว่าคุณได้รับผลลัพธ์ที่ไม่คาดคิด (ซึ่งคุณสามารถเพิ่มคำถามของคุณ ... )


ดียกเว้นเสียงดังfinished scriptในตอนท้าย ฉันแนะนำ [ catb.org/~esr/writings/taoup/html/ อักขระ (ศิลปะแห่งการเขียนโปรแกรม Unix) กฎแห่งความเงียบงัน Btw.: การคัดค้านถูกคัดค้าน - ชอบ $ (... ) แทนซึ่งซ้อนกันได้
ผู้ใช้ที่ไม่รู้จัก

2
ดีสคริปต์มีวัตถุประสงค์เพื่อให้ข้อมูลเพิ่มเติม ข้อมูลที่ได้รับจาก 'สคริปต์ที่เสร็จสิ้น' คือคุณไม่ต้องการnohupหรือ&แต่xdg-openจะส่งคืนและให้คุณดำเนินการต่อ
xubuntix

นั่นคือสิ่งที่พรอมต์มีไว้สำหรับ
ผู้ใช้ที่ไม่รู้จัก

3
จริง แค่คิดว่ามันจะชัดเจนกว่านี้ อันที่จริงแล้วไม่จำเป็นต้องใช้สคริปต์ทั้งหมดเพราะมันไม่ได้ทำมากกว่าxdg-openนี้ดังนั้นนี่จึงไม่ใช่สคริปต์คุณภาพการผลิต ...
xubuntix

5

ทำสคริปต์ทุบตี test.sh เป็น:

#!/bin/bash
gedit myfile.txt

จากนั้นทำให้สคริปต์เรียกใช้งานเป็น:

chmod +x test.sh

ในที่สุดเรียกใช้สคริปต์เป็น:

./test.sh

ขอบคุณสำหรับคำตอบของคุณ แต่น่าเสียดายที่ฉันต้องเปิดโปรแกรมแก้ไขไฟล์เริ่มต้นของ GNOME สำหรับไฟล์ดังกล่าวข้างต้น
อุตสาหกรรม

3

อาจเป็นgnome-openแทนxdg-open


ฉันพบว่าวิธีนี้ใช้งานได้ดีที่สุด
Jon

เกิดอะไรขึ้นถ้าผู้ใช้ไม่ได้อยู่ใน Gnome
Goddard

2

คุณกำลังไปในทิศทางที่ถูกต้อง หากคุณต้องการให้แอพ gui เปิดอยู่เมื่อคุณปิดหน้าต่างเทอร์มินัลคุณเพียงแค่เพิ่มแอปnohupที่จุดเริ่มต้นของบรรทัด

#!/bin/bash
nohup xdg-open "myfile.txt"&

หากแอป gui ไม่ได้เปิดอาจเป็นเพราะคุณไม่ได้DISPLAYตั้งค่าตัวแปรสภาพแวดล้อมในเปลือกคุณพยายามที่จะเปิดมัน ลองทำเสียงสะท้อน$DISPLAY


3
xdg-open ไม่ต้องการnohupหรือ&
xubuntix

0

ส่วนแรกของคำถามของคุณ

ด้วยคำสั่งcatคุณสามารถเปิดไฟล์ภายในเทอร์มินัลหากเป็นสิ่งที่คุณต้องการ (มันระบุไว้ในส่วนแรกของคำถามของคุณ)

เพื่อใช้งานคุณสามารถพิมพ์cat FILENAMEได้

ข้อมูลอื่น ๆ

หากคุณต้องการคำสั่งเพิ่มเติม: นี่คือรายการคำสั่งที่ดี

โปรแกรมแก้ไขเริ่มต้นของ GNOME

geditหากคุณต้องการที่จะเปิดไฟล์ในโปรแกรมประยุกต์เริ่มต้นของ GNOME

เพื่อใช้งานเพียงพิมพ์ gedit FILENAME


ที่เปิดไฟล์ในเทอร์มินัล แต่ไม่ใช่ตัวแก้ไขปริยายของ GNOME
Industrial

@industrial แก้ไขคำตอบของฉัน
อัลวาร์

แต่น่าเสียดายที่เปิดจะไม่ทำงานอย่างใดอย่างหนึ่ง ...
อุตสาหกรรม

@ อุตสาหกรรมคุณจะขออะไร อธิบายคำถามของคุณเพิ่มเติม! คุณพูดสิ่งที่แตกต่างกันและฉันได้ตอบหนึ่งของพวกเขา แต่คุณบอกว่าคุณไม่ต้องการที่จะใช้มัน ...
อัลวาร์

@Industrial เครื่องมือแก้ไขข้อความเริ่มต้นใน GNOME คือ gedit aka "โปรแกรมแก้ไขข้อความ" ดังนั้นหากคุณเรียกใช้gedit file.filetypeคุณจะเปิดไฟล์ตามที่คุณต้องการ!
อัลวาร์

0

แม้ว่าฉันจะไม่แน่ใจว่าสิ่งใดที่จะทำให้สำเร็จที่นี่จริง ๆ และอิงตามความคิดเห็นล่าสุดว่าสคริปต์เดียวควรเปิดไฟล์ใดก็ได้ในแอปเริ่มต้นหรือขยายขอบเขตแอปที่รองรับสิ่งนี้

ถ้างั้นวิธีที่ง่ายที่สุดในการทำเช่นนั้นก็คือการเปิดเทอร์มินัล & ไปยังชื่อสคริปต์ / พา ธ / ไปยัง / ชื่อไฟล์หรือหากมีช่องว่างใด ๆ ในพา ธ ดังนั้นชื่อสคริปต์ '/ path / to / filename'

cd; mkdir -p bin && gedit ~/bin/openit1

ใช้สิ่งนี้เป็นสคริปต์คุณสามารถใช้ชื่อใด ๆ ที่คุณต้องการสำหรับสคริปต์ฉันจะใช้ openit1 เป็นตัวอย่าง เป็นการดีที่สุดเมื่อใช้สคริปต์โดยตรงจาก ~ / bin เพื่อเพิ่มตัวเลขในชื่อจึงไม่ขัดแย้งกับคำสั่ง linux ที่มีอยู่

#!/bin/bash
xdg-open "$1"

ปิด gedit & ในเทอร์มินัล

chmod u+x ~/bin/openit1

รีสตาร์ทเพื่อเพิ่ม ~ / bin ใน $ PATH ของคุณ

หากต้องการเรียกใช้เปิดเทอร์มินัลแล้วไป

openit1 /path/to/filename or openit1 'path/to/filename' 

IF ตามที่ระบุไว้และใช้ orig สคริปต์สำหรับไฟล์หนึ่งไฟล์ต่อสคริปต์และเรียกใช้โดย d คลิกซ้ายที่สคริปต์คุณเพียงแค่ต้องเลือก " Run " แทน "Run in Terminal"


Restart to add ~/bin to your $PATH- เอ่อนิสัย Windows เก่า ๆ ;)
ผู้ใช้ที่ไม่รู้จัก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.