而不将其添加到历史运行命令

问题描述 投票:3回答:2

我想创建命令的干净历史一个特定的任务。其结果是,我想具体的命令,以保持在历史和命令不保留。例如,为了防止命令从进入历史,我想可以这样运行的东西:

cls -no-history

这将防止cls命令弄乱历史。从目前来看,我只是跑clear-history -id 7,例如,删除特定的历史记录项。

powershell
2个回答
1
投票

这是一个非常有趣的问题。我想我已经想出了一个办法,将真正为你做这个,但是你需要定义一个函数,然后管你想从历史到该功能的命令。

function Skip-History {
[CmdletBinding()]
param(
    [Parameter(
        ValueFromPipeline=$true
    )]
    [Object]
    $o
)
    Begin {
        $history = Get-History
    }

    Process {
        $o
    }

    End {
        Clear-History
        $history | Add-History
    }
}

要使用它:

cls | Skip-History
Get-Process | Skip-History

这样做的缺点是,它会不断地被重新编号的历史标识,如果该事项。

此外,通过进一步的实验,似乎这是行不通的,除非你在管道中的每一小命令后直接使用。所以,如果你想隐藏Get-Process | Sort-Object你将不得不这样称呼它:

Get-Process | Skip-History | Sort-Object | Skip-History

0
投票

注意,由于Windows 10的你还需要删除任何新条目从%USERPROFILE%\应用程序数据\漫游\微软\的Windows \ PowerShell的\ PSReadline \ ConsoleHost_history.txt否则仍然会出现在以前的“向上箭头键”列表命令。

你可以用文本编辑器做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.