Я - вид новичка к Linux и интересно действительно ли >
и touch
имейте тот же эффект. Я имею в виду, следующие две команды имеют тот же эффект?:
$ > file.txt
$ touch file.txt
Если так, было бы замечательно знать, что я могу просто ввести'> file.txt' для создания новых файлов.
Оба 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
выполняет то же самое в компактном формате перенаправления ничего в файл.
Между двумя существуют существенные различия. 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
>
оператор перенаправления вывода оболочки, используемый для перенаправления STDOUT предыдущей команды (команд) к дескриптору файла, упомянутому после >
. Если файл присутствует, это довольно, будет усеченным, как файл с open(2)
- редактор с O_TRUNC
флаг, и если файл не существует, он будет создан.
Важная вещь отметить, что, этот оператор перенаправления будет обработан оболочкой перед предыдущими выполнениями команды, таким образом, это не будет зависеть ни от какой команды, и обработанный самой оболочкой.
Обратите внимание что, некоторые оболочки (например. zsh
) будет вести себя по-другому с пустым перенаправлением как:
>file.txt
Типичное обходное решение должно добавить :
(true
) никакая-op команда:
: >file.txt
Традиционно, основная цель touch
должен изменить метку времени файла, не создав файл.
touch
создает файл, только когда файл (файлы), упомянутый в аргументе, не существует, иначе он изменяет время изменения файла к текущей метке времени. Можно также изменить время доступа и inode время создания с помощью touch
.