Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1281
  • 博文数量: 25
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2018-03-18 14:10
个人简介

10+从业经验,3CCIE、HCIE、红帽RHCA、VCP。获取Linux资料,可+v:glab-mary

文章分类
文章存档

2025年(8)

2024年(17)

我的朋友
最近访客

分类: LINUX

2025-01-22 13:18:36


重定向

标准输入stdin: 代码为0, 使用< 或<<
标准输出stdout: 代码为1, 使用>或>>
标准错误输出stderr: 代码为2, 使用2>或2>>
特殊写法:将stdout和stderr同时写入一个文件,使用2>&1

  1. # 将ll的结果重定向到out.txt文件中,如果文件中有内容则覆盖
  2. ll /home > out.txt
  3. # 将ll的结果追加到out.txt文件中
  4. ll /etc >> out.txt
  5. # stdout和stderr写入同一个文件
  6. find /home -name .bashrc > out.txt 2>&1 # 注意2>&1写在{BANNED}{BANNED}最佳佳后
  7. find /home -name .bashrc &> out.txt # 或者使用&>

管道

使用command A | command B | command C命令,将A命令产生的标准输出作为B命令的标准输入(注意只能接收前一个命令的标准输出)。
每个管道后必须接指令,且指令必须可以接收stdin才可以。如less, more, head, tail 都可以,ls, cp, mv 则不行。
如果要接收前一个命令的stdout,则需要使用2>&1将stdout转换为stdin。

tee命令

tee [OPTION]... [FILE]...
将stdin读取,写入stdout和file。
结合上面的管道:

点击(此处)折叠或打开

  1. # 将ll结果同时显示在屏幕和记录到文件中
  2. ll /home | tee list_home.out
  3. # 将find结果(正常和错误)同时显示在屏幕和记录到文件中
  4. find /home -name .bashrc 2>&1 | tee find.out

xargs命令

xargs [options] [command [initial-arguments]]
xargs读取stdin,以空格或换行作为分隔符,将stdin分割为参数。

点击(此处)折叠或打开

  1. # 将find的结果作为参数,传给ls -lh命令
  2. find /usr/sbin -perm /7000 | xargs ls -lh
  3. # 将find结果作为参数,传给du命令
  4. find /home -name "*.go" | xargs du -cb

文本处理 - vim, grep, awk, sed, sort, wc, uniq, cut, tr

grep

grep [OPTION...] PATTERNS [FILE...]
从文本中查找符合某个模式的文本。

点击(此处)折叠或打开

  1. # 查找list.out中包含rvs字符的行
  2. [leadcom@localhost test]$ grep rvs list.out
  3. drwx------ 4 rvs rvs 127 12月 16 18:41 rvs
  4. drwxrwxrwx 16 root root 285 8月 4 10:03 rvslocal
  5. drwxrwxrwx 2 root root 6 5月 10 2021 rvsremote
  6. # 结合管道查找前一个命令中包含某个字符的行
  7. ps -ef | grep postgres

cut

cut OPTION... [FILE]...
根据option将文件中的每行做处理,输出到到标准输出。
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

点击(此处)折叠或打开

  1. # 以:为分割符,取{BANNED}中国{BANNED}中国第一个元素
  2. gw1@gw1-PC:~$ echo $PATH
  3. /home/gw1/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin
  4. gw1@gw1-PC:~$ echo $PATH | cut -d ":" -f 1
  5. /home/gw1/.local/bin
  6. gw1@gw1-PC:~$ export
  7. declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
  8. declare -x DISPLAY="localhost:10.0"
  9. declare -x HOME="/home/gw1"
  10. declare -x LANG="zh_CN.UTF-8"
  11. declare -x LANGUAGE="zh_CN"
  12. declare -x LOGNAME="gw1"
  13. ...
  14. # 只取export每行的declare -x之后内容,即第12个字符后内容
  15. gw1@gw1-PC:~$ export | cut -c 12-
  16. DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
  17. DISPLAY="localhost:10.0"
  18. HOME="/home/gw1"
  19. LANG="zh_CN.UTF-8"
  20. LANGUAGE="zh_CN"
  21. LOGNAME="gw1"
  22. ...

awk

点击(此处)折叠或打开

  1. gawk [ POSIX or GNU style options ] -f program-file [ -- ] file ...
  2. gawk [ POSIX or GNU style options ] [ -- ] program-text file ...
  • 用法一
  • awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号

点击(此处)折叠或打开

  1. # 每行按空格或TAB分割,输出文本中的1、4项
  2. [leadcom@localhost test]$ cat log.txt
  3. 2 this is a test
  4. 3 Are you like awk
  5. This's a test
  6. 10 There are orange,apple,mongo
  7. [leadcom@localhost test]$ awk '{print $1,$4}' log.txt
  8. 2 a
  9. 3 like
  10. This's
  11. 10 orange,apple,mongo
  • 用法二 awk -F #-F相当于内置变量FS, 指定分割字符

点击(此处)折叠或打开

  1. [leadcom@localhost test]$ awk -F, '{print $1,$4}' log.txt
  2. 2 this is a test
  3. 3 Are you like awk
  4. This


sed

sed [OPTION]... {script-only-if-no-other-script} [input-file]...
sed [-hnV][-e][-f][文本文件]
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

 
	

点击(此处)折叠或打开

  1. 参数说明:
  2. -e<sript>--expression=<script> 以选项中指定的script来处理输入的文本文件。
  3. -f<script文件>--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
  4. -n或--quiet或--silent 仅显示script处理后的结果。
  5. 动作说明:
  6. a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
  7. c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  8. d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
  9. i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
  10. p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  11. s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
  12. [leadcom@localhost test]$ cat testfile
  13. HELLO
  14. Linux is a free unix-type opterating system.
  15. This is a linux
  16. Linux test
  17. # 标准输出中在第四行后增加一行
  18. [leadcom@localhost test]$ sed -e 4a"\naaaa" testfile
  19. HELLO
  20. Linux is a free unix-type opterating system.
  21. This is a linux
  22. Linux test
  23. naaaa
  24. # 标准输出中删除2到5行
  25. [leadcom@localhost test]$ nl testfile | sed '2,5d'
  26.      1    HELLO

sort

sort [OPTION]... [FILE]...
Linux sort 命令用于将文本文件内容加以排序。
sort 可针对文本文件的内容,以行为单位来排序。

 
	

点击(此处)折叠或打开

  1. gw1@gw1-PC:~$ cat testfile
  2. test 30
  3. Hello 95
  4. Linux 85
  5. gw1@gw1-PC:~$ sort testfile
  6. Hello 95
  7. Linux 85
  8. test 30

wc

wc [OPTION]... [FILE]...
Linux wc命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

 
	

点击(此处)折叠或打开

  1. [leadcom@localhost test]$ ps -ef | grep postgres | wc -l
  2. 16

uniq

uniq [OPTION]... [INPUT [OUTPUT]]
Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq 可检查文本文件中重复出现的行列。

 
	

点击(此处)折叠或打开

  1. gw1@gw1-PC:~$ cat testfile
  2. test 30
  3. test 30
  4. test 30
  5. Hello 95
  6. Hello 95
  7. Hello 95
  8. Hello 95
  9. Linux 85
  10. Linux 85
  11. gw1@gw1-PC:~$ uniq testfile
  12. test 30
  13. Hello 95
  14. Linux 85
  15. Linux 85

tr

tr [OPTION]... SET1 [SET2]
Linux tr 命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

 
	

点击(此处)折叠或打开

  1. gw1@gw1-PC:~$ cat testfile
  2. It uses a mix of theory and practicl techniques to
  3. teach administrators how to install and
  4. use security applications, as well as how the
  5. applcations work and why they are necesary.
  6. # 将小写转换为大写
  7. gw1@gw1-PC:~$ cat testfile | tr a-z A-Z
  8. IT USES A MIX OF THEORY AND PRACTICL TECHNIQUES TO
  9. TEACH ADMINISTRATORS HOW TO INSTALL AND
  10. USE SECURITY APPLICATIONS, AS WELL AS HOW THE
  11. APPLCATIONS WORK AND WHY THEY ARE NECESARY.
  12. gw1@gw1-PC:~$


阅读(9) | 评论(0) | 转发(0) |
0

上一篇:Linux命令大全之文件管理—chmod

下一篇:没有了

给主人留下些什么吧!~~