经常要看一些本地的视频,也常用终端管理文件,使用 vim 的插件 Fern 做为文件管理器,可以有批量重命名之类的复杂操作,很方便,但是不能调用本地的软件打开音视频。而我之前的解决方法是使用 explorer .
打开资源管理器,再用鼠标点视频来看。
但是总是遇到以下问题:
- 对于全是视频的文件夹,
explorer .
打开后的资源管理器中的样式是大图标,排序乱。 - 看起来不如终端下的列表直观,文件不好找。
- 窗口占用位置。
经过一番尝试,写了个脚本实现了该功能,还学到一些 Linux 的知识,发贴分享下。
alias 的尝试
使用 alias 指定 play 为 PotPlayer 播放器位置,后跟参数 /filedlg
表示当不传入要播放的文件时打开 “文件对话框”。
alias play="/cygdrive/c/Program\ Files/PotPlayer/PotPlayerMini64.exe /filedlg"
使用举例:
-
play .
,打开播放器,并将当前目录下的内容加入播放列表。 play a.mp4
play a.mp3
-
play {folder_name1}
,可以跟一个文件夹,打开 Potplayer 并将文件夹中的所有内容加入到播放列表。
以上用法,在终端会有持续不断的输出,可以将输出指向 null
play {a.mp4} > /dev/null 2>&1 &
在后台执行
上面的方法在使用时,终端将会失去交互,显示播放器的日志内容,使用 ctrl+c 退出时,播放器也会被关闭。
所以,准备修改下 alias 后的内容,不让播放器输出日志。
alias play="/cygdrive/c/Program\ Files/PotPlayer/PotPlayerMini64.exe /filedlg > /dev/null 2>&1 &"
可以单独执行 play
,但无法传递文件路径了。
% play .
[1] 12767
.: not enough arguments
经过一番搜索,发现 alias 好像不能传参,不过可以写脚本,给脚本传参。bashrc里alias加参数如何做? - Ubuntu中文论坛
shell 脚本
文件名:play
#!/bin/bash
# $1 脚本接收的参数,是传给 Potplayer 的文件路径,要加上双引号才能接收带有空格的文件路径。
/cygdrive/c/Program\ Files/PotPlayer/PotPlayerMini64.exe "$1" /filedlg > /dev/null 2>&1 &
然后,就可以使用:
./play .
./play a.mp4
./play a.mp3
./play folder_name1
在家目录下创建自己的 bin 目录,管理方便,并将 play 脚本放进去。(linux - Move script.sh to bin - Stack Overflow )
mkdir $HOME/bin
将该文件夹的路径加入到 PATH 中。
在 ~/.bashrc
或 ~/.zshrc
最后加上一行 export PATH=$PATH:$HOME/bin
。
执行 source ~/.zshrc
或 source ~/.bashrc
重新加载配置文件。
之后就可以在任意路径下使用 play 命令了。