记录一些稍微比较难记的命令行
short list
find echo $PATH |sed "s/:/ /g"
-name pdf
chsh -s $(which zsh)
git clean -dfx 从git仓库中移除所有没有被追踪的文件或目录
ffmpeg -i 456_1.jpg -s 1080x960 -pix_fmt nv21 image1.yuv
convert 456.jpg -crop 960x1080 [offset] parts-456_%02d.jpg
echo $str|tr ’ ’ ‘\n’ # 替换 空格和换行
shopt -s extglob ; #rm -f !(a) 删除反匹配文件
tail -f /var/log/messages #参数-f使tail不停地去读最新的内容,这样有实时监视的效果
cp /usr/bin/{gawk,mawk}
使用grep命令搜索源码 grep <搜索目录> -r –include= -e
批量重命名
export index=0;for file in ./s*.txt ;do tname= (echo file|sed “s/([0-9]{2})/ index/g");echo tname;mv file tname;((index++)); done
du 读文件夹大小并排列
du -d 1 ~/repos/ |sort -k 1n -n
total frame count.
ffmpeg -i ../456.MP4 -vcodec copy -f rawvideo -y /dev/null 2>&1
super push
adb push ./ijkplayer/ijkplayer-armv7a/src/main/libs/armeabi-v7a/libijkplayer.so /sdcard/ && adb shell su -c mv /sdcard/libijkplayer.so /data/app/tv.danmaku.ijk.media.sample-1/lib/arm/
number scale
$ echo "ibase=16;obase=2;F1" | bc
commandline和GUI下的clipboard的交互Mac下
echo $PATH | pbcopy,copy to clipboard
echo "$(pbpaste -Prefer text)",copy from clipboard
批量ln:
for file in ./ *;\
do ARM_TMP=`echo $file |sed -e 's/arm-none-linux-gnueabi-/arm-linux-/'`;ln -s $file $ARM_TMP;
done
显示排序的,阅读友好的当前工作目录内的文件和目录大小列表
du -had 1| sort -h
把两次提交的差异化文件拷贝出来
git diff --name-only --diff-filter=AMXTCR HEAD~2 HEAD | xargs -l -I{} cp --parents --verbose "{}" target_dir
shell转义符有三种,不只是 \ 。 单引号、双引号、反斜杠。
‘’(单引号) 又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
“”(双引号) 又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替
(反斜杠) 又叫转义,去除其后紧跟的元字符或通配符的特殊意义。
shell常见 通配符:* ? [ ] { }
如果想查找当前目录(/home/student)下的tmp.txt文件,但是想要避开sep目录:
find /home/student -path /home/student/sep -prune -o -name “tmp.txt” -print
OR 命令
find /sys/ -type f ( -name bind -or -name unbind -or -name new_id ) -ls
重导向批量转码
find . -name "*.h" -exec bash -c "iconv -f GBK -t UTF-8 {} > {}.tmp;mv -f {}.tmp {}" \;
< bash高级脚本编程 >