命令行实例
叶寻
目次
本文用于收集我记不住的实用的命令行用法。
docker #
1
2
3
| # 启动已停止的容器
docker start f357e2faab77 # restart it in the background
docker attach f357e2faab77 # reattach the terminal & stdin
|
docker - I lose my data when the container exits - Stack Overflow
下载视频和音频 #
1
2
3
4
5
| # 下载视频
you-get https://www.iqiyi.com/v_m72044yl88.html
yt-dlp https://www.youtube.com/watch\?v\=9gfECJHQElo
# 下载 Youtube 歌单(最佳质量、附上序号)
yt-dlp --output '%(playlist_index)s-%(title)s.%(ext)s' -f 'bestaudio' 'https://www.youtube.com/watch?v=T4SimnaiktU&list=PLfAuqOtSFlrAwfk6j3PlSXhssBXzcXREw'
|
批量转换媒体格式 #
1
2
| # 把当前文件夹的所有 .webm 文件转换为 .mp3
for i in *.webm; do ffmpeg -i "$i" "${i%.*}.mp3"; done
|
去广告看视频 #
1
| you-get -p vlc https://www.iqiyi.com/v_m72044yl88.html
|
转换图片格式 #
先安装 ImageMagick:
1
| sudo apt install imagemagick
|
把 jpg 图片转换为 png 图片:
1
| convert input.jpg output.png
|
合成音频文件 #
SoX 和 Mp3Wrap 都可以用来合成 MP3。他们的区别如下(测试文件大小为 3.7 MB 和 4.4 MB):
| SoX | Mp3Wrap |
---|
速度 | 10.5 秒 | 瞬间 |
还原文件 | 否 | 是 |
正常播放(Elisa、VLC、mpv) | 是 | 只有 mpv 可以正常播放,其他播放器播放听起来不太对劲 |
输出文件/源文件 | 97.7% | 100.006% |
| | |
SoX #
安装 SoX:
1
| sudo apt-get install sox libsox-fmt-mp3
|
把 input-1.mp3
和 input-2.mp3
合成为 output.mp3
:
1
| sox input-1.mp3 input-2.mp3 output.mp3
|
注意,要按顺序输入待合成的 MP3,把输出文件写在最后。
Mp3Wrap #
安装:
1
| sudo apt install mp3wrap mp3splt
|
把 input-1.mp3
和 input-2.mp3
合成为 output.mp3
:
1
| mp3wrap output.mp3 input-1.mp3 input-2.mp3
|
注意,这次是先写输出文件,再写输入文件。输出的文件会加上后缀 MP3WRAP
,所以生成的输出文件名为 output_MP3WRAP.mp3
。这个后缀用于提醒用户文件是 Mp3Wrap 生成的,可以用 Mp3splt 还原:
1
2
| mp3splt -w output_MP3WRAP.mp3
# -w Warp Mode,用于拆分由 Mp3Wrap 和 AlbumWrap 生成的文件
|
上述命令会把 output_MP3WRAP.mp3
还原成原来的 input-1.mp3
和 input-2.mp3
(不会删除 output_MP3WRAP.mp3
)。还原出来的文件和原文件是一模一样的。
拆分音频文件 #
把 MP3 拆分多个文件,每份 30 秒:
1
| ffmpeg -i input.mp3 -f segment -segment_time 30 -c copy out%03d.mp3
|
剪辑视频 #
剪取 input.mp4
06:01.511 至 06:23.841 的内容,并保存为 output.mp4
:
1
| ffmpeg -ss 06:01.511 -to 06:23.841 -i input.mp4 -c copy output.mp4
|
选项含义:
-ss
(set the start time)指定视频开始时间-to
指定结束时间-i
(input)指定输入文件-c copy
表示使用相同编码方式(速度更快)output.mp4
是输出文件名
这些选项一定要按照顺序写,不然剪出来的视频时间不对。
我试过把 -i
先写在前面,也就是这样:
1
| ffmpeg -i input.mp4 -ss 06:01.511 -to 06:23.841 -c copy output.mp4
|
结果输出视频开头的时间总是不对,然后整了两小时都不知道咋回事。遇到 ffmpeg 以前,我都不知道命令行软件的选项位置会影响结果。啊!多么痛的领悟!如果把 -c copy
选项也去掉的话,输出视频又正确了,真是搞不懂啊。
1
| ffmpeg -i input.mp4 -ss 06:01.511 -to 06:23.841 output.mp4
|
视频遮罩 #
在 1080P 的视频底部加上 100 像素高的黑色长方形遮罩。文档:https://ffmpeg.org/ffmpeg-filters.html#drawbox。
1
| ffmpeg -i input.mp4 -vf "drawbox=x=0:y=(ih-100):w=iw:h=100:color=black:t=fill" output.mp4
|
输出好看的 PATH 变量 #
如果直接用 echo $PATH
查看 PATH 变量,结果很难看,很难分清楚哪个目录是哪个。
1
2
| $ echo $PATH
/home/user/bin:/home/user/.local/bin:/home/user/bin:/home/user/.local/bin:/home/user/bin:/home/user/.local/bin:/home/user/bin:/home/user/.local/bin:/home/user/miniconda3/condabin:/home/user/bin:/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
|
用 tr ':' '\n' <<< "$PATH"
,结果一目了然。<<<
把右边的 $PATH
传递到左边,tr ':' '\n'
把 $PATH
中的 :
转换为换行符。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| $ tr ':' '\n' <<< "$PATH"
/home/user/bin
/home/user/.local/bin
/home/user/bin
/home/user/.local/bin
/home/user/bin
/home/user/.local/bin
/home/user/bin
/home/user/.local/bin
/home/user/miniconda3/condabin
/home/user/bin
/home/user/.local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
|
参考:shell - Show PATH in a human-readable way - Unix & Linux Stack Exchange
KDE Plasma #
1
2
3
4
| # 重启 Plasma
kquitapp5 plasmashell; sleep 2; kstart5 plasmashell
# 重新加载软件列表
kbuildsycoca5
|
参考:kwin - Can I restart the KDE Plasma Desktop without logging out? - Ask Ubuntu
设置华为笔记本充电阈值(charge threshold) #
1
| echo "40 70" | sudo tee /sys/devices/platform/huawei-wmi/charge_control_thresholds
|
giscus 评论。如果评论未加载,giscus 可能被你的互联网服务提供商屏蔽。
Disqus 评论。如果评论未加载,Disqus 可能被你的互联网服务提供商屏蔽。