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

 

posted @ 2018-09-20 23:03  微落不落  阅读(265)  评论(0编辑  收藏  举报