Создание нового файла с помощью команды touch в сообщении об ошибке PowerShell
у меня есть каталог на моем рабочем столе, созданные с помощью PowerShell, и теперь я пытаюсь создать текстовый файл в нем.
Я изменил каталог на новый и набрал touch textfile.txt
.
это сообщение об ошибке я получаю:
touch : The term 'touch' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
At line:1 char:1
+ touch file.txt
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (touch:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException`
почему это не работает? Должен ли я использовать Git Bash все время?
4 ответов
Если вам нужна команда touch
в PowerShell вы можете определить функцию, которая делает правильную вещь™:
function touch {
Param(
[Parameter(Mandatory=$true)]
[string]$Path
)
if (Test-Path -LiteralPath $Path) {
(Get-Item -Path $Path).LastWriteTime = Get-Date
} else {
New-Item -Type File -Path $Path
}
}
поместите функцию в свой профиль чтобы он был доступен при запуске PowerShell.
определение touch
в качестве псевдонима (New-Alias -Name touch -Value New-Item
) не будет работать здесь, потому что New-Item
обязательный параметр -Type
и вы не можете включать параметры В определения псевдонимов PowerShell.
Если вы используете Windows Powershell, эквивалентная команда касания Mac / Unix:New-Item textfile.txt -type file
.
As Этан Рейснер указано, touch
не является командой ни в Windows, ни в PowerShell.
если вы хотите просто создать новый файл быстро (похоже, вас не интересует случай использования, когда вы просто обновляете дату существующего файла), вы можете использовать следующие:
$null > textfile.txt
$null | sc textfile.txt
обратите внимание, что первый по умолчанию будет Unicode, поэтому ваш файл не будет пустым; он будет содержать 2 байта,Unicode BOM.
второй один использует sc
(псевдоним Set-Content
), которая по умолчанию ASCII при использовании в файловой системе.
если вы используете пустую строку (''
или ""
или [String]::Empty
) вместо $null
вы в конечном итоге с разрывом линии также.
сочетание New-Item
С Name
, ItemType
и Path
параметры работали для меня. В моем случае, чтобы создать _netrc
файл для git:
New-Item -Name _netrc -ItemType File -Path $env:userprofile
ссылки