Ngay cả khi bạn biết những gì bạn đang làm, điều này không nhất thiết đơn giản như nó có vẻ. Windows và UNIX sử dụng các ký tự cuối dòng khác nhau và hệ thống tệp Windows có thể truy cập ở một vị trí khác trong môi trường Bash.
Làm thế nào để viết một kịch bản Bash trên Windows 10
Khi viết các kịch bản shell trên Windows, hãy nhớ rằng các hệ thống giống như Windows và UNIX như Linux sử dụng các ký tự “cuối dòng” khác nhau trong các tệp văn bản trong các kịch bản lệnh shell.
Nói cách khác, điều này có nghĩa là bạn không thể viết kịch bản lệnh shell trong Notepad. Lưu tệp trong Notepad và nó sẽ không được Bash giải nghĩa đúng cách. Tuy nhiên, bạn có thể sử dụng các trình soạn thảo văn bản nâng cao hơn - ví dụ, Notepad ++ cho phép bạn cung cấp một tệp UNIX ký tự cuối dòng bằng cách nhấp vào Chỉnh sửa> Chuyển đổi EOL> Định dạng UNIX / OSX.
Ví dụ: để tạo tập lệnh bash bằng nano, bạn sẽ chạy lệnh sau trong bash:
nano ~/myscript.sh
Thao tác này sẽ mở trình soạn thảo văn bản Nano chỉ vào tệp có tên “myscript.sh” trong thư mục chính của tài khoản người dùng của bạn. (Ký tự "~" đại diện cho thư mục chính của bạn, vì vậy đường dẫn đầy đủ là /home/username/myscript.sh.)
#!/bin/bash
Nhập các lệnh bạn muốn chạy, mỗi lệnh trên một dòng riêng. Kịch bản sẽ chạy mỗi lệnh lần lượt. Thêm ký tự "#" trước một dòng để coi nó là "nhận xét", một thứ giúp bạn và những người khác hiểu được tập lệnh nhưng không chạy dưới dạng lệnh. Để biết thêm các thủ thuật nâng cao, hãy tham khảo hướng dẫn chi tiết hơn về các tập lệnh Bash trên Linux. Các kỹ thuật tương tự sẽ hoạt động trong Bash trên Ubuntu trên Windows.
Lưu ý rằng không có cách nào để chạy các chương trình Windows từ bên trong môi trường Bash. Bạn bị hạn chế đối với các lệnh và tiện ích đầu cuối của Linux, giống như bạn đang sử dụng trên một hệ thống Linux điển hình.
Ví dụ: hãy sử dụng tập lệnh “hello world” cơ bản làm ví dụ tại đây:
#!/bin/bash # set the STRING variable STRING='Hello World!' # print the contents of the variable on screen echo $STRING
Nếu bạn đang sử dụng trình soạn thảo văn bản Nano, bạn có thể lưu tệp bằng cách nhấn Ctrl + O rồi nhấn Enter. Đóng trình chỉnh sửa bằng cách nhấn Ctrl + X.
Làm cho tập lệnh thực thi và sau đó chạy nó
Có thể bạn sẽ muốn làm cho tập lệnh thực thi để bạn có thể chạy nó dễ dàng hơn. Trên Linux, điều đó có nghĩa là bạn cần phải cung cấp cho tập tin kịch bản quyền thực thi. Để làm như vậy, hãy chạy lệnh sau trong terminal, trỏ nó vào script của bạn:
chmod +x ~/myscript.sh
~/myscript.sh
(Nếu tập lệnh nằm trong thư mục hiện tại, bạn có thể chạy tập lệnh đó bằng./myscript.sh)
Làm thế nào để làm việc với các tập tin Windows trong một kịch bản Bash
Để truy cập tệp Windows trong tập lệnh, bạn cần chỉ định đường dẫn của mình trong / mnt / c, không phải đường dẫn Windows của chúng. Ví dụ: nếu bạn muốn chỉ định tệp C: Users Bob Downloads test.txt, bạn cần chỉ định đường dẫn /mnt/c/Users/Bob/Downloads/test.txt. Tham khảo hướng dẫn của chúng tôi về các vị trí tệp trong vỏ Bash của Windows 10 để biết thêm chi tiết.
Làm thế nào để kết hợp các lệnh Bash thành tập lệnh Batch hoặc PowerShell
Cuối cùng, nếu bạn có một tập tin batch hiện có hoặc kịch bản PowerShell bạn muốn kết hợp các lệnh vào, bạn có thể chạy các lệnh Bash trực tiếp bằng cách sử dụng
bash -c
chỉ huy.
Ví dụ, để chạy một lệnh Linux trong cửa sổ Command Prompt hoặc PowerShell, bạn có thể chạy lệnh sau:
bash -c 'command'
Thủ thuật này cho phép bạn thêm các lệnh Bash vào các tập tin batch hoặc các kịch bản PowerShell. Cửa sổ trình bao Bash sẽ xuất hiện khi lệnh Bash đang chạy.
Cập nhật: Nếu bạn có nhiều môi trường Linux được cài đặt, bạn có thể sử dụng lệnh wslconfig để chọn môi trường Linux mặc định được sử dụng khi bạn chạy
bash -c
chỉ huy.
Để tạo một shortcut cho một kịch bản Bash từ bên trong Windows, bạn chỉ cần tạo một shortcut như bình thường. Đối với mục tiêu của phím tắt, hãy sử dụng
bash -c
lệnh mà chúng tôi đã phác thảo ở trên và trỏ nó vào tập lệnh Bash bạn đã tạo.
Ví dụ: bạn sẽ chỉ một lối tắt tại”
bash -c '~/myscript.sh'
”Để chạy tập lệnh mẫu ở trên. Bạn cũng có thể chạy lệnh này từ cửa sổ Command Prompt hoặc PowerShell.