如何在OSX上使用VLC的CLI版本?
在OSX上安装VLC之后,可以通过正常的GUI流程,聚光灯等正常工作。此外,我知道可以这样做
open bla.avi -a vlc
但是,当我vlc
在shell中发出命令时,它不起作用。which vlc
在shell中也不返回任何东西。
CLI版本的VLC非常适合进行转码,流式传输等。因此,使其正常工作将是一件很不错的事情。
vlc
在终端中发出命令时,它告诉我使用,cvlc
我猜它在OSX下会是相同的。
如何在OSX上使用VLC的CLI版本?
在OSX上安装VLC之后,可以通过正常的GUI流程,聚光灯等正常工作。此外,我知道可以这样做
open bla.avi -a vlc
但是,当我vlc
在shell中发出命令时,它不起作用。which vlc
在shell中也不返回任何东西。
CLI版本的VLC非常适合进行转码,流式传输等。因此,使其正常工作将是一件很不错的事情。
vlc
在终端中发出命令时,它告诉我使用,cvlc
我猜它在OSX下会是相同的。
Answers:
该命令open bla.avi -a vlc
起作用是因为OS X使用其Launch Services数据库来打开应用程序VLC。这与同名的命令行二进制文件没有任何关系,默认情况下未安装该二进制文件。
您搜索的二进制文件位于VLC.app
软件包中,因此您可以在终端中输入二进制文件:
/Applications/VLC.app/Contents/MacOS/VLC -I rc
这将打开交互式命令行VLC。或者,执行以下命令以将上述行注册为的别名vlc
:
echo "alias vlc='/Applications/VLC.app/Contents/MacOS/VLC -I rc'" >> ~/.bash_profile
添加完毕后,您需要重新启动终端。现在输入vlc
,您将进入命令行。
如果您不喜欢交互式界面或想VLC
与其他选项一起使用,则需要相应地进行编辑~/.bash_profile
,例如通过open -e ~/.bash_profile
。
-I rc
如果您确实确实希望通过命令行vlc命令打开GUI,请从命令中删除。
open -a VLC
。这适用于OS X中的任何应用
cvlc
以使其清楚是命令行VLC(并与Linux版本保持一致)。
OS X应用程序通常不会在其应用程序包之外安装任何程序可执行文件。由于您通常不从命令行与他们互动,因此它们不会放入您的上的任何文件夹中PATH
。
如果将VLC安装到/Applications
,则实际的可执行文件是/Applications/VLC.app/Contents/MacOS/VLC
。
/Applications/VLC.app/Contents/MacOS/VLC -h
将显示一些帮助,/Applications/VLC.app/Contents/MacOS/VLC --intf ncurses
并将启动ncurses UI。
--intf ncurses
标志是很酷
要vlc
从命令行访问,可以创建如下的本地符号链接:
mkdir ~/bin
ln -vs /Applications/VLC.app/Contents/MacOS/VLC ~/bin/vlc
要使此命令可用于所有用户,您可能需要将其链接到/usr/local/bin
。
确保您的~/bin
(或/usr/local/bin
)位于环境PATH
变量中,换句话说,您的~/.profile
文件包含以下内容:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
上面的代码是Linux上的默认行为。
仅供参考和/或小费。
这里有两种方法来找出使用open
命令启动的应用程序的实际路径。
有用的,在该VLC被放置在另一个目录中,而不是壳体/Applications
,例如/Users/<user>/Applications
(~/Applications
)或其他目录。
很简单,但是它启动了应用程序。
$ osascript -e 'POSIX path of (path to application "VLC")'
/Applications/VLC.app/
$
$ osascript -e 'POSIX path of (path to application "GIMP")'
/Volumes/External_HDD/Applications/GIMP/GIMP_v2.8/GIMP.app/
有点复杂,但不会启动该应用程序。
$ # Path of `lsregister` command
$ # /System/Library \
$ # /Frameworks/CoreServices.framework/Versions/A \
$ # /Frameworks/LaunchServices.framework/Versions/A/Support/
$
$ cd /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/
$
$ ls
lsregister
$
$ # Sample usage
$ ./lsregister -dump | grep -o "/.*\Google Chrome.app" | head -1
/Applications/Google Chrome.app
$
$ # Find VLC
$ NAME_APP=VLC
$ ./lsregister -dump | grep -o "/.*${NAME_APP}.app" | grep -v -E "Caches|TimeMachine|Temporary|/Volumes/${NAME_APP}" | uniq
/Applications/VLC.app
经过测试:macOS HighSierra(OSX 10.13.6)
$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc.
首先,您需要在VLC Mac应用程序包中找到实际的二进制可执行文件。打开Finder
,转到Applications
文件夹,右键单击VLC应用程序,然后单击确定Show Package Contents
。现在,您可以浏览其中的实际内容。
在这种情况下,VLC二进制Contents/MacOS
文件作为文件位于文件夹中VLC
。打开Terminal
并输入确切的文件路径,您将发现VLC二进制文件执行:/Applications/VLC.app/Contents/MacOS/VLC
。如果您不想每次都使用整个路径,则可以进行符号链接并编辑Bash PATH以指向此路径。
现在您可以直接从CLI调用二进制文件,您可能希望选择一个接口,以免弹出通常的GUI。可用接口的完整列表在VLC接口Wiki页面上。
找到用于产生预期输出的VLC CLI调用的工作命令集后,您可能希望dummy
在程序/批处理中调用VLC时使用该接口。dummy
基本上,该界面不过是终端中的输出,就像大多数非交互式CLI程序一样。
最终结果: /Applications/VLC.app/Contents/MacOS/VLC -I dummy [further parameters here]
我建议使用该-vvv
参数,以便在测试不同命令时获得大量日志输出,以提供帮助。