鸟哥的linux私房菜学习笔记《二十三》通配符、重定向、管道等bash用法

  1. 通配符:

    *:任意个字符
    ?:任意单个字符
    []:其中任意个
    [-]:顺序某段
    [^]:非其中任何一个
    
    # 显示以cron开头的文件名
    
    [root@CentOS ~]# ll /etc/cron*
    
    # 显示/etc/下的刚好是5个字母的文件名
    
    [root@CentOS ~]# ll /etc/?????
    
    # 显示/etc/下含有数字的文件名
    
    [root@CentOS ~]# ll /etc/*[0-9]*
    
    # 显示/etc/下开头非为小写字母的文件名
    
    [root@CentOS ~]# ll /etc/[^a-z]*
    
    # 复制/etc/下开头非为小写字母的文件到/tmp中
    
    [root@CentOS ~]# cp -a /etc/[^a-z]* /tmp

    bash中的特殊符号:
    这里写图片描述

  2. 重定向

    标准输入:代码为0,使用<<<
    标准输出:代码为1,使用>或>>
    标准错误输出:代码为2,使用后2>或2>>
    >:会覆盖原文件
    >>:在源文件后追加
    1>:将正确结果覆盖指定文件
    1>>:将正确结果追加在指定文件后面
    2>:将错误结果覆盖指定文件
    2>>:将错误结果追加指定文件
    <:由文件导入
    <<:结束的关键词,到此输入结束
    
    # 将stdout与stderr分别存到不同文件
    
    [root@CentOS ~]# find /home -name .bashrc > list_right 2> list_error
    
    # 将错误信息丢弃,屏幕显示正确结果
    
    [root@CentOS ~]# find /home -name .bashrc 2> /dev/null
    
    # 将命令的全部结果写入list文件(以下两种都可以)
    
    [root@CentOS ~]# find /home -name .bashrc > list 2>&1
    [root@CentOS ~]# find /home -name .bashrc &> list 
    [root@CentOS ~]# cat > catfile < ~/.bashrc
    [root@CentOS ~]# ll catfile ~/.bashrc
    -rw-r--r--. 1 root root 176 39 09:24 catfile
    -rw-r--r--. 1 root root 176 922 2004 /root/.bashrc
    
    # 两个文件一样
    
    
    # <<"。。。"指定结束标志:
    
    [root@CentOS ~]# cat > catfile << "eof"
    > this is a test
    > OK noe stop
    > eof
    [root@CentOS ~]# 
  3. tee:双向重定向
    流向文件并且屏幕输出
    参数:
    -a:以累加方式将数据加入文件
    last:该命令用来列出目前与过去登录系统的用户相关信息。

    # 将last输出一份到test.list:
    [root@CentOS ~]# last | tee last.list |cut -d " " -f1
    # 将ls的数据存一份到~/homefile,同时屏幕也有输出信息
    [root@CentOS ~]# last | tee ~/.homefile | more
    # tee后街的文件会被覆盖,加上-a可以将信息累加
    [root@CentOS ~]# last | tee -a ~/.homefile | more
  4. &&,||命令执行判断依据:
    cmd1 && cmd2:并且关系,一假则假,前面正确后面才执行
    cmd1 || cmd2:或者关系,一真则真,前面错误后面才执行
    cmd1 && cmd2 || cmd3:cmd1正确执行cmd2,cmd1错误执行cmd3
  5. cut选取命令
    参数:
    -d:后接分隔符,用于分段
    -f:根据-d分的段,选取第几段
    -c:以字符的单位取出固定字符区间

    
    # 以: 为分隔,显示第五段
    
    [root@CentOS ~]# echo $PATH | cut -d ':' -f 5
    
    # 以: 为分隔,显示3和5段
    
    [root@CentOS ~]# echo $PATH | cut -d ':' -f 3,5
    
    # 将export的信息去第12字符以后的
    
    [root@CentOS ~]# export
    declare -x CVS_RSH="ssh"
    declare -x USER="kevin"
    declare -x USERNAME="kevin"
    declare -x WINDOWID="52428804"
    declare -x WINDOWPATH="1"
    [root@CentOS ~]# export | cut-c 12-
    CVS_RSH="ssh"
    USER="kevin"
    USERNAME="kevin"
    WINDOWID="52428804"
    WINDOWPATH="1"
  6. grep:选取命令
    参数:
    -a:将binary文件以text文件的方式查找数据
    -c:计算找到‘查找字符串’的次数
    -i:忽略大小写
    -n:顺便输出行号
    -v:反向选择
    –color=auto:将找到的关键字显示颜色

    
    # 将last中出现root的那一行显示出来
    
    [root@CentOS ~]# last | grep 'root'
    
    # 将last中未出现root的那部分显示
    
    [root@CentOS ~]# last | grep -v 'root'
    
    # 将last输出信息中,只要有root就取出,并且显示一列
    
    [root@CentOS ~]# last | grep 'root' | cut -d ' ' -f1
    
    # 取出/etc/man.config内含MANPATH的那几行
    
    grep --color=auto 'MANPATH' /etc/man.config
  7. sort、uniq、wc:排序命令
    last:该命令用来列出目前与过去登录系统的用户相关信息
    1 . sort

    
    # 利用last将输出的数据仅取账号,并加以排序
    
    [root@CentOS ~]# last | cut -d ' ' -f1 | sort

    2 . uniq:用于将重复的行删掉只显示一个
    参数:
    -i:忽略大小写
    -c:进行计数

    
    # 使用last将账号列出,仅取账号列,进行排序后仅取出一位
    
    [root@CentOS ~]# last | cut -d ' ' -f1 | sort | uniq
    
    # 使用last将账号列出,仅取账号列,进行排序后仅取出一位,并想知道每个人登录的次数
    
    [root@CentOS ~]# last | cut -d ' ' -f1 | sort | uniq -c

    3 . wc:计算输出信息的整体数据
    参数:
    -l:仅列出行
    -w:仅列出字数
    -m:仅列出字符数

    
    # 统计/etc/man.config里面到底有多少字、行、字符数
    
    [root@CentOS ~]# cat/etc/man.config | wc
    
    # 这个月登录系统的总人数
    
    [root@CentOS ~]# ;last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
    
    # 要知道账号文件中有多少账号:
    
    [root@CentOS ~]# cat /etc/passwd | wc -l
  8. 字符转换
    1 . tr:文字替换
    参数:
    -d:删除当中的某个字符串
    -s:替换字符串

    
    # 将/erc/passwd文件中的:删除
    
    [root@CentOS ~]# cat /etc/passwd | tr -d ' ' 
    
    # 删除DOS文件中的断行字符(^M可以用\r代替)
    
    [root@CentOS ~]# cat /root/passwd | tr -d '\r' > /root/passwd/linux

    2 . col:tab键转空格
    参数:
    -x:将tab键转成空格键

    
    #将tab转成空格键
    
    [root@CentOS ~]# cat /etc/man.config | col -x cat -A | more

    3 . join:处理两个文件间的数据
    参数:
    -t:默认空格作为分隔符,并且对比第一个字段
    -i:忽略大小写
    -1:第一个文件用哪个字段来分析
    -2:第二个文件用哪个字段来分析

    
    # 用root身份,将/etc/passwd与/etc/shadow相关数据整合成一份
    
    [root@CentOS ~]# head -n 3 /etc/passwd /etc/shadow
    [root@CentOS ~]# join -t ':' /etc/passwd /etc/shadow
    
    # 整合/etc/passwd第四个字段的GID和是/etc/groupw的第三个字段,整合两个文件
    
    [root@CentOS ~]# head -n 3 /etc/passwd /etc/group
    [root@CentOS ~]# join -t ':' -1 4 /etc/passwd -2 3 /etc/group

    4 . paste:将两行贴在一起
    参数:
    -d:后接分隔符,默认tab键
    -:如果filename写成-,表示标准输入

    
    # 将/etc/passwd与/etc/shadow的同一行粘贴在一起
    
    [root@CentOS ~]# paste /etc/passwd /etc/shadow
    
    # 先将/etc/group读出。然后与上题粘贴在一起,且仅取出第三行
    
    [root@CentOS ~]#  cat /etc/group | paste /etc/passwd /etc/shadow - | head -n 3

    5 . expand:将tab键转成空格
    参数:
    -t:后面接数字,一个tab键代表8个空格,我们也可以自定义一个tab键代表多少个空格

    
    # 将/etc/man.config内行首为MANPATH的字样取出,仅取前三行
    
    [root@CentOS ~]# grep '^MANPATH' /etc/man.config | head -n 3
    
    # 承上题,将所有的符号都列出来
    
    [root@CentOS ~]# grep '^MANPATH' /etc/man.config | head -n 3 | cat -A
    
    # 承上题,将tab键设成6个字符
    
    [root@CentOS ~]# grep '^MANPATH' /etc/man.config | head -n 3 | expand -t 6 - | cat -A
  9. split:切割命令
    参数:
    -b:切割的文件大小
    -l:以行数来切割

    
    # 我的/etc/passswd有700多KB,若想要分成300KB一个文件时
    
    [root@CentOS ~]# split -b 300k /etc/termcap termcap
    
    # 将三个文件合并成一个文件
    
    [root@CentOS ~]#  cat termcap* >> termcap
    
    # 使用ls -al输出信息,每十行记录一个文件
    
    [root@CentOS ~]# ls -al / | split -l 10 - lsroot
    [root@CentOS ~]# wc -l lsroot
  10. xargs:参数代换
    参数:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值