From b5aba20552c06efad6ab7765e82eb7cb73b77265 Mon Sep 17 00:00:00 2001 From: Black-Gold Date: Mon, 3 Dec 2018 10:37:10 +0800 Subject: [PATCH] --- LearnShell/LinuxCommands/grep.md | 10 ++++- LearnShell/LinuxCommands/ls.md | 44 ++++---------------- LearnShell/LinuxCommands/sed.md | 71 +++++++++++++++----------------- LearnShell/LinuxCommands/sort.md | 22 +++------- 4 files changed, 55 insertions(+), 92 deletions(-) diff --git a/LearnShell/LinuxCommands/grep.md b/LearnShell/LinuxCommands/grep.md index e4979f9..5efb3ad 100755 --- a/LearnShell/LinuxCommands/grep.md +++ b/LearnShell/LinuxCommands/grep.md @@ -99,12 +99,12 @@ egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fa ```bash ^ # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。 $ # 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 -\ # 转义符 +\ # 转义符 . # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 * # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .* # 一起用代表任意字符。 [] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 -[^] # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 +[^] # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 \(..\) # 标记匹配字符,如'\(love\)',love被标记为1。 \< # 锚定单词的开始,如:'\ # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。 @@ -160,6 +160,12 @@ fgrep:快速grep命令,不支持正则表达式,与grep -F等价 ## grep命令常见用法 +显示系统上使用Bash shell登录的所有用户 +grep bash /etc/passwd | cut -d: -f1 + +搜索目录下十小时前更改的文件,不包括文件夹,只使用grep实现。(更好的方式用find实现) +ls -algG --time-style=+%s | grep ^[^d] | awk -vlimit=$(date +%s -d '10 hours ago') '$4 > limit { print substr($0, index($0, $4) + length($4) + 1) }' + 递归搜索含有某个关键字的文件目录 grep -iHR "关键字" ./* -i 对要搜索的字符忽略大小写 diff --git a/LearnShell/LinuxCommands/ls.md b/LearnShell/LinuxCommands/ls.md index d963dab..8504010 100755 --- a/LearnShell/LinuxCommands/ls.md +++ b/LearnShell/LinuxCommands/ls.md @@ -1,21 +1,14 @@ -ls -=== +# ls 显示目录内容列表 -## 补充说明 +## 说明 **ls命令** 用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。 -### 语法 +## 选项 -``` -ls(选项)(参数) -``` - -### 选项 - -``` +```sh -a:显示所有档案及目录(连同隐藏档,开头为.文件一起罗列出来); -A:显示全部文件和目录,连同隐藏文件,但不包括.和..这两个目录; -C:多列显示输出结果。这是默认选项; @@ -48,30 +41,11 @@ ls(选项)(参数) ### 实例 -```bash -$ ls # 仅列出当前目录可见文件 -$ ls -l # 列出当前目录可见文件详细信息 -$ ls -hl # 列出详细信息并以可读大小显示文件大小 -$ ls -al # 列出所有文件(包括隐藏)的详细信息 -``` - -显示当前目录下包括影藏文件在内的所有文件列表 - -``` -[root@localhost ~]# ls -a -. anaconda-ks.cfg .bash_logout .bashrc install.log .mysql_history satools .tcshrc .vimrc -.. .bash_history .bash_profile .cshrc install.log.syslog .rnd .ssh .viminfo -``` - -输出长格式列表 - -``` -[root@localhost ~]# ls -1 - -anaconda-ks.cfg -install.log -install.log.syslog -satools +```sh +ls # 仅列出当前目录可见文件 +ls -l # 列出当前目录可见文件详细信息 +ls -hl # 列出详细信息并以可读大小显示文件大小 +ls -al # 列出所有文件(包括隐藏)的详细信息 ``` 显示文件的inode信息 diff --git a/LearnShell/LinuxCommands/sed.md b/LearnShell/LinuxCommands/sed.md index 503028e..f201623 100755 --- a/LearnShell/LinuxCommands/sed.md +++ b/LearnShell/LinuxCommands/sed.md @@ -1,51 +1,46 @@ # sed -=== - 功能强大的流式文本编辑器 -## 补充说明 +## 说明 **sed** 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 -## sed的选项、命令、替换标记 - -### 命令格式 +## 命令格式 ```sh 用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]... - - -n, --quiet, --silent - 取消自动打印模式空间 - -e 脚本, --expression=脚本 - 添加“脚本”到程序的运行列表 - -f 脚本文件, --file=脚本文件 - 添加“脚本文件”到程序的运行列表 - --follow-symlinks - 直接修改文件时跟随软链接 - -i[SUFFIX], --in-place[=SUFFIX] - edit files in place (makes backup if SUFFIX supplied) - -c, --copy - use copy instead of rename when shuffling files in -i mode - -b, --binary - does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX ( - open files in binary mode (CR+LFs are not treated specially)) - -l N, --line-length=N - 指定“l”命令的换行期望长度 - --posix - 关闭所有 GNU 扩展 - -r, --regexp-extended - 在脚本中使用扩展正则表达式 - -s, --separate - 将输入文件视为各个独立的文件而不是一个长的连续输入 - -u, --unbuffered - 从输入文件读取最少的数据,更频繁的刷新输出 - -z, --null-data - separate lines by NUL characters - --help - display this help and exit - --version - output version information and exit +-n, --quiet, --silent + 取消自动打印模式空间 +-e 脚本, --expression=脚本 + 添加“脚本”到程序的运行列表 +-f 脚本文件, --file=脚本文件 + 添加“脚本文件”到程序的运行列表 +--follow-symlinks + 直接修改文件时跟随软链接 +-i[SUFFIX], --in-place[=SUFFIX] + edit files in place (makes backup if SUFFIX supplied) +-c, --copy + use copy instead of rename when shuffling files in -i mode +-b, --binary + does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX ( + open files in binary mode (CR+LFs are not treated specially)) +-l N, --line-length=N + 指定“l”命令的换行期望长度 +--posix + 关闭所有 GNU 扩展 +-r, --regexp-extended + 在脚本中使用扩展正则表达式 +-s, --separate + 将输入文件视为各个独立的文件而不是一个长的连续输入 +-u, --unbuffered + 从输入文件读取最少的数据,更频繁的刷新输出 +-z, --null-data + separate lines by NUL characters +--help + display this help and exit +--version + output version information and exit 如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为 sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准 diff --git a/LearnShell/LinuxCommands/sort.md b/LearnShell/LinuxCommands/sort.md index 0ed5974..f4e2e1e 100755 --- a/LearnShell/LinuxCommands/sort.md +++ b/LearnShell/LinuxCommands/sort.md @@ -1,21 +1,13 @@ -sort -=== - -将文件进行排序并输出 +# sort -## 补充说明 +## 说明 **sort命令** 是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。 +awk 'EXPRESSION { PROGRAM }' file(s) -### 语法 +## 选项 -``` -sort(选项)(参数) -``` - -### 选项 - -``` +```sh -b:忽略每行前面开始出的空格字符; -c:检查文件是否已经按照顺序排序; -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符; @@ -30,10 +22,6 @@ sort(选项)(参数) +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 ``` -### 参数 - -文件:指定待排序的文件列表。 - ### 实例 sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。