码迷,mamicode.com
首页 > 其他好文 > 详细

12.12 &12.13 基础命令练习一

时间:2017-12-21 17:13:37      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:菜鸟驿站

12.12 &12.13

基础命令练习一

内容:

1. mkdir  ls  pwd   cd   touch    vi/vim  echo   cat

2. 输出/出入重定向

3. EOF 起止符 往文件中写入多行内容

4. xargs  -n    分组显示

5. cp  rm  mv

6. man帮助手册

7./data  /data/区别

7. find   cd

8. grep  headtail  sed  awk  排除

9. head+tail  sed  awk  grep   显示某几行

10. 别名 alias   临时  永久

11. sed 替换

第1章 创建一个目录/data

1.1  mkdir命令     ==make  directory    创建目录

mkdir /data

快捷键:tab 补全目录或路径

1.2 ls  -l   显示详细信息

[root@oldboy oldboy]# ls -l

total 5408

-rw-r--r--. 1 root root 2097152 Dec 15  2017 ;

-rw-r--r--. 1 root root 1282040 Nov 11  2017 1.log

-rw-r--r--. 1 root root      34 Dec 19  2017 ai.txt

 

1.3 绝对路径与相对路径的区别

绝对路径:从根开始的路径  如:/etc/hosts

相对路径:不是从根开始的路径   如:etc/hosts

 

cd    切换路径

pwd   显示当前工作目录

第2章 /data下面创建文件oldboy.txt

2.1 touch   创建文件

touch  /data/oldboy.txt

第3章 oldboy.txt增加内容I am studying linux   ---3种方法)  (vi/vim   echo    cat

3.1 方法一:vi/vim

1. 打开文件

  vi  /data/oldboy.txt

2. 进入编辑模式(插入模式)

  按字母 i

3. 写入

  I am studying  linux

4. 退出编辑模式

  Esc键

5. 保存并退出

 wq

6. 检查---查看文件内容

cat /data/oldboy.txt

3.1.1 vim补充:

    i          编辑模式

    Esc        退出编辑模式,进入命令模式

    wq      保存退出

    : q!         强制退出不保存

 

 

3.2 方法二:echo    输出到屏幕 把引号中内容显示到屏幕上                

Vim    echo    >>     三个命令会自动创建文件

echo I am studying linux >>/data/oldboy.txt

3.2.1 重定向(详解)  改变命令执行时,数据输出的方向

>>  或1>>  追加重定向,增加到文件的结尾      (漏斗)

>   或 1>>    输出重定向   清空内容,然后追加

>>  >  标准输出重定向  标准追加输出重定向   会把前面命令执行正确的内容 放 到一个文件中

 

2> 错误重定向:把错误信息输入到后面的文件中,会删除文件原有内容

2>>错误追加重定向: 把前面错误信息追加到后边的文件中,不会清除文件原有内容

例:

cho "lidao.blog.51cto.com" 2>>/data/error.txt

[root@oldboyedu-39 ~]# cho "lidao.blog.51cto.com" 2>>/data/error.txt

[root@oldboyedu-39 ~]# cat /data/error.txt

-bash: cho: command not found

-bash: cho: command not found

 

实例3-1  

同时把正确和错误的信息都记录下来

#我想把执行对的结果放到文件中 /data/oldboy.txt

#我想把执行有错误的放到文件中 /data/oldboy.txt

echo lidao.blog.51cto.com 2>>/data/oldboy.txt  >>/data/oldboy.txt

echo "lidao.blog.51cto.com"  >>/data/oldboy.txt  2>&1

 ###/data/oldboy.txt 相当于日志功能 ,两条命令执行结果相同

3.3 方法三:cat  查看文件内容    向文件中追加多行

  cat >>/data/oldboy.txt<<EOF

I

am

Studying             向一个文件中追加多行

Linux

EOF

3.3.1 EOF 起始结束符号,遇到即停止,可任意相同记号

[root@oldboy oldboy]# cat >>mike.txt <<gao

> I

> love

> you

> gao

[root@oldboy oldboy]# cat mike.txt

I

love

you

 

3.3.2  <  0< 标准输入重定向   告诉命令从哪里获取文件

<<  0<< 标准输入追加重定向

3.3.3 xargs    -n数字   指定显示列数

[root@oldboy oldboy]# cat mike.txt

I

love

you

[root@oldboy oldboy]# echo "1 2 3 4 5 6 7 8 ">deny.txt

[root@oldboy oldboy]# cat deny.txt

1 2 3 4 5 6 7 8

[root@oldboy oldboy]# xargs -n2 <deny.txt

1 2                 前面的命令执行的是后面的文件

3 4

5 6                技巧:“漏斗”的输出方向

7 8

 

第4章 oldboy.txt复制到/tmp

4.1 cp命令     复制

cp  /data/oldboy.txt  /tmp

4.2 想把整个目录复制过去

cp  -r       递归复制,复制目录及美容   一层一层复制目录

 

  

第5章 Linux中查看帮助

5.1 man 命令     --上下键 空格   退出:q

技术分享图片 

5.2 网站命令学习

http://linux.51yip.com/

http://man.linuxde.net/

https://www.die.net/

 

5.3 运维习惯

操作前备份,操作后检查

cp命令

 

 

第6章 /data目录移动到/root

6.1 mv命令

mv  /data/   /root/

6.2 扩展:/data   和   /data/   的区别

/data    表示 /data 目录 和目录里的内容

/data/   表示目录里的内容

 

第7章 进入/root目录下的data目录,删除oldboy.txt 文件

7.1 rm命令

rm  oldboy.txt

参数:

-f   强制删除(不提醒)      -r    递归删除  

rm 参数可以加在最后面

如:rm  /data/oldboy  -f

7.1.1 防止误删除

1.把危险的参数放在最后面

2.尽量使用相对路径删除目录

3.删除命令复杂一些   find  |xargs

4.不要在/(根)下进行操作

5.给危险命令设置别名

6.把要删除的文件先复制到/tmp

 

第8章 接第六题,退出上一级目录,删除data目录

8.1 find命令的使用

8.1.1 语法:find  在×××  什么类型   什么名字

 例:find  /root/    -type  f     -name oldboy.txt

        查找  /root/目录下 文件名字为oldboy.txt

8.1.2 搭配: 1find |xargs      2*

1) find |xargs  

例: find /root/ -type f -name oldboy.txt |xargs ls -l

答案: find /root/ -type f -name oldboy.txt |xargs rm -f

注意:先查看,再删除,避免误操作

2* (星号) 表示所有,任意

例: find /root/ -type f -name *.txt

     查找/root/目录下所有文件名为。txt的文件

2cd 的用法

cd ..      进入当前目录的上一级目录

cd../../    进入当前目录的上两级目录

cd.(点) 表示当前目录

 

第9章 已知文件test.txt内容为:           (五种方法)

test

lidao

oldboy

请给出输出test.txt文件内容时不包含oldboy字符串的命令

 

9.1 方法一:grep 命令的用法    过滤

选项:  -v  排除

答案:grep -v oldboy /data/test.txt

9.2 方法二:head命令   显示文件前几行 默认为为前十行

选项: -n数字  或 -数字     显示文件前几行

答案:head -2 /data/test.txt

9.3 方法三:awk 命令   表示排除,取反

[root@oldboy oldboy]# awk '/oldboy/' /data/test.txt

oldboy

[root@oldboy oldboy]# awk '!/oldboy' /data/test.txt 

awk: !/oldboy

awk:   ^ unterminated regexp

[root@oldboy oldboy]# awk '!/oldboy/' /data/test.txt

test

lidao

9.4 方法四:sed命令  d 表示删除

用法 d  表示删除

[root@oldboy oldboy]# sed '/oldboy/d' /data/test.txt 

test

lidao

9.5 方法五:sed命令

[root@oldboy oldboy]# sed '3d' /data/test.txt

test

lidao

9.6 小结:

1. grep  过滤

2. head  tail

3. awk   sed

第10章 请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录和/oldboy/test 目录

10.1 mkdir命令     创建目录

选项: -p   一次创建多级目录

答案:mkdir  -p   /oldboy/test

第11章 已知/tmp下已存在test.txt文件。如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖/tmp/test.txt,而让系统不提示覆盖(root权限下)     直接覆盖

11.1 创建环境

[root@oldboy-gao ~]# touch /mnt/test.txt /tmp/test.txt

11.2 方法一:  临时取消别名   撬棍(反斜杠)

答案:\cp /mnt/test.txt /tmp/

11.3 方法二:   临时取消别名    which   

使用命令的绝对路径         which

which +命令   显示命令的绝对路径   命令的位置

[root@oldboy-gao ~]# which cp

alias cp='cp -i'

/bin/cp

答案:/bin/cp /mnt/test.txt /tmp/

 

11.4 方法三: 别名

别名    alias    显示系统中所有别名

       alias  cp    显示cp别名

11.4.1 alias作用

1. 给危险的命令上道保险

2. 常用的命令,复杂的命令简单化

例:给rm命令设置别名command  bny

[root@oldboy-gao ~]# alias rm='echo command bny'   

等号左右没有空格 ,右边是命令,单引号

[root@oldboy-gao ~]# alias rm

alias rm='echo command bny'

[root@oldboy-gao ~]# rm /mnt

command bny /mnt

11.4.2 unalias  删除别名   

11.4.3 永久设置别名

  配置文件/etc/profile

11.4.4 vim 快捷键

G  到达文件的最后一行

i   进入编辑模式

o   在当前行下面插入一个新行并进入编辑模式

实例11-1 [root@oldboy-gao /]# tail -2 /etc/profile

unset -f pathmun

alias cp='echo command bny'

使配置文件生效

[root@oldboy-gao /]# source /etc/profile

[root@oldboy-gao ~]# alias cp

alias cp='echo command bny'

[root@oldboy-gao /]# cp /oldboy

command bny /oldboy

[root@oldboy-gao /]#

普通用户正常有用

xshell重新连接root用户又变成alias cp=cp -i

解决:

11.4.5 修改文件:   /root/.bashrc

技术分享图片 

在三个别名前面加个#(注释号)号,使其失效,这样问题就解决了

小结alias   设置或显示别名

      source  让别名/配置生效

11.5 问题:

1. 如果配置文件里设置一个,命令行临时有设置一个,那个生效?

 答:如果重新连接  配置文件里的生效

     不重新连接   命令行配置生效

11.5.1 注:xargs 不认识别名

第12章 只查看ett.txt文件(共100行)第20到第30行的内容(4种方法)

12.1 创建环境  Seq    生成行  sequence  数字序列

[root@oldboy oldboy]# seq 50 >ett.test

[root@oldboy oldboy]# tail -4 ett.test

47

48

49

50

12.2 方法一:  head -30 ett.txt | tail -11

[root@oldboy oldboy]# head -30 ett.test | tail -11

20

21

22

23

24

25

26

27

28

29

30

 

12.3 方法二:sed命令

选项: -n 取消默认输出  默认输出每一行的内容

p  pint  显示

答案:sed -n 20,30p /oldboy/ett.test

  [root@oldboy oldboy]# sed -n '20,30p' ett.test 

20

21

22

23

24

25

26

27

28

29

30

12.4 方法三:awk命令

用法:NR==数字    行号

答案:awk NR==20,NR==30 ett.test

[root@oldboy oldboy]# awk 'NR==20,NR==30' ett.test 

20

21

22

23

24

25

26

27

28

29

30

 

12.5 方法四:grep (碰巧)

12.5.1 -A10   显示当前内容及接下来的10

答案:grep -A10 20 /oldboy/ett.test

[root@oldboy oldboy]# grep -A10 "20" ett.test 

20

21

22

23

24

25

26

27

28

29

30

 

12.5.2 -B10     显示当前内容及之前的10

答案:grep -B10 30 /oldboy/ett.test

[root@oldboy oldboy]# grep -B10 "30" ett.test 

20

21

22

23

24

25

26

27

28

29

30

12.5.3 -c35     显当前内容及前后各5

grep -C5 35 /oldboy/ett.test

[root@oldboy oldboy]# grep -C5 "25" ett.test 

20

21

22

23

24

25

26

27

28

29

30

12.6 小结:

1. head+tail

2. sed

3. awk

4. grep

第13章 /oldboy目录及其子目录下所有以拓展名.sh结尾的文件中,文件包含oldboy的字符串全部替换为oldgril

13.1 sed命令    -i 替换文件内容

用法:sed s#你要找谁#要替换成什么#g

例:  sed s#oldboy#oldgirl#g  /oldboy/test.sh

在显示器上显示oldgril,不会修改文件

一般命令不能直接改变文件内容,需要加选项

防止误操作

选项: -i   修改文件内容

例: sed -i s#oldboy#oldgirl#g  /oldboy/test.sh

     /oldboy/test.sh文件中oldboy改为oldgirl

13.2 创建环境
mkdir -p /oldboy/test
cd /oldboy
echo "oldboy">test/del.sh
echo "oldboy">test.sh
echo "oldboy">t.sh
touch oldboy.txt
touch alex.text找出你要处理的文件 
[root@oldboyedu43 oldboy]# find /oldboy/ -type f  -name "*.sh"
/oldboy/test.sh
/oldboy/test/del.sh
/oldboy/t.sh
替换一个文件 (oldboy ----> oldgirl )
[root@oldboyedu43 oldboy]# #sed  's#你要找谁#你要替换成什么#g'
[root@oldboyedu43 oldboy]# cat /oldboy/test.sh 
oldboy
[root@oldboyedu43 oldboy]# sed  's#oldboy#oldgirl#g'     /oldboy/test.sh 
oldgirl
[root@oldboyedu43 oldboy]# cat /oldboy/test.sh 
oldboy
[root@oldboyedu43 oldboy]# #修改文件的内容 把文件的内容进行替换 修改
[root@oldboyedu43 oldboy]# sed  -i  's#oldboy#oldgirl#g'     /oldboy/test.sh 
[root@oldboyedu43 oldboy]# cat /oldboy/test.sh 
oldgirl

(1)find命令找到的文件 都交给sed命令进行替换
[root@oldboyedu43 oldboy]# find /oldboy/ -type f  -name "*.sh"|xargs sed 's#oldboy#oldgirl#g'     先别加选项-i  确定正确
oldgirl
oldgirl
oldgirl

 

(2)修改文件内容
[root@oldboyedu43 oldboy]# find /oldboy/ -type f  -name "*.sh"|xargs sed -i 's#oldboy#oldgirl#g'  答案

6检查
[root@oldboyedu43 oldboy]# find /oldboy/ -type f  -name "*.sh"|xargs cat
oldgirl
oldgirl
oldgirl

 

13.3 方法二

13.3.1 $() 先运行里面的命令 把输出结果留下来   $()====`` (反引号)

which mikdir  mkdir的位置

 

1. find找到你要处理的文件

 find /oldboy/ -type f -name "*.sh"

2. sed命令处理find命令找到的文件

 Sed s#oldboy#oldgirl#g $(find /oldboy/ -type f -name *.sh)

答案:Sed -i s#oldboy#oldgirl#g $(find /oldboy/ -type f -name *.sh)

4.查看

cat $(find ./ -type f -name "*.sh")

小结:

1. find |xargs

2. find $()

3. find -exec

13.4 方法三:find   -exec  {} \;

答案:

find /oldboy/ -type f -name "*.sh" -exec sed 's#oldgril#oldboy#g'    {}    \;

 find找到的命令放到花括号里,再被sed 执行

 \;结束

 

小结:

1. sed  进行替换

2. find  |xargs

 

13.5 补充:

1.快捷键:

快速使用上个命令最后的文件名

esc  + . (点)

 

 

13.6 (管道)|xargs(管道xargs)的区别

13.6.1 管道传递的是文本内容, |xargs传递的是文件名称


find  |xargs ls -ld##把前一个命令的结果,通过管道传递给后面的命令(ls -ld),传递的是文件名
find  | 命令    ##把前一个命令的结果,通过管道传递给后面的命令,传递的是普通的文本,文字,字符串

13.6.2 总结:

什么时候使用管道?

前一个命令无法满足你,一个命令的结果不是你想要的

 

什么时候使用管道xargs

后面的命令,需要处理的是文件名

find  |xargs

13.7 三剑客

13.7.1 Sed  Linux三剑客老二   擅长取某一行

     P    ---print 显示     -n 取消sed命令默认输出

查找替换

   Sed  s###g’   -i   对文件内容进行替换和修改

 

13.7.2 awk  Linux三剑客老大     擅长取某一列

   NR==    ---行号

13.7.3 grep    过滤   在文件中找东西   Linux三剑客老三

   -v   排除

   -A10  显示你所要内容及接下来的10

 

 

 

 

 


12.12 &12.13 基础命令练习一

标签:菜鸟驿站

原文地址:http://blog.51cto.com/13517084/2052965

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!