Touch linux in windows

Содержание
  1. Equivalent of Linux `touch` to create an empty file with PowerShell [duplicate]
  2. 14 Answers 14
  3. Create an empty file on the commandline in windows (like the linux touch command)
  4. 20 Answers 20
  5. CMD w/Timestamp Updates
  6. CMD w/out Timestamp Updates
  7. Powershell w/Timestamp Updates
  8. Команда Touch Linux
  9. Linux Touch Command
  10. В этом руководстве мы покажем Вам, как использовать сенсорную команду, на практических примерах и подробных объяснениях наиболее распространенных опций команды.
  11. Временные метки файлов Linux
  12. Как использовать сенсорную команду
  13. Изменение только времени доступа или модификации
  14. Изменить только время доступа
  15. Изменить только время изменения
  16. Установка конкретных временных меток
  17. Использование метки времени другого файла
  18. Изменение временной метки символической ссылки
  19. Вывод
  20. Использование команды touch в Linux
  21. Используем команду touch в Linux
  22. Синтаксис
  23. Генерация пустых файлов
  24. Установка времени последнего доступа
  25. Установка времени последнего изменения
  26. Запрет на создание объекта
  27. Установка времени доступа и изменений
  28. Перенос временных меток выбранного файла
  29. Создание файла с указанным временем

Equivalent of Linux `touch` to create an empty file with PowerShell [duplicate]

Is there an equivalent of touch in PowerShell?

For instance, in Linux I can create a new empty file by invoking:

On Windows this is pretty awkward — usually I just open a new instance of Notepad and save an empty file.

So is there a programmatic way in PowerShell to do this?

I am not looking to exactly match behaviour of touch, but just to find the simplest possible equivalent for creating empty files.

14 Answers 14

Using the append redirector «>>» resolves the issue where an existing file is deleted:

To create a blank file:

To update the timestamp of a file:

Here is a version that creates a new file if it does not exist or updates the timestamp if it does exist.

In PowerShell you can create a similar Touch function as such:

I prefer Format-Table for this task (mnemonic file touch):

To work with non-empty files you can use:

I chose this because it is a short command that does nothing in this context, a noop. It is also nice because if you forget the redirect:

instead of giving you an error, again it just does nothing. Some other aliases that will work are Format-Custom ( fc ) and Format-Wide ( fw ).

There are a bunch of worthy answers already, but I quite like the alias of New-Item which is just: ni

You can also forgo the file type declaration (which I assume is implicit when an extension is added), so to create a javascript file with the name of ‘x’ in my current directory I can simply write:

3 chars quicker than touch!

I put together various sources, and wound up with the following, which met my needs. I needed to set the write date of a DLL that was built on a machine in a different timezone:

Of course, you can also set it for multiple files:

It looks like a bunch of the answers here don’t account for file encoding.

I just ran into this problem, for various other reasons, but

both produce a UTF-16-LE file, while

produces a UTF-8 file.

For whatever reason fc > $file and fc >> $file , also seem to produce UTF-8 files.

gives you a UTF-8-BOM file, while

gives you a UTF-8 file. Other valid (but untested) encodings that Out-File supports are: [[-Encoding] ]. You can also pipe stuff to Out-File to give the file some text data to store, and also an -append flag. For example:

this example does not update the timestamp for some reason, but this one does:

Although it does have the side effect of appending «foo» to the end of the file.

If you are unsure about what encoding you have, I’ve found VS-Code has a nifty feature where at the bottom right hand corner it says what the encoding is. I think Notepad++ also has a similar feature.

Источник

Create an empty file on the commandline in windows (like the linux touch command)

On a windows machine I get this error

‘touch’ is not recognized as an internal or external command, operable program or batch file.

I was following these instructions which seem to be linux specific, but on a standard windows commandline it does not work like this:

Читайте также:  Лучший офлайн переводчик для windows

Is there a windows equivalent of the ‘touch’ command from the linux / mac os / unix world ? Do I need to create these files by hand (and modify them to change the timestamp) in order to implement this sort of command? I am working with node and that doesn’t seem very . node-ish.

20 Answers 20

An easy way to replace the touch command on a windows command line like cmd would be:

This will create 0 bytes in the your_file.txt file.

This would also be a good solution to use in windows batch files.

Another way of doing it is by using the echo command:

echo. — will create a file with one empty line in it.

If you need to preserve the content of the file use >> instead of >

You can also use call command.

Calls one batch program from another without stopping the parent batch program. The call command accepts labels as the target of the call.

— or even if you don’t want make it hard you can Just install Windows Subsystem for Linux (WSL). Then, type.

Quotes are not needed.

Windows does not natively include a touch command.

You can use any of the available public versions or you can use your own version. Save this code as touch.cmd and place it somewhere in your path

It will iterate over it argument list, and for each element if it exists, update the file timestamp, else, create it.

You can use this command: ECHO >> filename.txt

it will create a file with the given extension in the current folder.

UPDATE:

for an empty file use: copy NUL filename.txt

The answer is wrong, it only works when the file does not exist. If the file exists, using the first does nothing, the second adds a line at the end of the file.

The correct answer is:

On windows Power Shell, you can use the following command:

Note: New-Item can be replaced with its alias ni

I’m surprised how many answers here are just wrong. Echoing nothing into a file will fill the file with something like ECHO is ON , and trying to echo $nul into a file will literally place $nul into the file. Additionally for PowerShell, echoing $null into a file won’t actually make a 0kb file, but something encoded as UCS-2 LE BOM , which can get messy if you need to make sure your files don’t have a byte-order mark.

After testing all the answers here and referencing some similar ones, I can guarantee these will work per console shell. Just change FileName.FileExtension to the full or relative-path of the file you want to touch ; thanks to Keith Russell for the COPY NUL FILE.EXT update:

CMD w/Timestamp Updates

copy NUL FileName.FileExtension

This will create a new file named whatever you placed instead of FileName.FileExtension with a size of 0 bytes. If the file already exists it will basically copy itself in-place to update the timestamp. I’d say this is more of a workaround than 1:1 functionality with touch but I don’t know of any built-in tools for CMD that can accomplish updating a file’s timestamp without changing any of its other content.

CMD w/out Timestamp Updates

if not exist FileName.FileExtension copy NUL FileName.FileExtension

Powershell w/Timestamp Updates

if (!(Test-Path FileName.FileExtension -PathType Leaf)) else

Yes, it will work in-console as a one-liner; no requirement to place it in a PowerShell script file.

Источник

Команда Touch Linux

Linux Touch Command

В этом руководстве мы покажем Вам, как использовать сенсорную команду, на практических примерах и подробных объяснениях наиболее распространенных опций команды.

Сенсорная команда позволяет нам обновлять временные метки для существующих файлов и каталогов, а также создавать новые, пустые файлы.

Временные метки файлов Linux

Прежде чем перейти к использованию команды touch, давайте начнем с просмотра временных меток файлов в Linux.

Файл в Linux имеет три метки времени:

  • atime (время доступа) — последний раз, когда файл был доступен / открыт какой-либо командой или приложением, например, cat , vim или grep .
  • mtime (время модификации) — время последнего изменения содержимого файла.
  • ctime (время изменения) — время последнего изменения атрибута или содержимого файла. Атрибут включает права доступа к файлу, владельца файла или местоположение файла.
Читайте также:  Заархивировать файлы tar linux

Чтобы отобразить состояние файла, включая временные метки, используйте stat команду.

Создание нового файла требует разрешения на запись в родительский каталог. В противном случае вы получите ошибку «Отказано в разрешении».

Как использовать сенсорную команду

В простейшем виде, когда используется без каких-либо опций, если имя файла, указанное в качестве аргумента, не существует, touch создаст новый файл.

Если файл уже существует, коснитесь, чтобы изменить время последнего доступа к файлу и время модификации на текущее время.

Например, если файл file1 не существует, в противном случае его создаст следующая команда, которая изменит свои временные метки:

Чтобы создать или изменить несколько файлов одновременно, укажите имена файлов в качестве аргументов:

Если вы не хотите, чтобы команда touch создавала новые файлы, используйте параметр -c ( —no-create ).

Например, если файл file1 существует, следующая команда изменит временные метки файла, в противном случае она ничего не будет делать:

Изменение только времени доступа или модификации

По умолчанию, если ни одна из опций не используется, сенсорный обновит время последнего доступа к файлу и время модификации до текущего времени. Используя -a и -m опцию, вы можете изменить только одну из этих меток времени.

Изменить только время доступа

Используйте -a опцию, чтобы изменить только время доступа к файлу:

Изменить только время изменения

Используйте -m опцию, чтобы изменить время изменения файла:

При изменении времени изменения время изменения также будет обновлено.

Установка конкретных временных меток

Используйте параметр -d ( —date= ), чтобы указать строку даты и использовать ее вместо текущего времени.

Например, чтобы изменить время последнего доступа и изменения file1 на 1 июня 2018 г. 11:02, вы должны использовать следующую команду:

Строка даты должна быть заключена в одинарные кавычки.

Вы также можете предоставить частичную строку даты и времени для сенсорной команды. Предоставляя только дату, автоматически меняет год на текущий:

Используйте -t опцию, чтобы указать метку времени и использовать ее вместо текущего времени. Аргумент метки времени должен иметь следующий формат:

Например, следующая команда установит время последнего доступа и изменения file1 на 1 июня 11:02 текущего года.

Использование метки времени другого файла

Опция -r ( —reference= ) позволяет нам указать эталонный файл и использовать его временные метки вместо текущего времени.

Например, следующая команда скажет touch использовать время file1 для file2 :

Изменение временной метки символической ссылки

По умолчанию, если вы используете сенсорную команду для символической ссылки, она изменит временные метки своего ссылочного файла.

Используйте -h ( —no-dereference ), чтобы изменить временную метку символической ссылки.

Например, чтобы изменить метки времени символической ссылки, symlink1 вы должны использовать:

Вывод

К настоящему времени вы должны хорошо понимать, как использовать сенсорную команду Linux.

Источник

Использование команды touch в Linux

Как известно, в операционных системах Linux присутствует огромное количество встроенных терминальных команд, выполняющих самые разнообразные действия. Некоторые из них позволяют устанавливать программы, другие предназначены для управления логическими томами и жесткими дисками. Существуют среди них и те, которые созданы для взаимодействия с файлами. Одна из таких команд называется touch, и именно о ней мы и хотим рассказать в рамках данного обучающего материала.

Используем команду touch в Linux

Для использования команды touch в Linux потребуется изучить ее синтаксис и понять принципы ввода. С этим не должно возникнуть никаких проблем, поскольку сама утилита довольно проста, а с доступными опциями можно разобраться буквально за несколько минут. Давайте как раз и начнем с этого.

Синтаксис

Обратим внимание на стандартный вид строки при вводе команды touch. Она выглядит так: touch + [Опции] + Файл . Если же действие нужно осуществить от имени суперпользователя, в начале строки придется добавить sudo, а после ее активации написать пароль, подтверждающий учетную запись. Что касается дополнительных опций, то стоит отметить следующие:

  • ––help и ––version используются редко. Первая опция даст возможность прочесть официальную документацию, а вторая отобразит текущую версию утилиты.
  • -a отвечает за изменение времени доступа к указанному файлу.
  • -m изменяет время модификации.
  • -c определяет, что объект с указанным именем создан не будет.
  • -r позволит использовать время доступа и модификации указанного файла.
  • -t предназначена для изменения даты и времени путем ручного ввода.
  • -d использует дату и время, заданные в виде строки.

Теперь вы знаете абсолютно обо всех доступных опциях рассматриваемой сегодня команды. Давайте перейдем к изучению параметров, чтобы разобраться со всеми основными действиями, выполняемыми при помощи данной утилиты.

Читайте также:  Как избавиться заблокированного windows

Генерация пустых файлов

Для начала разберемся с действием команды touch без применения каких-либо аргументов — так она создает пустой файл размером 0 байт с указанным названием.

    Откройте «Терминал» удобным для вас образом, например, через значок в меню приложений или комбинацию клавиш Ctrl + Alt + T.

После активации этой команды, если она прошла без каких-либо ошибок, появится новая строка для ввода, а в текущем расположении создастся соответствующий объект.

Вы можете добавить несколько файлов одновременно, по очереди написав название каждого, чтобы получилась примерно такая строка: touch testfile1 testfile2 testfile3 .

Имеется одна особенность, которую тоже следует учитывать. Если появилась надобность создать несколько файлов с одинаковым названием, но с разными цифрами в конце, как это было показано выше, проще использовать такой тип написания: touch testfile <1..6>.

Больше команда touch без применения аргументов ничего сделать не способна, поэтому давайте сразу же перейдем к разбору примеров взаимодействия с опциями.

Установка времени последнего доступа

Как вы уже знаете, одна из опций рассматриваемой команды разрешает изменить время доступа к файлу на текущее. Осуществляется это путем ввода всего одной строки которая имеет вид touch -a file , где file — имя необходимого объекта. Количество перечисляемых элементов для одной строки не ограничивается. При этом время последнего изменения не устанавливается, если только в данной строке не дописана дополнительная опция -m, о ней мы и поговорим далее.

Установка времени последнего изменения

По той же аналогии работает и упомянутый выше аргумент -m. Ое переназначает время последнего изменения на текущее, а строка выглядит так: touch -m file . Все внесенные изменения вступают в действие сразу же, а это значит, что вы можете переходить к их проверке или к выполнению других задач, ради которых и вызывалась команда touch с опцией -m.

Запрет на создание объекта

Простая утилита touch иногда позволяет реализовать и сложную цель путем ввода буквально одной строки в консоль. После выполнения команды touch -c file , где file — точное название нужного файла, элемент с указанным именем нельзя будет создать обычному пользователю. Деактивируется эта опция только после того, как привилегированный пользователь создаст пустой объект с таким же названием через эту же команду. Дополнительно ничего не мешает вам создать список из названий, чтобы одновременно установить на них ограничения.

Установка времени доступа и изменений

Приведенные выше опции -a и -m позволяли только изменить параметры файла, установив текущее время, однако имеется возможность задать абсолютно любое время с точностью до секунды. При этом главное — соблюдать правило ввода: [[ВВ]ГГ]ММДДччммм[.сс] , где ВВ — первые две цифры года, ГГ — вторые, ММ — месяц, ДД — дата, чч — часы, мм — минуты, сс — секунды. Необходимая команда получается такой: touch -c -t 01261036 file .

Если вы заинтересованы в просмотре итогового результата, напишите в консоли ls -l и нажмите на Enter. В списке остается только отыскать необходимый файл и просмотреть, когда он был модифицирован.

Перенос временных меток выбранного файла

Если вы ознакомились с приведенной выше информацией, то знаете, что опция -r разрешит перенести временные метки одного объекта на другой. Осуществляется это через строку: touch -r file1 file2 , где file1 — уже имеющийся файл с определенными временными метками, а file2 — новый объект, к которому они и будут применены.

Создание файла с указанным временем

В конце данного материала отметим, что по умолчанию touch создает файлы с актуальным временем, однако это можно изменить, применив всего одну опцию: touch -t 201912101830.55 file , где 201912101830.55 — точно указанное время на ваш выбор, а file — название того самого объекта или объектов, если они будут представлены в виде списка.

Теперь вы знакомы с командой touch, которая активно используется в Linux для создания файлов. Это могут быть как отдельные тестовые элементы, так и объекты, добавленные для определенных целей. Пользователь уже сам решает, в каком русле применять возможности утилиты. Если вас заинтересовала тема основных команд этой операционной системы, предлагаем изучить представленные далее материалы.

Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Оцените статью