如何从 bash 完成中删除命令?

如何从 bash 完成中删除命令?

对于 bash 完成,我想替换youtube-dlyoutubedl.

我可以为 建立一个别名youtubedl,但是,两者都youtube-dlyoutubedl存在。

主要是,我只想youtube-dl从 bash 补全中删除,并为youtubedl.

答案1

更新:修改答案以澄清不适用于非软件包安装

如果您使用首先列出的手动安装进行安装youtube-dl github 页面,那么此方法将允许您使用youtube-dl自定义名称youtubedl,而无需看到youtube-dl自动完成。在您的终端上:

$ cd /usr/local/bin/

$ sudo mv youtube-dl youtubedl

您现在可以使用它的新名称youtubedl,通过测试视频尝试一下:

$ youtubedl -F 'https://www.youtube.com/watch?v=BaW_jenozKc'

您将来还可以升级:

$ youtubedl -U

保修单

  • 版本:2016.01.15,重命名然后升级到2016.04.05.看youtube-dl --version
  • 仅使用以下位置的手动安装说明安装了 youtube-dl 进行了测试youtube-dl github 页面,未使用软件包安装方法进行测试。因此,如果 youtube-dl 是使用可能对安装位置进行硬编码的包管理系统安装的,则此答案可能不起作用

解释

youtube-dl github 页面遵循的指示是:

$ sudo curl https://yt-dl.org/latest/youtube-dl -o /usr/local/bin/youtube-dl
$ sudo chmod a+rx /usr/local/bin/youtube-dl
  • 这会将youtube-dl二进制文件下载到/usr/local/bin.
  • $PATH自动完成时会显示其中的路径。
  • /usr/local/bin确实是这样的路径之一$PATH,因此youtube-dl将出现在 Bash 自动完成中。

因此,要重命名 Bash 自动完成中出现的内容,一种方法是重命名二进制文件本身。我们访问二进制文件的位置:

$ cd /usr/local/bin/

改名:

$ sudo mv youtube-dl youtubedl
  • /usr/local/bin是一个受限目录,所以我们使用sudo

旧名称将不再被发现:

$ which youtube-dl
youtube-dl not found

现在我们可以用新名称来引用它:

$ which youtubedl
/usr/local/bin/youtubedl

我们可以测试它是否仍然有效,例如使用以下命令进行升级-U

$ youtubedl -U
Updating to version 2016.04.05 ...
Updated youtube-dl. Restart youtube-dl to use the new version.

测试其视频功能,例如检索格式:

$ youtubedl -F 'https://www.youtube.com/watch?v=BaW_jenozKc' | head
[youtube] BaW_jenozKc: Downloading webpage
[youtube] BaW_jenozKc: Downloading video info webpage
[youtube] BaW_jenozKc: Extracting video information
[youtube] BaW_jenozKc: Downloading MPD manifest
[info] Available formats for BaW_jenozKc:
format code  extension  resolution note
249          webm       audio only DASH audio   47k , opus @ 50k, 57.05KiB
250          webm       audio only DASH audio   66k , opus @ 70k, 79.56KiB
171          webm       audio only DASH audio   74k , vorbis@128k (44100Hz), 89.59K
iB
140          m4a        audio only DASH audio  127k , m4a_dash container, mp4a.40.2
@128k (44100Hz), 154.06KiB

从源代码来看update.py,第 86 行:

filename = sys.argv[0]
  • 因此,此更新代码会检测当前程序的文件名,从而使您能够yourcustomname -U并且仍然能够成功更新。

答案2

关于什么ln -s /usr/bin/youtube-dl ~/bin/dlyoutube

相关内容