Score:4

สคริปต์เพื่อเรียกใช้คำสั่งในเทอร์มินัล จากนั้นเปิดแท็บเทอร์มินัลใหม่และเรียกใช้คำสั่งอื่น

ธง co

ฉันใช้ Ubuntu 21.04 และฉันต้องการสร้างสคริปต์ที่จะทำสิ่งต่อไปนี้:

  1. วิ่ง:

    cd && cd path/to/repo && git pull && npm i && code && npm เรียกใช้ dev
    
  2. จากนั้นเปิดแท็บเทอร์มินัล GNOME ใหม่โดยใช้:

    gnome-terminal -- แท็บ
    
  3. จากนั้นสลับไปที่แท็บนี้แล้วเรียกใช้:

    cd && cd path/to/repo && git reset --hard && git pull -f && npm ฉัน && npm รัน dev
    

โดยพื้นฐานแล้วฉันต้องการเทอร์มินัลหนึ่งเครื่องที่มี 2 แท็บที่เรียกใช้เซิร์ฟเวอร์การพัฒนา 2 เครื่อง

ฉันพยายามกับ xdotool และ xteแต่ก็ไม่ได้ผล (ไม่ได้กดปุ่มด้วยซ้ำ)

เป็นไปได้ไหมที่จะทำในสิ่งที่ฉันต้องการ?

ตามที่แนะนำด้านล่างฉันพยายามมันทำให้ฉัน ไม่สามารถเรียกใช้ซีดี ดังนั้นฉันจึง googled และมีสิ่งต่อไปนี้:

gnome-terminal --tab -- /bin/bash -e -c "cd path/to/repo && ls && git pull && npm i && code . && npm run dev" --tab -- /bin/bash -e -c "เส้นทาง cd/to/repo && git รีเซ็ต --hard && git pull -f && npm ฉัน && npm รัน dev"

แต่ปัญหาก็คือว่า npm เรียกใช้ dev ไม่ควรหยุดทำงาน ดังนั้นแท็บเทอร์มินัลที่สองจึงไม่เคยเปิด และฉันต้องจัดการมันด้วยกัน...

vanadium avatar
cn flag
จนถึงตอนนี้คุณพยายามทำอะไร การเรียกใช้คำสั่งสองลำดับจากบรรทัดคำสั่งของ `gnome-terminal` อาจไม่สามารถทำได้อีกต่อไป เพราะทุกวันนี้คำสั่งใด ๆ จำเป็นต้องต่อท้ายหลังจาก `--` คุณอาจต้องใช้โปรแกรมจำลองเทอร์มินัลอื่นเพื่อให้สามารถตั้งค่าสองเซสชันแบบแท็บได้โดยอัตโนมัติ
terdon avatar
cn flag
หมายเหตุเล็กน้อย: คุณไม่จำเป็นต้องใช้ `cd && cd path/to/repo` `path/to/repo` เป็นพาธแบบเต็ม ดังนั้นคุณเพียงแค่ทำ `cd path/to/repo` หรือถ้าสัมพันธ์กับ `$HOME` ของคุณ คุณก็สามารถทำได้ `cd ~/path/to/repo `.
co flag
ใช่ ฉันรู้เกี่ยวกับ `cd && cd path/to/repo` ตอนนี้ฉันกำลังคัดลอกและวางคำสั่ง ดังนั้นมันจึงเป็นแนวทางของฉันสำหรับ `git pull && npm i && npm run dev` โดยไม่คำนึงถึงไดเร็กทอรีปัจจุบัน
Score:4
ธง cn

แม้ว่า คำพังเพย-terminal แสดงว่า -e ตัวเลือกนี้เลิกใช้แล้ว แต่ยังคงใช้งานได้ใน 3.40.3

# ตัวเลือก â-eâ เลิกใช้แล้วและอาจถูกลบออกใน gnome-terminal เวอร์ชันที่ใหม่กว่า
# ใช้ â-- â เพื่อยุติตัวเลือกและวางบรรทัดคำสั่งเพื่อดำเนินการหลังจากนั้น

ดูเหมือนว่านักพัฒนาจะลืมไปว่านี่เป็นวิธีเดียวที่จะทำสิ่งที่คุณต้องการได้ เช่น ตั้งค่าสภาพแวดล้อมการทำงานต่างๆ ในแท็บโดยอัตโนมัติ ไวยากรณ์ "ใหม่" ที่เพิ่มคำสั่งให้เรียกใช้ที่ส่วนท้ายของตัวเลือกหลังจากนั้น -- ไม่อนุญาตให้ทำเช่นนั้น เมื่อ -e ตัวเลือกถูกลบออก คุณจะต้องย้ายไปที่โปรแกรมจำลองเทอร์มินัลอื่นสำหรับสิ่งนี้

ตัวอย่างเช่นสิ่งนี้ยังคงใช้งานได้จนถึงตอนนี้:

gnome-terminal --tab -e "htop" --tab -e "ด้านบน"

แทนที่คำสั่ง ท็อป และ สูงสุด โดยสคริปต์ที่คุณกำหนดเอง

co flag
Seems about to work, but it fires an error: ```# Error: Failed to execute child process “cd”: Failed to execve: No such file or directory # Error: Failed to execute child process “cd”: Failed to execve: No such file or directory``` but it does work with `gnome-terminal --tab -e "ping goo.gl"` why can't it run `cd` in there?...
Score:0
ธง co

ดังนั้นเนื้อหาของสคริปต์ sh คือ:

gnome-terminal --tab --title='frontend' -e "bash -c 'cd path/to/repo && git pull && npm i && code . && npm run dev'";
gnome-terminal --tab --title='backend' -e "bash -c 'cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev'"

ขอบคุณ @vanadium ที่ช่วยค้นหาทิศทางของ googling ;)

มันทำงานได้ตามที่ตั้งใจไว้ ถ้าฉันเปิดเทอร์มินัลแล้วเขียน sh myScript.sh มันจะเปิดแท็บพิเศษ 2 แท็บโดยมีการเรียกใช้ backend และ frontend repos

ปัญหาเล็กน้อยคือถ้าฉันเรียกใช้ไฟล์ sh โดยดับเบิลคลิก มันจะเปิดหน้าต่างเทอร์มินัล 2 หน้าต่าง (น่าเกลียด ฉันต้องการแท็บ)

ไม่รู้วิธีแก้ไขจริงๆ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา