使用linux三剑客做一些事情

重定向

yum grouplist
echo命令:打印输出内容
输出重定向:>或者1>使用是覆盖
追加输出重定向:>>或者1>>是追加到文件尾部
输入重定向:<或者0<
追加输入重定向:<<或者0<<
说明:
箭头的指向就是数据的流向

数字说明:

  1. 标准输入:代码为0,使用0<或者0<<
  2. 正常输出:代码为1,使用1>或者1>>
  3. 错误输出:代码为2,使用2>或者2>>

cat的多行追加:

 cat >>/a.txt<

find删除文件

 find /data -type f -name "oldboy" -mtime +7 -exec rm {} \;
 #-type表示类型(f代表文件,d代表目录,c代表字符串,b代表块设备,s代表socket文件),link代表符号链接,-name表示名称,-mtime表示文件修改时间(NOW为基准,+7代表7天以前,7代表第7天,-7代表最近7天),-a是and:交集,-o是or:并集,-exec表示后续操作;!代表取反
 find /data -type d -name "oldboy" -mtime +7|xargs rm -rf

移动查找到的文件

mv `find /data -type f -name "*.txt"` /tmp

grep

grep是linux三剑客NO.3:过滤需要的内容
grep -v是排除

cat >>a.txt<
haed -2 a.txt
#读取文件的前n行,默认前十行
tail -2 a.txt
#读取文件的后n行,默认后十行

递归创建目录需要在mkdir后面加参数 -p

mkdir -p a/b/c/d

使用cp命令覆盖不提示

1、命令前面加
2、命令前面加全目录/bin(使用which查找命令所属路径)

which cp

3、因为linux中的部分命令默认使用别名。前置加参数会直接执行命令,而不使用别名,可以通过删除别名来直接使用命令(重启后还原)
4、直接使用脚本来规避命令别名

alias 
#查看和设置别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
unalias rm
#删除别名
unalias cp='echo this command does not allow to ues'
#设置别名
alias net='cat /etc/sysconfig/network-scripts/ifcfg-ens33'
#设置别名

别名的作用

1、给一些危险的命令加一些保护参数,防止人为误操作
2、使一个复杂的字符串或者命令变成一个简单的字符串或者命令
alias的修改只能保存到内存里,重启失效,需要永久保存需要写到系统配置文件里面:
1、全局:/etc/profile
2、当前用户:~/.bashrc
使用unalias删除了别名可以使用source命令恢复回来

source ~/.bashrc

seq

seq==sequence(序列)

seq 1 2 100
#1代表从1开始、2代表每次列出的数字相差2、100代表到100结束
seq -s " " 10
#默认分隔符是回车,-s指定分隔符,"分隔符"

查看ett.txt的第20行到30行

1、利用head加tail

#查看ett.txt的第20行到30行
head -30 ett.txt |tail -10

2、利用sed
sed:流编辑器,可以实现对文件的增删改替换查,Linux三剑客NO.2

sed -n '20.30'p ett.txt
#-n的作用取消默认输出,'20.30'是规则,p是打印

3、利用awk,awk是三剑客中的NO.1

awk 'NR>19&&NR<31' ett.txt
#NR是行号,&&是并且的意思

在一些语言里=是赋值,==是等号
4、用grep

grep 20 -A 10 ett.txt

A显示除了匹配的一行之外,并显示之后的n行
B显示除了匹配的一行之外,并显示之前的n行
C显示除了匹配的一行之外,并显示前后的各n行

sed 's###g'
#s表示替换,g表示全局替换,###是分隔符(可以用/@等代替),#想要替换的内容#替换成什么内容#,只是修改输出
需要修改文件需要添加-i
sed -i 's###g'

替换多个文件的字符串

find /oldboy/ -type f -name "*.sh"|xargs sed -i 's#oldboy#oldgirl#g'
#查找/oldboy下的名字结尾为.sh的文件,然后使用sed替换oldboy为oldgirl
sed -i  's#oldgirl#oldboy#g' `find /oldboy/ -type f -name "*.sh"`

有错请指出,不喜勿喷,不接受喷我小白,虽然这是事实,如果要喷请预约

你可能感兴趣的:(使用linux三剑客做一些事情)