Skip to content

LinuxCommand

kcp edited this page Jul 13, 2020 · 4 revisions

title: Linux常用命令 date: 2018-12-15 11:11:55 tags: - 工具 categories: - Linux

目录 start

  1. 系统常用基础命令
    1. 系统内置命令
      1. Shell内建命令
    2. 输入输出
      1. 重定向
    3. 管道
      1. xargs
    4. time
    5. date
    6. grep
    7. script
    8. 定时任务
      1. crontab
      2. Systemd
  2. 多媒体
    1. ffmpeg
    2. 视频播放器

目录 end|2020-04-27 23:42|


系统常用基础命令

Linux 命令大全

The Art of Command Line 高效优美的工具

系统内置命令

/bin/* 系统自带命令

  • false 以失败码退出程序

  • stty -a 查看快捷键映射

  • 终端内执行循环

    • for i in $(seq 1 10); do echo $i; done 语法和Shell差不多, 但是需要在循环体的每一句加上;

Shell内建命令

  • whence 查看命令的真实面貌 (zsh中的内建命令)
  • where 查找命令的位置 (Zsh中内建命令)
  • which 寻找命令的位置
  • type 展示命令的描述

输入输出

重定向

  • 输出重定向 > a.log 2>&1 表示为将2也输出到标准输出 为了方便记忆也可以将 &1 理解为C语言中的取地址符:2重定向到1的地址
    • 2 是错误输出 1 是标准输出

管道

参考: linux 管道 参考: linux shell 管道命令(pipe)使用及与shell重定向区别

  • 接收输入流且输出流 类似于 Java8 中的 peek() 函数
    • cat README.md | grep Java | tee > java.log | grep -v Maven

xargs

常在管道中使用 能将输入流转为 命令 的参数

  • 输出所有的md文件的内容 find . -name "*.md" | xargs cat | less

time

可以用于统计命令运行消耗的时间

  • bash内置简易time time 和 /usr/bin/time \time
    • \time -v ls -al

date

获取日期和时间 date +%Y_%m_%d_%H:%M:%S 或者 date +%F %T

  • 获取前一天日期 date --date='1 day ago' -R
  • 将秒时间戳转换为日期 date --date='@1524738626'

grep

g (globally) search for a re (regular expression ) and p (print ) the results.

egrep 相关网页 与 grep -E 等价

  • 正则 grep -E "[1-9]+" 注意 [] 是里面单个字符 ()是里面所有字符一起 用于匹配

  • -o 一行内多次匹配

    • 统计所有 main 数量 grep -o main test.log | wc -l
  • -i 忽略大小写

  • 匹配中文

    1. -P '[\p{Han}]'

script

make typescript of terminal session

录制终端


定时任务

crontab

参考博客 shell定时任务crontab minute hour day-of-month month-of-year day-of-week commands

cron 脚本中的操作命令 最好都使用绝对路径, 必须注意环境变量问题

    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name command to be executed

Systemd

参考: Systemd 定时器教程 配置和使用上比Crontab更繁杂, 但是有更多的可控制项


多媒体

ffmpeg

Official Site

  • 查看属性 ffprobe -pretty target.mp4

m3u8 URL 转换为mp4

  • ffmpeg -i http://xxx.m3u8 -c copy -bsf:a aac_adtstoasc output.mp4

  • 获取视频中的音频 ffmpeg -i input.mp4 -vn -y -acodec copy output.m4a

  • 去掉视频中的音频 ffmpeg -i input.mp4 -an output.mp4

  • 合并视频 ffmpeg -f concat -safe 0 -i file.cfg -c copy result.mp4

    • file.cfg 内容为多行文件 : file '/path/to/file'
  • 截取视频 ffmpeg -ss 00:00:00 -t 00:00:30 -i input.mp4 -vcodec copy -acodec copy output.mp4

    • -ss 开始时间 -t 截取时长 -q 0 无损 -c copy表示不必重新编码

视频播放器

参考: Top 10 Best Linux Video Players

Summary

Clone this wiki locally