Linux常用基础命令操作(二)
10 >输出重定向 文件不存在则创建文件,文件存在则清空内容 放入>左边的内容 比较危险 建议备份后操作
>>追加输出重定向,在文本结尾追加内容,不删除原内容
<输入重定向
<<追加输入重定向
箭头指向为数据流向
[root@m01 abc]# cat >>white.txt<<EOF
> i am white bai
> thankyou
> EOF
[root@m01 abc]# cat white.txt
i am white bai
thankyou
[root@m01 abc]# > white.txt
[root@m01 abc]# cat white.txt
[root@m01 abc]# echo "who are you">>white.txt
[root@m01 abc]# cat white.txt
i am white bai
thankyou
who are you
0是标准输入:一般配合<< <使用,数据流从右到左
1是标准正常输出,一般配合>> >使用,数据流从左到右
2是标准错误输出,把错误内容输入到后面的文件,数据流从左到右
2>错误重定向,把错误的信息输入到后面文件,删除原有文件
2>>错误追加重定向,把错误的信息追加到后面文件,不删除原内容
[root@m01 abc]# cat a.txt
qwe
[root@m01 abc]# cat b.txt
[root@m01 abc]#
[root@m01 abc]# eho qwe 1>a.txt 2>b.txt
[root@m01 abc]# cat a.txt
[root@m01 abc]# cat b.txt
-bash: eho: command not found
如果a内正确和错误的都写一个文件echo qwe 1>a.txt 2>a.txt(麻烦)一般写为echo qwe 1>a.txt 2>&1(推荐)或echo qwe &>a.txt(错误输出和正确输出在一个位置)
11、cp 拷贝,复制
常用参数
-r 递归 -p连同文件属性一起拷贝 -d 目录 -a等价于-pdr -i覆盖前提示(默认)
不加参数只能复制文件
[root@m01 abc]# cp a.txt /tmp/
[root@m01 abc]# ll /tmp/
total 6372
-rw-r--r-- 1 jenkins jenkins 19673 Sep 12 20:59 akuma304166024346870543jar
-rw-r--r-- 1 jenkins jenkins 19673 Sep 10 18:41 akuma6786136470976806683jar
-rw-r--r-- 1 root root 0 Sep 20 22:27 a.txt
[root@m01 data]# cp abc/ /tmp/
cp: omitting directory ‘abc/’
[root@m01 data]# cp abc/ /tmp/ -a
[root@m01 data]# ll /tmp/
total 6372
drwxr-xr-x 3 root root 60 Sep 20 22:21 abc
[root@m01 data]# cp abc/ /tmp/ -a
cp: overwrite ‘/tmp/abc/white.txt’?
如果想覆盖不提示 \cp 使用则覆盖不提示
12、mv 移动,修改文件名
常用参数
-r 递归 -p连同文件属性一起移动 -d目录 -a等价于-pdr
不加参数只能复制文件
[root@m01 data]# cd abc/
[root@m01 abc]# mv a.txt ../asd/
[root@m01 abc]# tree
.
├── bas
├── b.txt
└── white.txt
1 directory, 2 files
[root@m01 abc]# tree ../asd/
../asd/
└── a.txt
注意 移动多个文件到目录 结尾一定是目录
13、rm 删除文件
常用参数
-f 强制删除 -r删除目录 (普通文件不能加-r) rm -fr 删除后无法恢复
[root@m01 abc]# cp b.txt b.txt.bak
[root@m01 abc]# ll
total 12
drwxr-xr-x 2 root root 6 Sep 20 15:58 bas
-rw-r--r-- 1 root root 30 Sep 20 22:22 b.txt
-rw-r--r-- 1 root root 30 Sep 20 22:33 b.txt.bak
-rw-r--r-- 1 root root 37 Sep 20 22:14 white.txt
[root@m01 abc]# rm -f b.txt
[root@m01 abc]# ll
total 8
drwxr-xr-x 2 root root 6 Sep 20 15:58 bas
-rw-r--r-- 1 root root 30 Sep 20 22:33 b.txt.bak
-rw-r--r-- 1 root root 37 Sep 20 22:14 white.txt
[root@m01 abc]# rm -fr bas/
[root@m01 abc]# ll
total 8
-rw-r--r-- 1 root root 30 Sep 20 22:33 b.txt.bak
-rw-r--r-- 1 root root 37 Sep 20 22:14 white.txt
删除的正确操作(谨慎操作)
a,删除文件前使用mv命令移动到/tmp替代删除
b,进入目标目录cd;find . -type f -name " " |xargs rm -i(通过管道传递后没有-i不会提醒是否删除)
14、find 查找文件
常用参数
-type 查询类型 f文件 d目录 c字符 b磁盘 s(通信用) l链接
-a 交集 (默认) -o 并集
-name 查询名字 -maxdepth 查找深度(几级目录) -mtime 修改时间 +7 7天前 同理(-ctime修改时间 -atime接入时间 均不常用)
[root@m01 abc]# find /data -type f -name "a.txt"
/data/asd/a.txt
[root@m01 abc]# find /data -type f -name "a.txt" -exec rm {} \;
#等价于(建议使用下面命令)
[root@m01 abc]# find /data -type f -name "a.txt" |xargs rm -f;
[root@m01 ~]# find /data -type f ! -name "*.sh" -mtime +7|xargs cat
[root@m01 ~]# find /log -type f -name "*oldboy" -mtime +15|xargs rm -rf
| 管道 把所有东西放在一起
15、grep 过滤
常用参数
-v 过滤掉后面的内容排除后打印
-n对匹配的内容打印行号 (不常用)
-w按照单词搜索相当于 \b边界 (不常用)
\b边界 \n换行 (不常用)
-i不区分大小写
egrep 等价于grep -E 扩展grep可以过滤多个
[root@m01 ~]# grep 3306 /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
[root@m01 ~]# grep -i \(mysql /etc/services #查找(mysql 不区分大小写
sphinxql 9306/tcp # Sphinx search server (MySQL listener)
#\ 转义
[root@m01 ~]# egrep "3306|1521" /etc/services
#或
[root@m01 ~]# grep -E "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
16、alias 查看或设置系统现有的别名
(可以为一些危险命令加一些保护参数,防止互操作,可以把复杂的字符串和命令变成的简单的字符串,可以定义命令alias a='cp' a就可以进行cp一样的操作了;该命令位置为内存内,建议保存至/etc/profile或者~/.bashrc就永久生效)
[root@m01 ~]# alias cp
alias cp='cp -i'
[root@m01 ~]# alias ll
alias ll='ls -l --color=auto'
17、unalias 删除系统命令的别名
cp为cp -i(-i提示是否确认)不推荐使用,理解原理
18、seq 序列(只能生成数字序列)
常用参数 -w相等长度 seq 1 2 10 从1-10 间隔2
[root@m01 ~]# seq 1 2 10 >1.txt
[root@m01 ~]# seq -w 1 2 10 >2.txt
[root@m01 ~]# cat 1.txt
1
3
5
7
9
[root@m01 ~]# cat 2.txt
01
03
05
07
09
19、tree 目录树状显示
常用参数
-d只显示目录 -L 数字 最多显示数字层的目录 -f显示完整目录结构 -i显示目录不打印树枝 -F区分普通文件和特殊文件
[root@m01 ~]# tree /data/abc/
/data/abc/
├── b.txt.bak
├── white.txt
└── www
└── asd
└── aaa
3 directories, 2 files
[root@m01 ~]# tree -L 2 /data/abc/
/data/abc/
├── b.txt.bak
├── white.txt
└── www
└── asd
[root@m01 ~]# tree -dL 1 /data/abc/
/data/abc/
└── www
[root@m01 ~]# tree -f /data/abc/
/data/abc
├── /data/abc/b.txt.bak
├── /data/abc/white.txt
└── /data/abc/www
└── /data/abc/www/asd
└── /data/abc/www/asd/aaa
[root@m01 ~]# tree -i /data/abc/
/data/abc/
b.txt.bak
white.txt
www
asd
aaa