Я не думаю, что это возможно, если Вы не можете заставить хвост закрывать и периодически вновь открыть файл. Один хвост (или любая другая программа) открывает файл, это получает дескриптор к inode того файла. В той точке больше не консультируются с именами файлов и ссылками. Именно поэтому можно удалить файл из файловой системы, и любая программа, которая имеет тот открытый файл, продолжит работать. Только когда; программа ast закрывает файл, что это на самом деле удалено из диска.
Обновление: По крайней мере, хвост версии на OS X имеет-F опцию, которая вновь откроет файл, если это переместилось.
Это - обратная галочка. Обратная галочка не является знаком цитаты. Это имеет совершенно особое значение. Все, что Вы вводите между обратными галочками, оценено (выполняемое) оболочкой перед основной командой (как chown
в Ваших примерах), и вывод того выполнения используется той командой, так же, как если бы Вы ввели бы тот вывод в том месте в командной строке.
И что?
sudo chown `id -u` /somedir
эффективно выполнения (в зависимости от Вашего идентификатора пользователя):
sudo chown 1000 /somedir
\ \ \ \
\ \ \ `-- the second argument to "chown" (target directory)
\ \ `-- your user ID, which is the output of "id -u" command
\ `-- "chown" command (change ownership of file/directory)
`-- the "run as root" command; everything after this is run with root privileges
Взгляните на этот вопрос изучить, почему во многих ситуациях это не хорошая идея использовать обратные галочки.
Btw, если Вы когда-нибудь хотели использовать обратную галочку буквально, например, в строке, можно выйти из нее путем размещения обратной косой черты (\
) перед ним.
Обратная галочка 'выполняет содержание вложенной строки, таким образом, что-то вроде этого
file `which hostname`
узнает путь к команде имени хоста и затем скажет Вам, как это было создано.
Команда, что Вы вставляете свои выполнения вопроса id -u
получить эффективный идентификатор пользователя, и затем изменяет владение/somedir тому пользователю.
Этот символ означает, что безотносительно в нем интерпретируется как результат той команды.
например:
$ls /home
one two
$pwd
/usr/three
$cp `pwd` /home
$ls /home
one two three
Вышеупомянутые результаты в three
каталог, скопированный в мой /home
каталог.
Я хотел бы добавить сюда еще несколько моментов.
Обратный апостроф `…`
на самом деле называется подстановкой команд . Цель подстановки команд - оценить команду, помещенную внутри обратного апострофа, и предоставить ее результат в качестве аргумента для фактической команды.
Подстановку команд можно выполнить двумя способами: один - с помощью $ (…)
, а другой - `…`
. Оба работают одинаково, но форма $ (…)
- это современный способ, который имеет большую ясность и удобочитаемость.
Таким образом,
sudo chown $(id -u) /somedir
может быть предпочтительнее другого.
И еще одна вещь, которую вам нужно отметить, это связь подстановки команд с правилами цитирования bash , как указано в документе bash .
Если подстановка заключена в двойные кавычки, разбиение слов и раскрытие имени файла не выполняется для результатов.
Одно пояснение, которое редко упоминается:
Обратные кавычки (иногда также называемые Грейвзом, потому что они используются как распространенный акцент во французском и других языках) заменяют Только стандартный вывод , но не стандартная ошибка.
Итак, чтобы продолжить предыдущий пример:
file `which hostname`
будет работать, как ожидалось, но в:
file `which hostnameX`
который
вернет ошибку, и этот вывод перейдет в стандартную ошибку, вместо того, чтобы подставлять в командную строку рядом с файл
; стандартного вывода не будет, что вы можете подтвердить, запустив:
which hostnameX
which hostnameX 2>/dev/null
В этом случае
file `which hostnameX`
выдаст два сообщения об ошибках (первое из-за , hostnameX
, а второй сразу после первого, из-за самого файла, который обнаруживает, что имя файла отсутствует, и поэтому вся команда
по существу уменьшится до просто:
file
, что, конечно, является неправильным использованием , и вернет ошибку использования.
(если вы хотите проверить это самостоятельно, вы можете попробовать:
file `which hostnameX 2>/dev/null` # just the file-command bad-usage error msg is printed
file `which hostnameX 2>/dev/null` 2>/dev/null # now nothing is printed on the screen :)
Los acentos graves se asemejan a la sustitución de comandos. Esta sintaxis de backticks es arcaica, y es común saber que el signo de dólar con dos paréntesis:$()
.
La sustitución de comandos es una sola operación con sintaxis dedicada tanto para ejecutar un comando como para almacenar su salida en una variable para su uso posterior.
thedate=$(date)
Entonces podríamos imprimir el resultado :'La fecha es %s\n' "$thedate" `.
$()
. date
. $(date)
cuya salida es la sustitución. printf
, según el comando anterior.
$(your expression)
лучший путь состоит в том, чтобы сделать то же самое как$()
позволяет Вам выражениям вложенного множества. например:cd $(dirname $(type -P touch))
будет CD Вы в каталог, содержащийtouch
команда – Khaja Minhajuddin 27.12.2011, 03:10$()
в большинстве ситуаций это не делает обратные галочки худшей вещью. Практически, нужно признать, что они намного быстрее для ввода на командной строке (2 нажатий клавиш по сравнению с по крайней мере 5, включаяShift
). – rozcietrzewiacz 23.10.2012, 16:14$( )
определенно легче ввести, чем` `
по крайней мере, на французской клавиатуре. – jlliagre 19.05.2013, 23:38