我正尝试尽可能多地使用终端,以便熟悉它。在使用电脑时,我最常使用命令行而不是 GUI 的地方是当我尝试查找我感兴趣的歌曲时。
我的音乐文件夹结构如下音乐->乐队->专辑->歌曲
我经常忘记什么专辑A歌曲但我总是记得什么乐队播放了那首歌。
我没有搜索音乐目录,因为查找歌曲需要很长时间(我有很多音乐),所以我在找到歌曲后搜索歌曲乐队目录。现在在命令行中我有
# totem /home/user/Music/Red\ Hot\ Chili\ Peppers/
但我忘了什么专辑这歌曲“Dani California” 在里面(totem 是 gnome 中的音乐播放器)。对我来说解决这个问题最快的方法是进入文件管理器 GUI 中的 Red Hot Chili Peppers 文件夹,按 ctrl+f 并输入“Dani California”。
有没有办法在我编写命令的过程中从终端搜索目录中的内容?或者您对如何最快地从命令行实现我在 GUI 中执行的相同目标有什么建议?
答案1
由于自动完成功能不起作用,这不是特别直观,但您可以使用文件掩码实现您想要的效果:
totem /home/user/Music/Red\ Hot\ Chili\ Peppers/*/Dani\ Ca*
另一个选项是使用 find,然后让它将找到的文件名传递给 totem:
find . -name "Dani Calif*" -exec totem '{}' +
虽然这并不完全是“在输入命令时进行搜索”
答案2
按两次“tab”键即可获得文件或目录列表。然后只需输入所需内容的一部分,再按“tab”键即可完成。
答案3
这个问题很有意思。这是强迫自己使用 CLI 的巧妙方法。但是,老兄,这对于音乐来说太痛苦了。我不知道如何忍受 Totem 的限制(相对于 Banshee 或 Rhythmbox)。我认为禁止自己使用 Nautilus 和 gedit 足以迫使你更频繁地使用终端。
但我钦佩你的耐心和纪律。也许你可能想研究一下 CLI/终端导向的音乐播放器。以下是一些不错的评论: http://www.linux.com/archive/feature/124907
如果这些选项都无法解决您提出的问题,我提前向您表示歉意,但考虑到您问题的背景,我认为您可能会发现这些选项仍然很有趣。祝您好运。
答案4
也可以通过以下方式完成Bash 可编程完成。我整理了一个小示例脚本。
下面的脚本完成了fap
(查找并播放) 命令,您应该单独定义该命令,例如
fap
#! /bin/sh
file="$2"
totem "$file" > /dev/null &
exit 0
然后将以下脚本放入/etc/bash_completion.d
目录中
/etc/bash_completion.d/fap
_fap()
{
local cur prev dir i saveIFS
COMPREPLY=()
_get_comp_words_by_ref cur prev
saveIFS=$IFS
IFS=$'\n'
dir="$cur"
if [ -z "$cur" ]; then
dir="/home/user/music"
elif ! [ -d "$cur" ]; then
dir="`dirname "$cur"`"
fi
local files=$(find `dequote "$dir"` -type f -iname "*${prev}*" -printf "%p\n")
COMPREPLY=( $( compgen -W "${files}" -- $cur ) )
for ((i=0; i < ${#COMPREPLY[@]}; i++)); do
_quote_readline_by_ref ${COMPREPLY[i]} COMPREPLY[i]
done
IFS=$saveIFS
return 0
} &&
complete -F _fap -o nospace fap
相应地更改行dir="/home/user/music"
(启动您的音乐收藏的文件夹)。接下来,将脚本作为源
. /etc/bash_completion.d/fap
现在你可以像这样使用 TAB 补全
fap frozen [TAB]
fap frozen /home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/09\ -\ Madonna\ -\ Frozen.mp3
或者,如果有更多选择
$ fap girl [TAB]
$ fap girl /home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/[TAB][TAB]
/home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/04\ -\ Madonna\ -\ Candy\ Perfume\ Girl.mp3
/home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/13\ -\ Madonna\ -\ Mer\ Girl.mp3
$ fap girl /home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/0[TAB]
$ fap girl /home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/04\ -\ Madonna\ -\ Candy\ Perfume\ Girl.mp3