通配符:
*:任意个字符 ?:任意单个字符 []:其中任意个 [-]:顺序某段 [^]:非其中任何一个
# 显示以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中的特殊符号:
重定向
标准输入:代码为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 3月 9 09:24 catfile -rw-r--r--. 1 root root 176 9月 22 2004 /root/.bashrc # 两个文件一样
# <<"。。。"指定结束标志: [root@CentOS ~]# cat > catfile << "eof" > this is a test > OK noe stop > eof [root@CentOS ~]#
- 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
- &&,||命令执行判断依据:
cmd1 && cmd2:并且关系,一假则假,前面正确后面才执行
cmd1 || cmd2:或者关系,一真则真,前面错误后面才执行
cmd1 && cmd2 || cmd3:cmd1正确执行cmd2,cmd1错误执行cmd3 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"
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
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
字符转换
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
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
- xargs:参数代换
参数:
鸟哥的linux私房菜学习笔记《二十三》通配符、重定向、管道等bash用法
最新推荐文章于 2022-02-24 15:59:02 发布