mplayer
поставляется с утилитой midentify
, которая делает в основном то, что вы хотите.
Вывод выглядит как присвоение переменных, поэтому его довольно легко использовать в сценариях / просто для синтаксического анализа.
Если midentify
не установлен с вашим пакетом mplayer
, у вас может быть скрипт midentify.sh
в / usr / share / mplayer
или что-то в этом роде. В противном случае midenfify
просто запускает mplayer
с определенным набором аргументов:
#!/bin/sh
#
# This is a wrapper around the -identify functionality.
# It is supposed to escape the output properly, so it can be easily
# used in shellscripts by 'eval'ing the output of this script.
#
# Written by Tobias Diedrich <ranma+mplayer@tdiedrich.de>
# Licensed under GNU GPL.
if [ -z "$1" ]; then
echo "Usage: midentify.sh <file> [<file> ...]"
exit 1
fi
mplayer -vo null -ao null -frames 0 -identify "$@" 2>/dev/null |
sed -ne '/^ID_/ {
s/[]()|&;<>`'"'"'\\!$" []/\\&/g;p
}'
-ao
, -vo
и ] -frames
параметры не позволяют mplayer
фактически воспроизводить клип. Остальное просто форматирование.
Пример:
$ midentify some_random.avi
ID_VIDEO_ID=0
ID_AUDIO_ID=0
...
ID_VIDEO_BITRATE=258488
ID_VIDEO_WIDTH=320
ID_VIDEO_HEIGHT=240
ID_VIDEO_FPS=29.917
...
ID_LENGTH=4216.76
...
ID_AUDIO_BITRATE=64000
ID_AUDIO_RATE=22050
...
No podría hacer esto creando un nuevo grupo, ya que necesita que algunos usuarios tengan lectura y otros lectura/escritura. Eso es a menos que necesite que los usuarios de Auftrag
y Support
tengan permisos de lectura/escritura y todos tengan permisos de lectura, en cuyo caso podría crear un grupo que contenga a todos los usuarios de Auftrag
y Support
, y configure la escritura grupal y la lectura mundial.
Alternativamente, y suponiendo que su sistema de archivos los admita, podría usar ACL extendidas :https://wiki.archlinux.org/index.php/Access_Control_Lists
Por ejemplo:
# setfacl -m "g:Auftrag:rw" /file/path
# setfacl -m "g:Support:rw" /file/path
Debo suponer que el objetivo también incluye el bit de ejecución para cambiar al directorio.
Conviértase en el usuario raíz.
sudo -i
Crear el directorio. (El usuario raíz es el propietario y propietario del grupo.)
mkdir Projekte
Defina los permisos. Hagámoslo accesible solo para root para resaltar el efecto de las ACL.
chmod 0700
Ahora aumente los permisos estándar con ACL.
setfacl -d -m g:Auftrag:7 Projekte
setfacl -m g:Auftrag:7 Projekte
setfacl -d -m g:Support:7 Projekte
setfacl -m g:Support:7 Projekte
setfacl -d -m o::5 Projeckte
setfacl -m o::5 Projeckte
Arriba, el interruptor -m
es la máscara, y el interruptor -d
hace que la máscara sea la máscara predeterminada para todos los objetos nuevos del sistema de archivos en el directorio. No es necesario utilizar valores octales. Lo mismo se puede escribir de la siguiente manera.
setfacl -d -m g:Auftrag:rwx Projekte
setfacl -m g:Auftrag:rwx Projekte
setfacl -d -m g:Support:rwx Projekte
setfacl -m g:Support:rwx Projekte
setfacl -d -m o::r-x Projeckte
setfacl -m o::r-x Projeckte
Las máscaras de usuario, grupo y otras funcionan de la misma manera:g:groupname:---
o en combinación :u:username:---,g:groupname:---,o::---
, donde o
significa otras. No especificar un nombre de usuario o nombre de grupo aplica la máscara a la propiedad actual del usuario/grupo.
Observe cómo se aplicaron tanto una máscara como una máscara predeterminada. La máscara (sin-d
)se aplica al directorio mismo. La máscara (con-d
)se aplica a todos los nuevos objetos del sistema de archivos en el directorio. Es fácil olvidar esto .