__    __               __           __               ____    ___                       
/\ \  /\ \             /\ \      __ /\ \             /\  _`\ /\_ \                      
\ `\`\\/'/__  __    ___\ \ \___ /\_\\ \/      ____   \ \ \L\ \//\ \     ___      __     
 `\ `\ /'/\ \/\ \  /'___\ \  _ `\/\ \\/      /',__\   \ \  _ <'\ \ \   / __`\  /'_ `\   
   `\ \ \\ \ \_\ \/\ \__/\ \ \ \ \ \ \      /\__, `\   \ \ \L\ \\_\ \_/\ \L\ \/\ \L\ \  
     \ \_\\/`____ \ \____\\ \_\ \_\ \_\     \/\____/    \ \____//\____\ \____/\ \____ \ 
      \/_/ `/___/> \/____/ \/_/\/_/\/_/      \/___/      \/___/ \/____/\/___/  \/___L\ \
              /\___/                                                             /\____/
              \/__/                                                              \_/__/ '`

此页内容多为软件使用技巧,绝大部分内容来自互联网,如有侵权,请与联系。也有部分内容系自己使用软件所得的一些经验,仅供参考。

FFmepg

转视频为gif

ffmpeg -i input.mkv out.gif

又:加速播放。假设原视频 60 fps,输出降到 30 fps,丢掉一半的帧。

ffmpeg -r 60 -i input.mkv -r 30 out.gif

又:不想丢帧。将输入扩大一倍,输出保留原样。

ffmpeg -r 120 -i input.mkv -r 60 out.gif

又:不想全转。从视频的第2秒开始,截取3秒转化为gif。

## 从视频中第二秒开始,截取时长为3秒的片段转化为 gif
ffmpeg -t 3 -ss 00:00:02 -i input.mkv out-clip.gif

又:控制转化质量。

## 默认转化是中等质量模式,若要转化出高质量的 gif,可以修改比特率
ffmpeg -i input.mkv -b 2048k out.gif

ImageMagick

图片转换

转换图片为指定分辨率。

convert -resize 1920x1080 src.jpg dst.jpg

又:按百分比转换大小。

convert -resize 50%x50% src.jpg dst.jpg

又:忽略原始宽高比。

convert -resize 300x300! src.jpg dst.jpg

shell基础

Command find

$ find --help
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

前面的选项不常用,初级使用只需掌握

find [path...] [expression]
  • path - search path
  • expression - expands to -options [-print -exec -ok]
    • -options: 指定find常用选项
    • -print: 将匹配到的文件写入标准输出[默认]
    • -exec: 在匹配到的文件上执行一串命令。格式为<command> {} \;,注意 {} 和 ; 之间的空格。
      • find . -size 0 -exec rm {} \; - 删除当前目录下size为0的文件
      • rm -i $(find . -size 0) - 同上
      • find . -size 0 | xargs rm -f & - 同上
    • -ok: 同上,执行命令前会询问

常用选项

  • name - 按照文件名查找
    • find <dir> -name "*.cpp": 在目录dir下查找后缀为cpp的文件
    • -name默认不支持正则表达式,顶多支持通配符*
  • perm - 按照文件权限查找
  • user - 按照文件所有者查找
  • group - 按照文件所有组查找
  • type - 按照文件类型查找
  • size - 按照文件大小查找

正则表达式

find path -regex "<regex>"

但是默认的正则表达式引擎我也不知道是啥,反正不解析我习惯的那种正则语法。故使用:

find . -regextype posix-extended -regex ".*\.(log|aux|blg)"

上述命令找出当前文件夹及子文件夹所有后缀名为log,aux,blg的文件。

几个例子

  • find . -name "*name*" - 找出当前文件夹文件名包含“name”的文件
  • find . ! -type d -print - 在当前目录查找非目录文件
  • find . -newer file1 ! file2 - 查找比file1新但比file2旧的文件
  • find -type d -empty | xargs -n 1 rmdir - 批量删除当前目录下的空文件夹
  • find -tyle l -exec ls -l {} + - 找出当前文件夹下损坏的软连接

Command grep

最基本用法:

# 查找somefile中匹配到something的行
$ grep "something" somefile
 
# 定位something所在的行并将接下来的3行一并输出
$ grep "something" somefile -A 3
 
# 定位something所在的行并将之前的3行一并输出
$ grep "something" somefile -B 3
 
# 定位something所在的行并将上下3行一并输出
$ grep "something" somefile -C 3

使用正则表达式

grep支持三种正则:basic (BRE), extend (ERE), perl (PCRE). 不同的grep实现方式不同,详见手册。一般extend最为常用,语法为

# 在somefile中查找包含his或者her的行
$ grep -E "his|her" somefile

Ref:


Command xargs

$ whatis xargs
xargs (1)            - build and execute command lines from standard input

Ref:


Command sed


Command cut

$ whatis cut
cut (1)              - remove sections from each line of files

基本用法:

# 以:为分隔符分割每行,并选择第1,2,4列输出
$ cut -d: -f1,2,4 /etc/passwd
root:x:0
bin:x:1
daemon:x:2
mail:x:12
ftp:x:11
http:x:33
nobody:x:65534
dbus:x:81

git手册

Command g++

自定义包含路径

g++ main.cpp -I/usr/local/include

自定义链接静态或动态库

g++ main.cpp -L/path/to/lib_file
g++ main.cpp -L/usr/lib64 -lcurl -lssl

上面第二个命令链接了/usr/lib64/目录下的libcurl.solibssl.so两个动态库文件。静态库也是同样链接。说起来静态库,想起了最近折腾的一个东西,你可能会想把多个静态库合成一个静态库,想当然的直接用ar合并,但是不行,必须要把两个静态库全解压出来,再合并所有的object file. 参见:here

生成机器码

g++ main.cpp -c

生成汇编代码

g++ main.cpp -S

仅预编译

g++ main.cpp -E > main.i

Aria2c

aria2c 是个好东西。支持连接,磁力,种子下载。轻量且强大,可直接使用,也可作为服务端,配合WebUI使用。

Note: jsonrpc 地址格式为 http://token:<rpc-secret>@hostname:port/jsonrpc 令牌填写自己设置的 rpc-secret

xxx 替换为自己设置的 rpc-secret

MPV

MPV 是一个轻量、简约、跨平台的播放器。据我自己体验,在Linux下比mplayer播放效果要好,mplayer倍速会掉帧,而mpv则不太明显。

HTML

给网页添加BGM。

<embed src="bgm.mp3" autostart="true" loop="true" width="300" height="20" hidden="true">

又,添加可以控制播放的音乐。

<audio autoplay="autoplay" controls="controls" loop="loop" preload="auto" src="music.mp3">Your browser doesn't support H5 audio flag!</audio>

使用xrandr设置多屏显示

$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 294mm x 165mm
   1920x1080     59.93*+
   1680x1050     59.95    59.88
   1400x1050     59.98
   1600x900      59.99    59.94    59.95    59.82
   1280x1024     60.02
   1400x900      59.96    59.88
   1280x960      60.00
   1440x810      60.00    59.97
   1368x768      59.88    59.85
   1280x800      59.99    59.97    59.81    59.91
   1280x720      60.00    59.99    59.86    59.74
   1024x768      60.04    60.00
   960x720       60.00
   928x696       60.05
   896x672       60.01
   1024x576      59.95    59.96    59.90    59.82
   960x600       59.93    60.00
   960x540       59.96    59.99    59.63    59.82
   800x600       60.00    60.32    56.25
   840x525       60.01    59.88
   864x486       59.92    59.57
   700x525       59.98
   800x450       59.95    59.82
   640x512       60.02
   700x450       59.96    59.88
   640x480       60.00    59.94
   720x405       59.51    58.99
   684x384       59.88    59.85
   640x400       59.88    59.98
   640x360       59.86    59.83    59.84    59.32
   512x384       60.00
   512x288       60.00    59.92
   480x270       59.63    59.82
   400x300       60.32    56.34
   432x243       59.92    59.57
   320x240       60.05
   360x202       59.51    59.13
   320x180       59.84    59.32
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 296mm
   1920x1080     60.00*+  60.00    50.00    59.94
   1920x1080i    60.00    60.00    50.00    59.94
   1600x1200     60.00
   1280x1024     75.02    60.02
   1152x864      75.00
   1280x720      60.00    60.00    50.00    59.94
   1024x768      75.03    60.00
   800x600       75.00    60.32
   720x576       50.00    50.00
   720x576i      50.00    50.00
   720x480       60.00    60.00    59.94    59.94    59.94
   720x480i      60.00    60.00    59.94    59.94
   640x480       75.00    60.00    59.94    59.94
   720x400       70.08

观察输出可知,连接了两个显示器(eDP-1, HDMI-2),其中eDP-1是主显示器。如果第二块屏幕无显示,执行下面的命令。

xrandr --output HDMI-2

又,指定分辨率为1920x1080,

xrandr --output HDMI-2 --mode 1920x1080

又,设置为右侧扩展屏,即光标向右可移动至第二块屏,

xrandr --output HDMI-2 --right-of eDP-1

又,连接上第二块屏,想关掉内置显示屏,(警告:不要随便关掉内置屏)

xrandr --output eDP-1 --off

又,开启内置屏。

xrandr --output eDP-1 --auto

网络

查看被监听端口

netstat -tulpn | grep LISTEN

Htop基本操作

Htop类似于top,但比top更现代化,支持鼠标操作,支持颜色主题。在命令行键入htop,会呈现如下界面。(图片来源:https://blog.csdn.net/freeking101/article/details/79173903)

平均负载区的三个数字分别表示过去5、10、15分钟系统的平均负载。进程区每一列的意义分别是:

  • PID: 进程号
  • USER: 进程所有者的用户名
  • PRI: 优先级别
  • NI: NICE值(优先级别数值),越小优先级越高
  • VIRT: 虚拟内存
  • RES: 物理内存
  • SHR: 共享内存
  • S: 进程状态(S[leep], R[unning], Z[ombie], N表示优先级为负数)
  • CPU%: 该进程占用的CPU使用率
  • MEM%: 该进程占用的物理内存和总内存的百分比
  • TIME+: 该进程启动后占用的CPU时间
  • Command: 该进程的启动命令

常用快捷键可在htop界面按?显示。

  • H: 显示/隐藏用户子线程
  • Space: 标记进程
  • k: 杀死已标记进程

Reference