find 用法 find命令非常强大,此处仅介绍三种常用简单用法, 更加复杂的用法可参考 这里 。 按文件名查找 find directory -name pattern 该命令将在"directo
find 用法
find命令非常强大,此处仅介绍三种常用简单用法, 更加复杂的用法可参考 这里 。
按文件名查找
find directory -name pattern
该命令将在"directory"中查找所有名字匹配shell模式"pattern"的文件,例如:
find $HOME -name *.mp3
可在用户根目录树下查找所有的mp3文件, 这意味着find将遍历$HOME的所有子目录结构找出所有的mp3文件。 如下命令
find . -name "*.*" | xargs grep "abc"
则可以将当前目录(包括子目录)下所有包含字符串“abc”的文件全部列出。
按类型查找
find $HOME -type [d|f|l]
该命令在用户根目录下查找类型为"d"(目录),"f"(文件)或"l"(链接)的文件。
按时间查找
find $HOME -mtime 0
该命令在用户根目录下查找所有过去24小时内修改过的文件。 由于时间是被24小时除的商,余数会被忽略,所以此处"-mtime 0"意味着修改时间小于24小时。
mplayer 用法
作为Linux下最强大的媒体播放器(没有之一),mplayer是相当常用的软件。有时候需要在命令行下使用mplayer,下面给出几个这样的例子:
mplayer --playlist file --playlist-start 3 --loop 0 --shuffle
随机循环播放文件列表"file"中的文件,"file"可以是简单的文本文件, 每一行记录了一个媒体文件的路径,"--playlist-start number"则代表从播放列表的第几项开始。其中选项"--loop number"给出了循环次数, 0代表无限循环;而选项"--shuffle"则代表随机播放。
mplayer http://mplayer.hq/example.avi -cache 1000000
该命令播放网络文件example.avi,其网址为"http://mplayer.hq/example.avi"。 该播放器也支持ftp协议,为了流畅播放,利用选项"-cache 1000000"设置缓存为1000000K Bytes。 更多用法可参考mplayer官方网站。
随机密码生成
有时候生成随机密码是有用的,特别是对于某些密码安全要求bt的无聊网站。 生成的密码可以保存在邮件或某个文件中备用。
echo `< /dev/urandom tr -dc [:graph:] | head -c 12`
该命令可生成12位的包含大小写字母,数字和特殊字符的密码。 其中"/dev/urandom"不断生成随机数并传给"tr"命令,tr命令可处理字符串, 此处"-dc [:graph:]"选项将生成的随机数转换为字符,并从中选取不包含空格的字符串。 该结果被管道传递给"head"命令,选项"-c 12"表明输出其最开始的12个字符。 "echo"命令则仅保证输出换行,使格式看上去好看一些。
批量建立软链接
有时在linux下编译软件后生成多个可执行文件, 希望一次性执行命令在$PATH路径能够找到的地方建立软链接,可以利用如下命令
ls /path2A | xargs -i ln -s /path2A/{} /path2B/{}
在目录B下一次性建立目录A下所有文件的软链接。其中"-i"表示"-I{}", 即用前面通过管道传递过来的参数(以换行符分隔)代替后面的"{}"。
程序运行和终止控制
有时候希望程序在后台运行,这样在终端里可以做别的事情; 有时候希望终止后台运行的程序;以及将后台程序切换到前台运行, 或者将正在运行的程序切换到后台。以下例子简要概括了这些需求的实现。
firefox &
该命令可以将firefox放在后台运行,在终端执行该命令后,会新开一个firefox 窗口,但是终端中可以继续执行其他命令。如果不在命令后面加"&", 则将打开一个firefox窗口,同时终端中无法运行其他命令。
ctrl+z
该键盘操作可将当前在前台执行的命令放到后台,并暂停。
fg和bg
fg可将后台中的命令调至前台继续运行; bg可将一个在后台暂停的命令变成继续执行。这俩命令常配合 ctrl+z 一起使用。
ps,kill和killall
ps命令可列出系统中正在运行的进程,并显示其进程号(PID, process ID); kill命令通常用来杀死进程,但其参数是进程号(PID); killall命令也用于杀死进程,但其参数是程序名。 kill除了可以终止进程,还能给进程发送其它信号,利用
kill -l
可以查看kill支持的信号。
kill -9 pid
常用于强制杀死进程。
umask
为了团队合作,有时候有必要让同一个组群内的用户创建的文件可以被 (该组群内的)其他用户访问,此时可以利用umask命令修改默认权限。
umask 002
该命令使得所有新创建的文件具有rw-rw-r--(664)权限, 使所有新创建的文件夹具有rwxrwxr-x(775)权限。 umask命令后的参数代表补码,对于文件,其权限为666减去该参数, 对于文件夹,则权限为777减去该参数。 将该命令加入用户根目录下.profile文件中, 则用户每次登录都自动修改默认权限。
边打包边上传
用ssh上传下载文件时,打包能提高传输效率。以下命令可以对文件夹进行打包,然后传输到远程计算机中。
tar czvf - /path/to/src | ssh user@remote_computer "cat > /path/to/dest"
注意上面/path/to/src既可以是文件也可以是文件夹,而/path/to/dest则为文件名,执行完后在/path/to目录下有一个dest的压缩文件,可以用tar解压。如果想边压缩边解压,也可以用如下命令
tar czvf - /path/to/src | ssh user@remote_computer "tar zxvf - -C /path/to/dest"
同样,/path/to/src可以为文件或文件夹,/path/to/dest则只能为文件夹,执行完后在/path/to/dest目录下会有一个名为src的目录或文件。
另外,用scp也可实现类似功能,但效果差一些,耗时更久
scp -r -C /path/to/src user@remote_computer:/path/to/dest
由于采用了-r参数,因此/path/to/src既可以是文件也可以是目录,执行完后在/path/to/dest目录中会有一个名为src的目录或文件。
利用ffmpeg转换媒体文件格式
ffmpeg是一个强大的多媒体处理程序包,以下所有命令需安装ffmpeg之后才能使用。此处简单介绍如何用ffmpeg对媒体格式进行转换,以wma和mp3互转为例,下面的命令将input.wma文件转换为output.mp3文件。
ffmpeg -i input.wma -ab 64 -ar 22050 output.mp3
其中-ab 64代表比特率,主要影响输出文件output.mp3的大小,-ar 22050则是音频采样率。一般来说,mp3文件的比特率使用wma的2倍或3倍,采样率则与wma文件一致即可。
下面的命令可以将mp3文件转换成wma文件。
ffmpeg -i input.mp3 -ab 24 -ar 22050 -acodec wmav2 output.wma
此处增加了-acodec wmav2选项,代表采用什么编码器。wmav1, wmav2, wmvv1, wmvv2分别对应于wma7, wma8, wmv7, wmv8。不仅如此,还可以利用ffmpeg从视频中抽出音频单独存为一个文件。比如下面的命令
ffmpeg -i input.mp4 -vn -acodec aac -ar 16000 -f wav output.wav
可以把视频文件input.mp4中的音频流提取出来另存为output.wav,其中-vn选项代表禁止视频输出(类似的还有-an禁用音频输出),-f wav强制使用wav格式封装。注意可以用选项-acodec copy表示与输入文件中同样的编码格式。
对于文件input.mp4,可以利用如下命令查看其编码信息。
ffmpeg -i input.mp4
下面的命令列出ffmpeg支持的所有格式。
ffmpeg -encoders
可以使用如下指令将音频文件的不同声道提取出来。
ffmpeg -i input.mp3 -map_channel 0.0.0 letf.aac -map_channel 0.0.1 right.aac
或者用如下指令将两个音频文件合并为双声道。
ffmpeg -i left.aac -i right.aac -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" output.aac
还可以用如下命令将多个文件拼接在一起(注意是拼接不是合并)
ffmpeg -i 片头.wav -i 内容.WAV -i 片尾.wav -filter_complex '[0:0] [1:0] [2:0] concat=n=3:v=0:a=1 [a]' -map [a] 合成.wav
此外,还可参考如下文章学习对视频模糊、锐化和降噪等处理方法。
https://www.jianshu.com/p/9d6fe9bc96fc
解压乱码
有时候用系统自带的压缩包查看器查看和解压会看到乱码,但系统能正常显示中文。此时可通过下面的命令指定字符集解压即可。
unzip -O GBK filename.zip
或者安装unrar,用unrar解压可自动识别字符集编码。
查看是否安装某库
安装或运行软件的时候,经常会遇到缺少某些动态链接库(.so文件)的情况,但实际上执行apt安装又发现已经装过了,此时可以用如下方法查看该库在什么位置。
ldconfig -p | grep "libxxxx"
其中libxxxx即为要查询的库文件名称,比如libpng, libXp等。如果确实显示已经安装过,只是版本不对或者路径有问题,则可通过创建软链接尝试解决依赖问题。
网络监测
可以通过如下命令获取网络上设备的信息
sudo nmap -O ip_address
选项-O代表开启操作系统探测。比如
sudo nmap -O 192.168.1.1
更多用法可参考帮助信息。
如果是服务器或者路由器,可以通过如下被动方式获取连接的客户机信息,
sudo p0f
运行如上命令后,当有连接进来时,终端会显示连入的客户机信息,如下图所示。
Screen用法
screen -S windowname #新建窗口 screen -ls #查看所有screen会话screen -r windowname #进入会话#按键盘上面的Ctrl+a,然后再按d #离开当前的screen会话exit #在screen会话中退出当前screenscreen -wipe windowname #删除dead会话
其中windowname是对应的screen会话名称。