Каково различие между сенсорным файлом и> файл?

Я - вид новичка к Linux и интересно действительно ли > и touch имейте тот же эффект. Я имею в виду, следующие две команды имеют тот же эффект?:

$ > file.txt

$ touch file.txt

Если так, было бы замечательно знать, что я могу просто ввести'> file.txt' для создания новых файлов.

17
задан 29 September 2016 в 19:33

3 ответа

Оба touch и > создаст новый файл, если он не будет существовать. Поскольку следующий терминал управляет шоу когда Вы touch обновляется существующий файл получение доступ/длиться к измененному времени. Но если Вы > в существующий файл это является усеченным, и прошлый измененный раз обновляется (время доступа не). Отметьте это > не удаляет/удаляет связь файл. inode остается таким же - который является почему > / или truncate являются наиболее часто используемыми для убирания файлов журнала даже с открытым дескриптором файла.

rick@dell:~$ > EmptyFile

rick@dell:~$ touch EmptyFile2

rick@dell:~$ ls Empty*
EmptyFile  EmptyFile2

rick@dell:~$ ls -l Empty*
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile2

rick@dell:~$ echo Hello > EmptyFile

rick@dell:~$ ls -l Empty*
-rw-rw-r-- 1 rick rick 6 Sep 29 20:28 EmptyFile
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile2

rick@dell:~$ > EmptyFile

rick@dell:~$ ls -l Empty*
-rw-rw-r-- 1 rick rick 0 Sep 29 20:28 EmptyFile
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile2

rick@dell:~$ echo Hello > EmptyFile

rick@dell:~$ touch EmptyFile

rick@dell:~$ ls -l Empty*
-rw-rw-r-- 1 rick rick 6 Sep 29 20:32 EmptyFile
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile2

Как упомянуто в комментариях, touch внешняя команда и только воздействует на файлы. > оболочка встроенная функция, которая служит многим различным целям. Обычно Вы видели бы, что это использовало как cat source.fil > target.fil.

Подробная форма для освобождения файла была бы:

cat /dev/null > emptyme.fil

Используя > emptme.fil выполняет то же самое в компактном формате перенаправления ничего в файл.

24
ответ дан 23 November 2019 в 02:16

Между двумя существуют существенные различия. Touch команда, привыкшая к метке времени файл. > символ является редиректором стандартного вывода.

Использование двух объяснило

Использование Касания

, Если файл не будет существовать, то это создаст файл.

Касание является наиболее часто используемым для создания флагов. Например, если Вы хотите найти все файлы между двумя разами в Вашей системе, Вы могли бы использовать эту последовательность команд:

$ touch -t 201609292200 starttime 
$ touch -t 201609292300 endtime

Это создаст следующие файлы (или изменит метку времени, если они будут существовать):

-rw-rw-r-- 1 ljames ljames 0 Sep 29 23:00 endtime
-rw-rw-r-- 1 ljames ljames 0 Sep 29 22:00 starttime

Теперь можно использовать, находят, чтобы отобразить или обработать все файлы, которые были изменены на том часе (время между теми двумя метками времени файлов, т.е. между 22:00 и 23:00 от 29 сентября 2016).

$ find ~/ -newer starttime ! -newer endtime -printf "%M %Tm/%Td %TH:%TM %TM %p\n"

Это - частичный вывод вышеупомянутого, находят команду:

-rw-rw-r-- 09/29 22:08 08 /home/users/l/j/ljames/.thunderbird/lj7p62iq.default/gcontactsync/google_feed_backups/apollothethird@gmail.com_groups.xml
-rw-rw-r-- 09/29 22:08 08 /home/users/l/j/ljames/.thunderbird/lj7p62iq.default/gcontactsync/google_feed_backups/apollothethird@gmail.com.xml
-rw-rw-r-- 09/29 22:08 08 /home/users/l/j/ljames/.thunderbird/lj7p62iq.default/gcontactsync/address_book_backups/abook.mab.bak
-rw-rw-r-- 09/29 23:00 00 /home/users/l/j/ljames/endtime
drwx------ 09/29 22:44 44 /home/users/l/j/ljames/.config/google-chrome/Default/Extensions/Temp
drwx------ 09/29 22:44 44 /home/users/l/j/ljames/.config/google-chrome/Default/Extensions/fahmaaghhglfmonjliepjlchgpgfmobi
drwx------ 09/29 22:44 44 /home/users/l/j/ljames/.config/google-chrome/Default/Extensions/fahmaaghhglfmonjliepjlchgpgfmobi/1.337.0_0

Использование Перенаправления вывода

Символ перенаправления перенаправит стандартный вывод в указанный файл. В зависимости от Ваших clobber/noclobber настроек, если мог перестать работать. Noclobber только создаст файл, если он не будет существовать.

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

>   - Redirect standard output. Create or overwrite the existing file.
>>  - Redirect append.  Create or append to existing file.
>&  - Redirect both standard output and standard error.
>>& - Redirect/Append both standard output and standard error

Мы могли использовать наш find команда выше для перенаправления содержания всех файлов, созданных в течение указанного часа в файл, который мы могли зарегистрировать и изучить позже:

$ find ~/ -newer starttime ! -newer endtime -printf "%M %Tm/%Td %TH:%TM %TM %p\n" > ~/files.log
14
ответ дан 23 November 2019 в 02:16

> оператор перенаправления вывода оболочки, используемый для перенаправления STDOUT предыдущей команды (команд) к дескриптору файла, упомянутому после >. Если файл присутствует, это довольно, будет усеченным, как файл с open(2)- редактор с O_TRUNC флаг, и если файл не существует, он будет создан.

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

Обратите внимание что, некоторые оболочки (например. zsh) будет вести себя по-другому с пустым перенаправлением как:

 >file.txt

Типичное обходное решение должно добавить : (true) никакая-op команда:

 : >file.txt

Традиционно, основная цель touch должен изменить метку времени файла, не создав файл.

touch создает файл, только когда файл (файлы), упомянутый в аргументе, не существует, иначе он изменяет время изменения файла к текущей метке времени. Можно также изменить время доступа и inode время создания с помощью touch.

9
ответ дан 23 November 2019 в 02:16

Другие вопросы по тегам:

Похожие вопросы: