Làm cách nào để thay đổi màu nền trước dựa trên chương trình dòng lệnh nào đang chạy? (Bash và PowerShell)


1

Tôi muốn thay đổi màu nền trước dựa trên chương trình nào đang chạy. Điều này có thể có trong Bash hoặc PowerShell không?

Câu trả lời:


2

Trong Powershell, bạn có thể sử dụng lệnh ghép ngắn Write-Host có tham số -ForeGround để điều khiển tiền cảnh cho văn bản. Tuy nhiên, hãy lưu ý rằng văn bản được ghi vào bàn điều khiển thông qua lệnh ghép ngắn này không đi đến đường ống dẫn đến một số hành vi không mong muốn nếu bạn muốn làm việc với văn bản sau này trong đường ống.

Đây là một ví dụ:

(get-help write-host).Description.Text | write-host -ForegroundColor Cyan

1

Trong bash, bạn có thể định nghĩa một loạt các hàm:

chức năng lệnh_name
{
    bẫy ':' 2
    lệnh để đặt (các) màu mong muốn 
    full_path_to_command lệnh "$ @"
     để khôi phục (các) màu mặc định
}

cho mỗi lệnh / chương trình bạn muốn có một màu khác nhau. Ví dụ,

function date
{
    trap ':' 2
    echo "\033[31m\c"
    /bin/date "$@"
    echo "\033[30m\c"
}

Các traplệnh làm cho chức năng để tiếp tục chạy nếu bạn làm gián đoạn chương trình (bằng cách gõ Ctrl+ C). Nếu không có nó, nếu bạn gõ Ctrl+ Ctrong khi chương trình màu của bạn đang chạy, thiết bị đầu cuối của bạn sẽ được giữ lại màu cho lệnh đó. (Có thể có nhiều cách tốt hơn để xử lý việc này.)

"$@"được thay thế bởi các đối số bạn nhập vào hàm, vì vậy nếu bạn nói date -u, nó biết chuyển -utùy chọn cho /bin/datelệnh.

Bạn có thể muốn xác định một chức năng không làm gì ngoài việc khôi phục (các) màu mặc định của bạn. Vì điều đó không cần phải tranh luận, nó có thể được thực hiện như một alias.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.