Score:2

Open Ubuntu terminal using batch file on windows with command?

ธง cn

I automate many processes on windows using batch files and putty.

E.g ( login_server7.bat ):

start C:\Users\Jack\Documents\putty.exe -ssh 1.1.1.1 -l user123 -pw "bleh"

How am I able to start an Ubuntu terminal and run a command automatically after opening a file?

Rather than manually opening the ubuntu terminal and typing my commands in?

Cannot see anything elsewhere on this topic. Regards

Score:2
ธง cn

ปฏิบัติการของ WSL คือ C:\Windows\System32\wsl.exe. คุณสามารถพิมพ์ wsl ในพรอมต์คำสั่งของ Windows และคุณจะลงชื่อเข้าใช้อินสแตนซ์ WSL เริ่มต้น หรือพิมพ์ wsl -h เพื่อรับรายการตัวเลือกที่มีทั้งหมด ในแบตช์ไฟล์คุณสามารถใช้:

C:\Windows\System32\wsl.exe <สคริปต์หรือคำสั่งของคุณ>

หรือถ้าคุณต้องการรันคำสั่งในฐานะรูท:

C:\Windows\System32\wsl.exe sudo <สคริปต์หรือคำสั่งของคุณ>

น่าจะใช้วิธีที่ถูกต้องมากกว่า wsl -e -- <คำสั่ง>แต่ด้านบนใช้งานได้ดีสำหรับฉัน นี่คือตัวอย่างโดยละเอียดเพิ่มเติม: Ubuntu 18.04 บน WSL cron daemon ไม่ทำงานหลังจากรีบูต.

Score:2
ธง vn

เนื่องจาก ps4080คำตอบของกล่าวถึงวิธีที่ถูกต้องในการทำเช่นนี้คือ wsl -e -- <คำสั่ง> (หรือโดยทั่วไป wsl -e <คำสั่ง>).

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

wsl <คำสั่ง>

  • เรียกใช้เชลล์เริ่มต้นสำหรับผู้ใช้ปัจจุบัน
  • ... เป็นเชลล์ที่ไม่ได้เข้าสู่ระบบและไม่มีการโต้ตอบ
  • ... ในไดเร็กทอรีที่ส่งผ่านโดยกระบวนการ Windows ที่เป็นเจ้าของ
  • วิ่ง <command> ในเปลือกหอยนั้น

คุณสามารถดูสิ่งนี้ได้ด้วยทั้งนี้ขึ้นอยู่กับเปลือกของคุณ wsl ps -eH:

  PID TTY เวลา CMD
    1 ? 00:00:00 น
   18 ? 00:00:00 น
   19 ? 00:00:00 น
   20 แต้ม/0 00:00:00 ปลา
   28 แต้ม/0 00:00:00 น

โปรดทราบว่าเป็นเรื่องยากที่จะเห็นสิ่งนี้เมื่อ ทุบตี เป็นเชลล์เริ่มต้นของคุณตั้งแต่ -ค ส่งผลโดยปริยาย ผู้บริหาร.

ความจริงที่ว่าสิ่งนี้ทำงานในไดเร็กทอรีของกระบวนการ Windows ที่เป็นเจ้าของนั้นมีประโยชน์ เนื่องจากคุณสามารถทำได้:

wsl ls -lh

... ใน PowerShell เพื่อรับขนาดไฟล์ที่ "มนุษย์อ่านได้" ซึ่งก็คือ ทำได้ยากอย่างน่าประหลาดใจ มิฉะนั้น.

ส่วนที่ยากที่สุดของสิ่งนี้คือรอบคัดเลือกที่สอง WSL เรียกใช้เชลล์ของคุณเป็นเชลล์ที่ไม่ได้เข้าสู่ระบบและไม่ใช่การโต้ตอบเมื่อเริ่มต้นด้วยวิธีนี้ นี่หมายความว่า ~/.bashrc และ ~/.bash_profile เป็น ไม่ ที่มาเมื่อเริ่มต้น ซึ่งอาจทำให้เกิดความสับสนเมื่อพยายามเรียกใช้คำสั่งที่ต้องดำเนินการบางอย่างในไฟล์เริ่มต้น (เช่น การตั้งค่าตัวแปรสภาพแวดล้อม)

wsl -e <คำสั่ง>

  • วิ่ง <command> เช่น เปลือก
  • ... ในไดเร็กทอรีที่ส่งผ่านโดยกระบวนการเป็นเจ้าของ

เดอะ -e บายพาสเชลล์เริ่มต้นของคุณทั้งหมด

> wsl ps -eH
  PID TTY เวลา CMD
    1 ? 00:00:00 น
    7 ? 00:00:00 น
    8 ? 00:00:00 น
    9 แต้ม/0 00:00:00 น

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

wsl -e bash -lic <คำสั่ง>

  • วิ่ง ทุบตี เป็นเชลล์ของคุณ (ไม่ว่าจะเป็นเชลล์เริ่มต้นหรือไม่ก็ตาม)
  • บังคับให้เป็นการเข้าสู่ระบบ, เชลล์แบบโต้ตอบ (-ลิ) ดังนั้น ~/.bashrc และ ~/.bash_profile (และ/หรืออื่นๆ) มีที่มา
  • ... ในไดเร็กทอรีที่ส่งผ่านโดยกระบวนการ Windows ที่เป็นเจ้าของ
  • วิ่ง <command> ในเปลือกหอยนั้น

นี่เป็นเวอร์ชันที่จะใช้หากคำสั่งต้องการอะไรจากการกำหนดค่าเริ่มต้นของคุณ

โพสต์คำตอบ

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