您的位置:首页 > 其它

12.12 &12.13 基础命令练习一

2017-12-21 16:08 204 查看

12.12 &12.13

基础命令练习一

内容:

1. mkdir ls pwd cd touch vi/vim echo cat2. 输出/出入重定向3. EOF 起止符 往文件中写入多行内容4. xargs -n 分组显示5. cp rm mv6. man帮助手册7./data 和 /data/区别7. find cd8. grep head,tail 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.txt2. 进入编辑模式(插入模式) 按字母 i3. 写入 I am studying linux4. 退出编辑模式 Esc键5. 保存并退出 :wq6. 检查---查看文件内容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 搭配: 1)find |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的文件
(2)cd 的用法
cd .. 进入当前目录的上一级目录cd../../ 进入当前目录的上两级目录cd.(点) 表示当前目录

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

testlidaooldboy请给出输出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 tail3. 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 rmalias rm='echo command bny'[root@oldboy-gao ~]# rm /mntcommand 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+tail2. sed3. awk4. 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行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  菜鸟驿站