Câu hỏi Trong Powershell, có cách nào để lưu một lệnh đã nhập vào lịch sử mà không thực hiện nó để thực thi sau này không?


Trong Powershell, là có một cách, sau khi gõ một lệnh dài hoặc phức tạp, để cam kết lệnh đó vào bộ đệm lịch sử, nhưng không thực hiện nó?

Ví dụ, bạn bắt đầu gõ git commit, trong thư mục posh-git:

git commit -m "Added the library 'ASDF' and did some initial integration into the project" [pause]

Và ngay khi bạn gõ, tôi nghĩ ... Uh, tôi cần làm điều gì đó trước, như thêm một tập tin bổ sung để cam kết làm cái gì khác trước, hoặc tạo một thư mục hay cái gì đó (tình huống giả tạo, tôi nhận ra Powershell sẽ Vì vậy, tôi muốn lưu thông điệp cam kết đó vào một bộ đệm lịch sử, nhưng không cần chạy nó, để được gọi lại sau khi tôi nói, thêm các tệp bổ sung hoặc làm điều gì đó ngay trước đó.

Theo bài viết này, Phím tắt Windows PowerShell: http://technet.microsoft.com/en-us/library/ee176868.aspx , có vẻ như không phải là một tổ hợp phím để làm điều này.

ESC phím (và Ctrl + C) sẽ hủy bỏ lệnh, và xóa nó ra ... Những gì tôi cần là để lưu vào lịch sử, để được chạy sau đó, do đó bảo quản đánh máy của tôi. Có một tổ hợp phím cho việc này không?


4
2018-06-11 14:34


gốc




Các câu trả lời:


Vâng, bạn luôn có thể đặt thẻ nhận xét trước lệnh như sau:

#Get-ChildItem

Và khi bạn đã sẵn sàng thực thi, hãy nhấn mũi tên lên đến lệnh Nhà sau đó Del, sau đó Đi vào để thực hiện.


10
2018-06-11 14:52



thats khá thông minh. cám ơn vì sự gợi ý! - enorl76
Vâng. Được sử dụng thủ thuật này mãi mãi. Tôi cũng bình luận về oneliners của tôi theo cách này, bởi vì tôi thực sự có thể đọc lại những năm lịch sử từ bây giờ (bash). - bgStack15


Nhiều lệnh hỗ trợ một -whatif thông số mà bạn có thể thêm và xóa sau này. Tuy nhiên, tôi phải nói rằng tôi thích ý kiến ​​bình luận tốt hơn.


1
2018-06-13 14:43



whatif là tốt, nhưng không phải tất cả các lệnh đều hỗ trợ nó - Keltari


Điều này dường như cũng hoạt động, sau khi một số chơi với lời gọi:

$VariableName = "Windows Command"

Sau đó, để thực hiện:

Invoke-Expression "$VariableName"

Một ví dụ với Ping:

enter image description here

Tôi cũng có thể sử dụng các biểu thức PowerShell theo cùng một cách:

PS H:> $ Outlook = "Get-Process -Name Outlook-Verbose | fl   Thời gian bắt đầu, chủ đề "PS H:> Invoke-Expression" $ Outlooks "

Về cơ bản, tôi tin rằng những gì đang xảy ra là chúng ta đang tạo một chuỗi cho biến đầu tiên (chính xác nó trông như thế nào, thẳng về phía trước), và sau đó khi chúng ta gọi biến của chúng ta bên trong "" nó buộc trình thông dịch mở rộng biến, gây ra nó để gọi đúng lệnh.


1
2018-06-14 19:30