Linux 命令 - nieyamei/php-interview GitHub Wiki

在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档; linux系统内置的帮助文档很详细,通常能解决我们的问题,我们需要掌握如何正确的去使用它们;

比如可是使用 --help 查看帮助选项。如 ls --help

文件和目录管理

创建和删除

  • 创建文件夹 mkdir
  • 删除 rm
  • 删除非空目录 rm -rf 目录/文件
  • 删除日志 rm *log
  • 移动 mv
  • 复制 cp 复制文件cp -r
  • 创建文件 touch

查看

  • 显示当前目录下的文件 ls 按时间排序,以列表的方式显示目录项 ls -lrt
ls -l
  • 查看文件内容 cat 可以加more 、less控制输出的内容的大小
cat a.text
cat a.text | more
cat a.text| less

权限

  • 改变文件的拥有者 chown
  • 改变文件读、写、执行等属性 chmod
  • 递归子目录修改: chown -R tuxapp source/
  • 增加脚本可执行权限: chmod a+x myscript
  • 4[read]2[write]1[exe]

管道和重定向

  • 批处理命令连接执行,使用 |
  • 串联: 使用分号 ;
  • 前面成功,则执行后面一条,否则,不执行:&&
  • 前面失败,则后一条执行: ||
history | grep mysql

文本处理

文件查找 find

find 参数很多,本文只介绍几个常用的 -name 按名字查找 -type 按类型 -atime 访问时间

find . -atime 7 -type f -print
find . -type d -print  //只列出所有目录
find / -name "hello.c" 查找hello.c文件

文本查找 grep

grep match_patten file // 默认访问匹配行 常用参数

  • -o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行
  • -c 统计文件中包含文本的次数
grep -c “text” filename
  • -n 打印匹配的行号
  • -i 搜索时忽略大小写
  • -l 只打印文件名
grep "class" . -R -n # 在多级目录中对文本递归搜索(程序员搜代码的最爱)
cat LOG.* | tr a-z A-Z | grep "FROM " | grep "WHERE" > b #将日志中的所有带where条件的sql查找查找出来

文本替换 sed

sed [options] 'command' file(s)
  • 首处替换 sed 's/text/replace_text/' file //替换每一行的第一处匹配的text
  • 全局替换 sed 's/text/replace_text/g' file
  • 默认替换后,输出替换后的内容,如果需要直接替换原文件,使用-i:

sed -i 's/text/repalce_text/g' file

  • 移除空白行 sed '/^$/d' file sed 's/book/books/' file #替换文本中的字符串: sed 's/book/books/g' file sed '/^$/d' file #删除空白行