码迷,mamicode.com
首页 > 系统相关 > 详细

Linux的部分命令

时间:2018-07-18 18:05:33      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:tail   移动目录   make   过程   linux   演示   查找命令   源文件   取消别名   

命令介绍
mkdir 创建目录的命令 make directory
touch 创建文件“摸”,修改时间戳
pwd 显示当前的路径
-ls -l(long)d(directory)显示目录或者文件 全程list
ls -l /root/
tree 查看目录结构
cd 切换目录层次change directory
echo 打印输出内容(printf复杂的输出)
seq 打印数字序列, 提示: seq 10等价于echo{0..10}
cat 查看文件内容、往文件中写入
vi/vim 文件编辑器
cp 拷贝文件、拷贝目录
mv 移动文件、移动目录
rm 删除文件、目录
-f强制删除文件 -r递归删除 删除文件或目录 -fr删除文件、目录
rmdir 删除空目录,基本上已经淘汰

grep   核心命令之一(三剑客的老三)过滤 -v排除
sed    核心命令之一(三剑客的老二) -n取消默认输出 p打印 d删除
awk    核心命令之一(三剑客的老大)

head  头部  显示文件头部-n -行数  head -n 5 oldboy.txt  (默认行数:10)
tail  尾部  显示文件尾部-n -行数  tail -n 2 oldboy.txt  (默认行数:10)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
符号介绍
; 多个命令的分隔符
/ 根或者路径的分隔符

重定向(数据流朝着箭头的方向流动,会覆盖原来的文件)

> 追加重定向(在原来文件的结尾,追加内容)
.. 返回上一级目录 cd ..、
. 当前目录
{ } 配合echo打印序列 echo{1..40}
1
2
3
4
5
6
7
8
【案例演示】

1、创建一个目录(文件)data
mkdir 创建目录的命令 make directory
-ls -l(long)d(directory)显示目录或者文件 全程list
cd 切换目录层次change directory
答案:
mkdir /data
cd /; mkdir /data

ls -l /root/ 查看/root/目录下有什么文件。

2、在/data下创建oldboy.txt文件
答案:
touch /data/oldboy.txt
cd /data; touch oldboy.txt
时间过程:
touch /data/oldboy.txt
ls -l /data/oldboy.txt <--查看创建的oldboy.txt,注意没有上面的d参数,为什么呢?

如果在/data中有同名的文件存在,不会提示,也不会覆盖,会更新文件的时间戳。
【总结】touch [文件名]---“摸”一下文件,如果文件不存在,就创建文件;如果文件存在,就改变文件的访问时间atime等时间戳信息。

windows的目录分隔符: \
linux的目录分隔符: /

3、vi/vim 记事本编辑器
i、a
命令模式《====》插入模式
Esc
命令模式:无INSERT关键字
插入模式:有INSERT关键字
:wq 写入并退出
:q 直接退出

4、为/data下的oldboy.txt文件添加"oldboy"
答案:
方法一:常规编辑方法-->用vi编辑器
执行 vi oldboy.txt 进入 vi 编辑器(默认命令模式)、点击 a 或 i 进入编辑模式,敲入内容oldboy ,然后按键盘上的 Esc 键退出编辑模式(默认命令模式),最后敲 :wq(write quit) 保存并退出。

方法二:单行插入文本,放到文件的尾部
echo "ABCD" > oldboy.txt
cat oldboy.txt

方法四:多行文本
cat>>/data/oldboy.txt

CCC
DDD

按Ctrl+C或者Ctrl+D可以退出追加
cat oldboy.txt 

方法五:多行文本:写脚本常用,追加多行,内容都是放到文件的尾部
cat>>/data/oldboy.txt<<EOF
AAA
BBB
CCC
DDD
EOF
【注】EOF要顶格写,EOF必须成对出现,也可以用其它成对的标识符代替
作用:把上面的四行内容追加到/data/oldboy.txt文件中

5、cp拷贝文件、拷贝目录(-r)

(1)把oldboy.txt文件拷贝到/tmp/下
格式:cp src文件路径下的文件 dst文件路径
答案:
cp /data/oldboy.txt /tmp/
ls /tmp/
(2)拷贝文件或者目录-a -p -r
总结:
cp [-aifpru] [源文件] [目标文件]
-a :相当于-pdr
-p :连同档案的属性也一起复制过去
-r :递归,用于复制目录

6、mv 移动文件、移动目录(不用-r)
mv /data /root/
【提示】如果希望带目录拷贝,尽量不要mv /data/ /root/,移动目录时,源目录结尾不要多余的斜线。
虽然这样是可以的,但是我们要养成良好的习惯和规范。
【总结】
mv [-ifu] [源文件/源目录] [目标文件/目标目录]
-i :如果目的文件已经存在,询问是否覆盖
-f :强制执行,不会询问
-u :如果目的文件已经存在,且目的文件比源文件新,才会移动
提示:如果源文件是多个,那么目的文件在最后,且是目录

7、rm(remove)删除文件、删除目录(-r)
(1)删除文件:rm 文件名
进入root目录下的data目录,删除oldboy.txt
答案:
cd /root/data/
rm oldboy.txt

y:是
[说明]
rm -f 文件名 //强制删除,不提示,不推荐使用
(2)删除目录: rm -r 目录名

rmdir data
rm -fr 目录    //强制删除目录

8、grep (以行为单位)进行过滤操作
题目1:假设oldboy.txt中有三行aaa,bbbb,ccc,abcd那么想只打印出来aaa,bbbb,ccc应该怎么打印?
答案:
法一:
grep -v abcd oldboy.txt //除去 oldboy.txt中的abcd,再打印出来
法二:
head -3 oldboy.txt //打印出oldboy.txt文件中的前三行
法三:
sed /^abcd/d oldboy.txt //把以abcd开头的删除后再打印:其中^表示以开头;如果不加^,表示包含
[扩展]
sed -n/a/p oldboy.txt //-n表示不用默认方式打印,包含a的打印
sed -n/^a/p oldboy.txt //-n表示不用默认方式打印,以a开头的打印

题目2:把oldboy.txt中包含a的行打印出来?
答案:
grep a oldboy.txt
sed -n /a/p oldboy.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
=================================================================================================
快捷键Tab:命令、目录补全键
man + 命令 :查找命令的定义

命令介绍:
取消默认
alias 别名
alias|grep cp
unalias 取消别名
/bin/cp
\cp

which 查看命令的路径whereis,locate,find / -type f -name "cp"
mkdir -p /data/oldboy  其中:必须加-p,才可以递归创建多个目录

[find命令]
find 查找路径
find / -type f -mtime 按照修改时间 -name "oldboy.txt"在根目录下查找文件名为"oldboy.txt"的类型为“文件”的路径
find 与 xargs用的更加频繁(用管道|相连)

sed -i s###g
akw

xargs 用于把find/ls的输出交给后面处理
man  查看命令以及配置文件等帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
符号介绍:
| 管道:通过管道把前一个命令的输出交给后一个命令继续处理
s###g
1
2
3
4
1、请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录以及/oldboy/test目录
答案:
mkdir -p /oldboy/test //-p递归创建目录,一般第一级目录不存在时用-p,否则报错
tree /oldboy/ //查看目录树结果
【问题】如何安装tree?

2、已知/tmp目录下已经存在text.txt文件,如何执行命令才能把/tmp/test.txt拷贝到/mnt下覆盖掉/mnt/text.txt,而让linux系统不提示是否覆盖(root权限下)。
答案:
法一:
\cp /tmp/text.txt /mnt/
法二:
/bin/cp /tmp/text.txt /mnt/ 其中which cp得到/bin
法三:alias
alias 查看别名
默认情况下,cp的别名是cp -i 用查看cp的别名:alias|grep cp

因此可以先用unalias去除cp的别名
unalias cp //不即cp使用别名
cp /tmp/text.txt /mnt/
提示:命令行处理别名仅在当时生效,重启系统后就失效了
【注】系统默认的别名的作用:
通过给危险命令加一些保护参数,防止人的误操作
把很多复杂的字符串简单化

2、man + 命令
作用:查找命令的作用

3、which 命令
作用:查找命令的路径

4、find + 目录 + -type 类型 + -name 名称 查找路径
find + 目录 + -type 类型 + -name 名称 + -exec + 命令 参数类型 + {} \;
案例:
c
find / -type f -name "oldboy.txt" -exec rm -f {} \;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
这里写图片描述
删除所有的“oldboy.txt”文件还可以用下面的方法
find / -type f -name “oldboy.txt” | xargs rm -f

【解释】其中 | 的含义是“管道”,下面是管道的解释:
这里写图片描述
find / -type f -name -mtime +15 “oldboy.txt” | xargs rm -f 按照时间
find / -type f -name -mtime +5 “oldboy” | xargs rm -rf
这里写图片描述
其中:-mtime示意图
这里写图片描述

5、题目:只查看oldboy.txt文件(100行)第20-30行的内容
答案:
方法一;
head -n 30 oldboy.txt | tail -n -10
方法二:sed擅长输出“行”
sed -n 20,30p lodboy.txt
方法二:awk擅长输出“列”,此处也可以处理行,只不过复杂一点。
awk ‘{if(NR>19&&NR<31) print $0}‘ oldboy.txt //$0表示处理“行”

6、题目: /data目录以及其子目录下所有以扩展名.sh结尾的文件中包含aaaa的字符串全部替换为AAAA。
答案:
find /data -type f name "sh" | xargs sed -i s#aaaa#AAAA#g
其中:s###g : s#被替换的字符串#替换成的字符串#g
-i表示替换后写入文件
批量查看:xargs是对前面find到的文件,按照行进行cat处理
find /data -type f name "
sh" | xargs cat

Linux的部分命令

标签:tail   移动目录   make   过程   linux   演示   查找命令   源文件   取消别名   

原文地址:http://blog.51cto.com/13859027/2146878

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