Linux常用命令(2)

Linux常用命令

1.文件管理

10>ln 建立链接文件

注意:linux下的链接文件相对于windows下的快捷方式,分为软连接和硬链接

软连接:不占用磁盘空间,源文件删除则链接失效【绑定】

硬链接:占用磁盘空间,源文件删除对链接没有任何影响

格式:

​ 软连接:ln -s 源文件 链接文件

​ 硬连接:ln 源文件 链接文件

演示命令:
#软连接
lichongchong@ubuntu01:~$ cd Desktop/
lichongchong@ubuntu01:~/Desktop$ rm -rf *
lichongchong@ubuntu01:~/Desktop$ touch a.txt
lichongchong@ubuntu01:~/Desktop$ ls
a.txt
lichongchong@ubuntu01:~/Desktop$ ll
总用量 8
drwxr-xr-x  2 lichongchong rock 4096 12月 19 09:25 ./
drwxr-xr-x 30 lichongchong rock 4096 12月 19 08:56 ../
-rw-r--r--  1 lichongchong rock    0 12月 19 09:25 a.txt
lichongchong@ubuntu01:~/Desktop$ ln -s a.txt a
lichongchong@ubuntu01:~/Desktop$ ls
a  a.txt
lichongchong@ubuntu01:~/Desktop$ ll
总用量 8
drwxr-xr-x  2 lichongchong rock 4096 12月 19 09:26 ./
drwxr-xr-x 30 lichongchong rock 4096 12月 19 08:56 ../
lrwxrwxrwx  1 lichongchong rock    5 12月 19 09:26 a -> a.txt
-rw-r--r--  1 lichongchong rock    0 12月 19 09:25 a.txt
lichongchong@ubuntu01:~/Desktop$ vim a.txt 
lichongchong@ubuntu01:~/Desktop$ cat a.txt 
fhjhgkajhg
423785823
hfueahdgu
lichongchong@ubuntu01:~/Desktop$ cat a
fhjhgkajhg
423785823
hfueahdgu
lichongchong@ubuntu01:~/Desktop$ vim a
lichongchong@ubuntu01:~/Desktop$ cat a
fhjhgkajhg
423785823
hfueahdgu
hello
lichongchong@ubuntu01:~/Desktop$ cat a.txt 
fhjhgkajhg
423785823
hfueahdgu
hello
lichongchong@ubuntu01:~/Desktop$ rm a.txt 
lichongchong@ubuntu01:~/Desktop$ cat a
cat: a: 没有那个文件或目录
    
#硬链接
lichongchong@ubuntu01:~/Desktop$ rm -rf *
lichongchong@ubuntu01:~/Desktop$ touch b.txt
lichongchong@ubuntu01:~/Desktop$ vim b.txt 
lichongchong@ubuntu01:~/Desktop$ ln b.txt b
lichongchong@ubuntu01:~/Desktop$ cat b.txt 
47826528<F3>74
hfuaejdh
lichongchong@ubuntu01:~/Desktop$ cat b
47826528<F3>74
hfuaejdh
lichongchong@ubuntu01:~/Desktop$ vim b.txt 
lichongchong@ubuntu01:~/Desktop$ cat b.txt 
47826528<F3>74
hfuaejdh
hello
lichongchong@ubuntu01:~/Desktop$ cat b
47826528<F3>74
hfuaejdh
hello
lichongchong@ubuntu01:~/Desktop$ vim b
lichongchong@ubuntu01:~/Desktop$ cat b
47826528<F3>74
hfuaejdh
hello
1234
lichongchong@ubuntu01:~/Desktop$ cat b.txt 
47826528<F3>74
hfuaejdh
hello
1234
lichongchong@ubuntu01:~/Desktop$ ll
总用量 16
drwxr-xr-x  2 lichongchong rock 4096 12月 19 09:33 ./
drwxr-xr-x 30 lichongchong rock 4096 12月 19 09:33 ../
-rw-r--r--  2 lichongchong rock   35 12月 19 09:33 b
-rw-r--r--  2 lichongchong rock   35 12月 19 09:33 b.txt
lichongchong@ubuntu01:~/Desktop$ rm b.txt 
lichongchong@ubuntu01:~/Desktop$ cat b
47826528<F3>74
hfuaejdh
hello
1234
lichongchong@ubuntu01:~/Desktop$ vim b
lichongchong@ubuntu01:~/Desktop$ cat b
4gsefjkgh7826528<F3>74
hfuaejdh
hello
1234

11>grep 文本搜索

强大的文本搜索工具,grep允许对文本文件进行模式查找,如果找到匹配模式,grep打印包含模式的所有行
注意:搜索内容串可以是正则表达式

-c:仅显示找到的行数	
-i:忽略大小写	
-n:显示匹配行以及行号
-v:反向选择,列出没有关键词的行【求反】

#grep一般结合管道符使用,从指定的众多数据中筛选
#grep   文件名 :使用没有任何意义,管道符前面的命令最好是输出命令


演示命令:
lichongchong@ubuntu01:~/Desktop$ cat b
4gsefjkgh7826528<F3>74
hfuaejdh
hello
1234
lichongchong@ubuntu01:~/Desktop$ grep b
^C
lichongchong@ubuntu01:~/Desktop$ touch a1.txt
lichongchong@ubuntu01:~/Desktop$ touch b1.txt
lichongchong@ubuntu01:~/Desktop$ touch a2.txt
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  a2.txt  b  b1.txt
lichongchong@ubuntu01:~/Desktop$ ls | grep a1.txt
a1.txt
lichongchong@ubuntu01:~/Desktop$ ls | grep a*.txt
lichongchong@ubuntu01:~/Desktop$ ls | grep a
a1.txt
a2.txt
lichongchong@ubuntu01:~/Desktop$ ls | grep -c a
2
lichongchong@ubuntu01:~/Desktop$ touch A1.txt
lichongchong@ubuntu01:~/Desktop$ ls | grep a
a1.txt
a2.txt
lichongchong@ubuntu01:~/Desktop$ ls | grep -i a
a1.txt
A1.txt
a2.txt
lichongchong@ubuntu01:~/Desktop$ vim a1.txt
lichongchong@ubuntu01:~/Desktop$ cat a1.txt
huithgui3rit
578475845
hello
abc
good
kkkk
lichongchong@ubuntu01:~/Desktop$ cat a1.txt | grep hello
hello
lichongchong@ubuntu01:~/Desktop$ cat a1.txt | grep is

12>which 查找其他命令所在的位置

which 其他命令名称

#系统的命令一般存放在/bin目录下

演示命令:
lichongchong@ubuntu01:~$ which ls
lichongchong@ubuntu01:~$ which ll    #查询不到结果

13>type 寻找命令所在的位置【-a】,包括命令别名 *****

type -a 其他命令名称

-a:可以找到所有,包括别名

演示命令:
lichongchong@ubuntu01:~$ type ls
lichongchong@ubuntu01:~$ type -a ls

14>find 按照指定条件来查找文件

格式:find  【查找路径】 【查找方式】 【查找条件】

-name:匹配名称,默认是精确匹配
-size:匹配文件大小      *******
-atime  -n  +n:匹配访问内容的时间(-n指n天以内,+n指n天以前)
-empty

#grep和find都用来查找,grep查找的是管道符前面符号的输出内容,find查找指定路径下的文件

演示命令:
lichongchong@ubuntu01:~$ find -name a1.txt
lichongchong@ubuntu01:~$ find -size 1k
lichongchong@ubuntu01:~$ find -size +1k
lichongchong@ubuntu01:~$ find -size -1k
lichongchong@ubuntu01:~$ find -empty

15>locate 查找数据

-i:忽略大小写
-c:不输出寻找结果,仅计算找到的文件数量
-l:仅输出指定的几行,  例如:-l 8,输出8行
-r:后面可以接正则表达式

#注意:不管在哪个路径下执行该命令,都是全局查找【在当前系统中查找】,将包含有指定关键字的内容显示出来
lichongchong@ubuntu01:~$ locate hello
lichongchong@ubuntu01:~$ locate /etc

16>sort 给文件内容排序

-f:忽略大小写的差异,例如 A 与 a 视为编码相同;
-b:忽略最前面的空格符部分;
-n:使用『纯数字』进行排序(默认是以文字型态来排序的);
-r:反向排序;#reverse,倒序
-u:就是 uniq,表示唯一的,相同的数据中,仅出现一行代表;

#下面的参数一般结合使用,表示用指定的符号分隔原内容,然后通过-k指定需要排序的组
-t:分隔符,默认是用 [tab] 键来分隔;
-k:以那个区间 (field) 来进行排序的意思

演示命令:
lichongchong@ubuntu01:~/Desktop$ cat a1.txt 
huithgui3rit
578475845
hello
abc
good
kkkk
274734
shfhdf
oooooo
bbbbbbb  
lichongchong@ubuntu01:~/Desktop$ sort a1.txt   #默认升序排序【数字在前,字母在后】
274734
578475845
abc
bbbbbbb
good
hello
huithgui3rit
kkkk
oooooo
shfhdf
lichongchong@ubuntu01:~/Desktop$ cat a1.txt 
huithgui3rit
578475845
hello
abc
good
kkkk
274734
shfhdf
oooooo
bbbbbbb
lichongchong@ubuntu01:~/Desktop$ sort -r a1.txt 
shfhdf
oooooo
kkkk
huithgui3rit
hello
good
bbbbbbb
abc
578475845
274734
lichongchong@ubuntu01:~/Desktop$ vim a1.txt 
lichongchong@ubuntu01:~/Desktop$ sort a1.txt 
274734
578475845
abc
bbbbbbb
good
hello
hello
huithgui3rit
kkkk
oooooo
shfhdf
lichongchong@ubuntu01:~/Desktop$ sort -u a1.txt 
274734
578475845
abc
bbbbbbb
good
hello
huithgui3rit
kkkk
oooooo
shfhdf
lichongchong@ubuntu01:~/Desktop$ ls
a1.txt  A1.txt  a2.txt  b  b1.txt
lichongchong@ubuntu01:~/Desktop$ vim a2.txt 
lichongchong@ubuntu01:~/Desktop$ cat a2.txt 
453645:fhysrg:53675
fghdd:fga:fhajfjhgajhgjhgj
fgyeadgfaghdg:fbahgha:436363
qiqiq:bb:fewt
ttuei:reu:vnjanjbv
lichongchong@ubuntu01:~/Desktop$ sort -t ":" -k 2 a2.txt
qiqiq:bb:fewt
fgyeadgfaghdg:fbahgha:436363
fghdd:fga:fhajfjhgajhgjhgj
453645:fhysrg:53675
ttuei:reu:vnjanjbv
lichongchong@ubuntu01:~/Desktop$ sort -t ":" -k 3 a2.txt
fgyeadgfaghdg:fbahgha:436363
453645:fhysrg:53675
qiqiq:bb:fewt
fghdd:fga:fhajfjhgajhgjhgj
ttuei:reu:vnjanjbv
lichongchong@ubuntu01:~/Desktop$ sort a1.txt | grep hello
hello
hello

17>cut 可以从一个文本文件或者文本流中提取文本列【根据指定的条件截取内容】

-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;( -连接区间  ,取的是和的意思)

演示命令:
ichongchong@ubuntu01:~/Desktop$ cat a2.txt 
453645:fhysrg:53675
fghdd:fga:fhajfjhgajhgjhgj
fgyeadgfaghdg:fbahgha:436363
qiqiq:bb:fewt
ttuei:reu:vnjanjbv
lichongchong@ubuntu01:~/Desktop$ cut -d ":" -f 1 a1.txt
huithgui3rit
578475845
hello
hello
abc
good
kkkk
274734
shfhdf
oooooo
bbbbbbb
lichongchong@ubuntu01:~/Desktop$ cut -d ":" -f 1 a2.txt
453645
fghdd
fgyeadgfaghdg
qiqiq
ttuei
lichongchong@ubuntu01:~/Desktop$ cut -c 1 a2.txt
4
f
f
q
t
lichongchong@ubuntu01:~/Desktop$ cut -c 2 a2.txt
5
g
g
i
t
lichongchong@ubuntu01:~/Desktop$ cut -c 1,3 a2.txt
43
fh
fy
qq
tu
lichongchong@ubuntu01:~/Desktop$ cut -c 1-3 a2.txt
453
fgh
fgy
qiq
ttu
lichongchong@ubuntu01:~/Desktop$ cut -d "f" -f 1 a2.txt
453645:


qiqiq:bb:
ttuei:reu:vnjanjbv

18>tee 读取标准输入的数据,并将其内容输出成文件

#从终端输入,相当于是Python中的input

-a:读取原文件内容,并追加新的内容,如果不设置该选项,则新的内容直接覆盖旧的内容

演示命令:
lichongchong@ubuntu01:~/Desktop$ cat b1.txt 
lichongchong@ubuntu01:~/Desktop$ tee b1.txt 
hello
hello
abcerffff
abcerffff
^C
lichongchong@ubuntu01:~/Desktop$ cat b1.txt 
hello
abcerffff
lichongchong@ubuntu01:~/Desktop$ tee b1.txt 
46756742356
46756742356
^C
lichongchong@ubuntu01:~/Desktop$ cat b1.txt 
46756742356
lichongchong@ubuntu01:~/Desktop$ tee b1.txt 
hello	
hello
^C
lichongchong@ubuntu01:~/Desktop$ cat b1.txt 
hello
lichongchong@ubuntu01:~/Desktop$ tee -a b1.txt
647236572645
647236572645
^C
lichongchong@ubuntu01:~/Desktop$ cat b1.txt 
hello
647236572645
lichongchong@ubuntu01:~/Desktop$ tee b1.txt  a1.txt 
gsheugh
gsheugh
^C
lichongchong@ubuntu01:~/Desktop$ cat b1.txt 
gsheugh
lichongchong@ubuntu01:~/Desktop$ cat a1.txt 
gsheugh

19>gedit 打开Linux下的文本编辑器

​ gedit :打开一个新的空的文件

​ gedit file:打开指定的文件

#区分vim

演示命令:
lichongchong@ubuntu01:~/Desktop$ gedit
lichongchong@ubuntu01:~/Desktop$ gedit a1.txt 

20>sed 流编辑器,【一次处理一行内容】,主要用来自动编辑一个或多个文件

选项:
-e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件;
-f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件;
-h或--help:显示帮助;
-n或--quiet或——silent:仅显示script处理后的结果;
-V或--version:显示版本信息。

参数:
文件:指定待处理的文本文件列表。

命令:
a\ 在当前行下面插入文本。
i\ 在当前行上面插入文本。
c\ 把选定的行改为新的文本。
d 删除,删除选择的行。
D 删除模板块的第一行。
s 替换指定字符
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写) 打印模板块的第一行。
q 退出Sed。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。  
W file 写并追加模板块的第一行到file末尾。  
! 表示后面的命令对所有没有被选定的行发生作用。  
= 打印当前行号码。  
 

sed替换标记
g 表示行内全面替换。  
p 表示打印行。  
w 表示把行写入一个文件。  
x 表示互换模板块中的文本和缓冲区中的文本。  
y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1 子串匹配标记
& 已匹配字符串标记

sed元字符集
^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。  
[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\< 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
\> 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
x\{m,\} 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
x\{m,n\} 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。

演示命令:
lichongchong@ubuntu01:~/Desktop$ cat a1.txt 
test hfjaehgja hello
45635  fhajdhfj
lichongchong@ubuntu01:~/Desktop$ sed '/^test/a\today is a good day' a1.txt
test hfjaehgja hello
today is a good day
45635  fhajdhfj
lichongchong@ubuntu01:~/Desktop$ cat a1.txt 
test hfjaehgja hello
45635  fhajdhfj
lichongchong@ubuntu01:~/Desktop$ sed '/^test/i\today is a good day~~~' a1.txt
today is a good day~~~
test hfjaehgja hello
45635  fhajdhfj
lichongchong@ubuntu01:~/Desktop$ sed '/^test/c\today is a good day~~~' a1.txt
today is a good day~~~
45635  fhajdhfj
lichongchong@ubuntu01:~/Desktop$ sed 's/test/abc/' a1.txt 
abc hfjaehgja hello
45635  fhajdhfj
lichongchong@ubuntu01:~/Desktop$ cat a1.txt 
test hfjaehgja hello
45635  fhajdhfj
lichongchong@ubuntu01:~/Desktop$ vim a1.txt 
lichongchong@ubuntu01:~/Desktop$ cat a1.txt 
test hfjaehgja hello
45635  fhajdhfj
hfuajkhg
3675
uyoui
cbnvb
432743y
lichongchong@ubuntu01:~/Desktop$ sed "3d" a1.txt
test hfjaehgja hello
45635  fhajdhfj
3675
uyoui
cbnvb
432743y
lichongchong@ubuntu01:~/Desktop$ sed "1,3d" a1.txt
3675
uyoui
cbnvb
432743y
lichongchong@ubuntu01:~/Desktop$ sed "1d;3d" a1.txt
45635  fhajdhfj
3675
uyoui
cbnvb
432743y
lichongchong@ubuntu01:~/Desktop$ sed "/hello/d" a1.txt
45635  fhajdhfj
hfuajkhg
3675
uyoui
cbnvb
432743y
lichongchong@ubuntu01:~/Desktop$ sed "1~2d" a1.txt
45635  fhajdhfj
3675
cbnvb
lichongchong@ubuntu01:~/Desktop$ cat a1.txt 
test hfjaehgja hello
45635  fhajdhfj
hfuajkhg
3675
uyoui
cbnvb
432743y
lichongchong@ubuntu01:~/Desktop$ sed "0~2d" a1.txt
test hfjaehgja hello
hfuajkhg
uyoui
432743y
lichongchong@ubuntu01:~/Desktop$ sed "$d" a1.txt 
test hfjaehgja hello
45635  fhajdhfj
hfuajkhg
3675
uyoui
cbnvb
432743y
lichongchong@ubuntu01:~/Desktop$ sed "/y$/d" a1.txt 
test hfjaehgja hello
45635  fhajdhfj

21>打包和压缩

一般操作:先打包【tar命令】,然后再压缩【gzip或者bzip2】

a.tar     可以把一大堆的文件和目录全部打包成一个文件

	-A或--catenate:新增文件到已存在的备份文件;

	-B:设置区块大小;-c或--create:建立新的备份文件;

	-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

	-d:记录文件的差别;

	-x或--extract或--get:从备份文件中还原文件;

	-t或--list:列出备份文件的内容;

	-z或--gzip或--ungzip:通过gzip指令处理备份文件;

	-Z或--compress或--uncompress:通过compress指令处理备份文件;

	-f<备份文件>或--file=<备份文件>:指定备份文件;

	-v或--verbose:显示指令执行过程;

	-r:添加文件到已经压缩的文件;

	-u:添加改变了和现有的文件到已经存在的压缩文件;

	-j:支持bzip2解压文件;

	-v:显示操作过程;

	-l:文件系统边界设置;

	-k:保留原有文件不覆盖;

	-m:保留文件不被覆盖;

	-w:确认压缩文件的正确性;

	-p或--same-permissions:用原来的文件权限还原文件;

	-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;

	-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;

	--exclude=<范本样式>:排除符合范本样式的文件。

演示命令:
lichongchong@ubuntu01:~/Desktop$ touch a1.txt
lichongchong@ubuntu01:~/Desktop$ tar -cvf text.tar a1.txt 
a1.txt		#仅打包,不压缩
lichongchong@ubuntu01:~/Desktop$ tar -zcvf check.tar.gz a1.txt 
a1.txt		#打包,使用gzip压缩
lichongchong@ubuntu01:~/Desktop$ tar -jcvf show.tar.bz2 a1.txt 
a1.txt		#打包,使用bzip2压缩
lichongchong@ubuntu01:~/Desktop$ tar -xf check.tar.gz 
lichongchong@ubuntu01:~/Desktop$ rm a1.txt 
lichongchong@ubuntu01:~/Desktop$ tar -xf check.tar.gz #解压
b.gzip	 对文件进行压缩和解压缩,压缩之后用“.gz”作为扩展名

#注意:跟tar命令结合使用
#好处:gzip可以对文本文件达到60%~70%的压缩率,减小文件,减小存储空间,通过网络传输的时候减少传输的时间

-d或--decompress或----uncompress:解开压缩文件;
-f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-l或——list:列出压缩文件的相关信息;
-L或——license:显示版本与版权信息;
-n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记;
-N或——name:压缩文件时,保存原来的文件名称及时间戳记;
-q或——quiet:不显示警告信息;
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-t或——test:测试压缩文件是否正确无误;
-v或——verbose:显示指令执行过程;
-V或——version:显示版本信息;


演示命令:
lichongchong@ubuntu01:~/Desktop$ gzip *        #压缩
lichongchong@ubuntu01:~/Desktop$ gzip -l *
         compressed        uncompressed  ratio uncompressed_name
                 27                   0   0.0% a1.txt
                 27                   0   0.0% aa.txt
                 27                   0   0.0% b1.txt
lichongchong@ubuntu01:~/Desktop$ gzip -dv *     #解压缩
a1.txt.gz:	  0.0% -- replaced with a1.txt
aa.txt.gz:	  0.0% -- replaced with aa.txt
b1.txt.gz:	  0.0% -- replaced with b1.txt
lichongchong@ubuntu01:~/Desktop$ gzip a1.txt 
lichongchong@ubuntu01:~/Desktop$ gzip -r b1.txt
lichongchong@ubuntu01:~/Desktop$ mkdir aaa
lichongchong@ubuntu01:~/Desktop$ cd aaa/
lichongchong@ubuntu01:~/Desktop/aaa$ touch c1.txt
lichongchong@ubuntu01:~/Desktop/aaa$ touch c2.txt
lichongchong@ubuntu01:~/Desktop/aaa$ touch c3.txt
lichongchong@ubuntu01:~/Desktop/aaa$ cd ..
lichongchong@ubuntu01:~/Desktop$ gzip -r aaa    #递归压缩
lichongchong@ubuntu01:~/Desktop$ gzip -dr aaa  #递归解压
lichongchong@ubuntu01:~/Desktop$ gzip -rv aaa   #递归压缩
aaa/c2.txt:	  0.0% -- replaced with aaa/c2.txt.gz
aaa/c3.txt:	  0.0% -- replaced with aaa/c3.txt.gz
aaa/c1.txt:	  0.0% -- replaced with aaa/c1.txt.gz
2.vim编辑器

vi命令是UNIX操作系统最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能

vim编辑器的工作模式有三种:命令模式,输入模式【编辑模式】,末行模式

命令模式:完成对文件的命令操作

输入模式【编辑模式】:可以完成对文本的编辑功能

末行模式:辅助

掌握:三种工作模式之间的切换

vim filename,回车-------》进入到命令模式------》按a,i,o等进入编辑模式-------》按esc进入命令模式------》输入:进入末行模式-----》wq/q/wq!/q!等退出命令模式,回到终端

进入vi的命令 
    vi/vim filename :打开或新建文件,并将光标置于第一行首 
    	#注意:只是在终端中打开,磁盘中不存在
    vi +n filename :打开文件,并将光标置于第n行首 
    vi + filename :打开文件,并将光标置于最后一行行首
    vi filename1 filename2   :同时打开多个文件

插入文本类命令 
  	i :在光标前    insert
  	I :在当前行首 
  	a:光标后        append
  	A:在当前行尾 
  	o:在当前行之下新开一行 
  	O:在当前行之上新开一行 
  	r:替换当前字符 
  	R:替换当前字符及其后的字符,直至按ESC键 
  
移动光标 
	#命令模式下使用
  	j或下箭头 向下移动一行
  	k或上箭头 向上移动一行
  	h或左箭头 左移一个字符
  	l或右箭头 右移一个字符
  	w     右移一个词
  	W     右移一个以空格分隔的词 [单词]
  	b     左移一个词
  	B     左移一个以空格分隔的词
  	0     移到行首
  	Ctrl-F  向前翻页
  	Ctrl-B  向后翻页
  	nG    到第n行  ------》先按下数字,再按下G
  	G     到最后一行
  	gg	     第一行   -----》先按下g,再按下g
  	n+       光标下移n行 
  	n-       光标上移n行
    
esc:退出输入模式

:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;

保存退出 
  	:wq		执行存盘退出操作;      -----》对内容做修改之后使用
	:w		执行存盘操作;
	:w!		执行强制存盘操作;
	:q		执行退出vi操作;
	:q!		执行强制退出vi操作;     -----》如果没有任何修改的时候使用
	:e文件名	打开并编辑指定名称的文件;
	:n!		如果同时打开多个文件,则保存上个文件继续编辑下一个文件;
	:f		用于显示当前的文件名、光标所在行的行号以及显示比例;
	
"""
如果对文件内容作了修改:按下:wq
如果对文件内容做任何修改,按下:q
如果在退出的时候报错【readonly】,需要强制退出,按下:wq! 和 :q!
"""
	
删除操作【注意:和上面的插入文本类没有关系,进入vim后直接使用,在命令模式下使用】
  	x		删除光标处的单个字符 
  	dd		删除光标所在行 
  	dw		删除当前字符到单词尾(包括空格)的所有字符 
  	de		删除当前字符到单词尾(不包括单词尾部的空格)的所有字符 
  	d$		删除当前字符到行尾的所有字符 
  	d^		删除当前字符到行首的所有字符 
  	J		删除光标所在行行尾的换行符,相当于合并当前行和下一行的内容
  	
替换操作
  	:s/old/new 		将当前行中查找到的第一个字符“old” 串替换为“new”
  	:#,#s/old/new 	在行号“#,#”范围内替换所有的字符串“old”为“new”
  	:%s/old/new	    在整个文件范围内替换所有的字符串“old”为“new”
  	:s/old/new/c 	在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认   #交互性替换
  	
撤消操作 【注意:直接在命令模式下使用】
	u取消最近一次的操作,并恢复操作结果,可以多次使用u命令恢复已进行的多步操作 
	U取消对当前行进行的所有操作 
	Ctrl + r对使用u命令撤销的操作进行恢复 
    
  #shift + g:进入vim编辑器之后,可以直接跳到页面尾部
3.用户管理

Linux是一个典型的多用户多任务的分时系统,任何一个使用系统资源的用户,都必须向系统管理员申请一个账号,然后以该账号进入系统

每个账户都有自己的一套账户和密码

实现对账户的管理,操作:

​ a.用户账号的添加,修改和删除

​ b用户口令的管理

​ c.用户组的管理

linux使用文件保存用户信息 
/usr
/etc/passwd 用户账户信息。
/etc/shadow 安全用户账户信息。
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/default/useradd 账户创建的默认值。
/etc/skel/ 包含默认文件的目录。
/etc/login.defs Shadow 密码套件配置。

1>whoami 查看当前系统当前用户的用户名

演示命令:
lichongchong@ubuntu01:~$ whoami
lichongchong
lichongchong@ubuntu01:~$ su root
密码: 
root@ubuntu01:/home/lichongchong# whoami
root

2>who 查看当前所有登录系统的用户信息

-q:只显示用户的登录账号的和登录用户的数量
-u:显示列标题

演示命令:
root@ubuntu01:/home/lichongchong# su lichongchong
lichongchong@ubuntu01:~$ who
lichongchong tty7         2018-12-19 08:55 (:0)
lichongchong@ubuntu01:~$ who -q
lichongchong
# 用户数=1
lichongchong@ubuntu01:~$ who -u
lichongchong tty7         2018-12-19 08:55 06:03        2289 (:0)

3>sudo 用来以其他身份来执行命令,预设的身份为root

#作用:使得指定的普通用户拥有超级管理员的权限

#设置方式:想要一个普通用户拥有超级管理员的权限,只需要设置/etc/sudoers,将普通用户添加进去即可

4>exit 退出

lichongchong@ubuntu01:~$ su root
密码: 
root@ubuntu01:/home/lichongchong# exit
exit
lichongchong@ubuntu01:~$ 

5>su 切换用户

演示命令:
lichongchong@ubuntu01:~$ su root
密码: 
root@ubuntu01:/home/lichongchong# whoami
root
root@ubuntu01:/home/lichongchong# su lichongchong
lichongchong@ubuntu01:~$ who
lichongchong tty7         2018-12-19 08:55 (:0)
lichongchong@ubuntu01:~$ who -q
lichongchong
# 用户数=1
lichongchong@ubuntu01:~$ who -u
lichongchong tty7         2018-12-19 08:55 06:03        2289 (:0)
lichongchong@ubuntu01:~$ vim /etc/sudoers
lichongchong@ubuntu01:~$ sudo vim /etc/sudoers
[sudo] lichongchong 的密码: 
lichongchong@ubuntu01:~$ su root
密码: 
root@ubuntu01:/home/lichongchong# exit
exit
lichongchong@ubuntu01:~$ su
密码: 
root@ubuntu01:/home/lichongchong# exit
exit
lichongchong@ubuntu01:~$ su -
密码: 
root@ubuntu01:~# pwd
/root
root@ubuntu01:~# su lichongchong
lichongchong@ubuntu01:/root$ pwd
/root
lichongchong@ubuntu01:/root$ cd /home/lichongchong/
lichongchong@ubuntu01:~$ su - root
密码: 
root@ubuntu01:~# pwd
/root
root@ubuntu01:~# su - lichongchong
lichongchong@ubuntu01:~$ 
    
#注意:使用su切换用户之后的路径问题

6>useradd 添加用户

作用:添加普通用户

注意:需要通过管理员的身份添加

-c 备注 加上备注。并会将此备注文字加在/etc/passwd中的第5项字段中
-d 用户主文件夹。指定用户登录所进入的目录,并赋予用户对该目录的的完全控制权        
-e 有效期限。指定帐号的有效期限。格式为YYYY-MM-DD,将存储在/etc/shadow         
-f 缓冲天数。限定密码过期后多少天,将该用户帐号停用       
-g 主要组。设置用户所属的主要组  www.cit.cn           
-G 次要组。设置用户所属的次要组,可设置多组         
-M 强制不创建用户主文件夹         
-m 强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下         
-p 密码。输入该帐号的密码         
-s shell。用户登录所使用的shell         
-u uid。指定帐号的标志符user id,简称uid

"""
存在的问题:添加了新的用户,通过su - 用户名进入该用户之后
正常:用户名@主机名:~$
问题:$


原因:在新用户下缺少配置文件,查看原用户的配置文件
解决方案:需要将.bashrc和.bash_logout拷贝到新用户

	

"""

演示命令:

"""
添加用户
1.
	sudo useradd 用户名
	配置文件【复制bash文件,/etc/passwd shell文件中添加、bin/bash】
2.	
	sudo useradd -m -s /bin/bash 用户名

3.
	sudo groupadd 用户组
	sudo useradd -m 用户名 -g 用户组
	
4.
	sudo useradd -m 用户名
"""

演示命令:
lichongchong@ubuntu01:~$ pwd
/home/lichongchong
lichongchong@ubuntu01:~$ sudo useradd zhangsan
[sudo] lichongchong 的密码: 
lichongchong@ubuntu01:~$ cd /home/
lichongchong@ubuntu01:/home$ ls
lichongchong
lichongchong@ubuntu01:/home$ sudo mkdir zhangsan
lichongchong@ubuntu01:/home$ ls
lichongchong  zhangsan
lichongchong@ubuntu01:/home$ ls -l
总用量 8
drwxr-xr-x 30 lichongchong rock 4096 12月 19 15:04 lichongchong
drwxr-xr-x  2 root         root 4096 12月 19 15:35 zhangsan
lichongchong@ubuntu01:/home$ sudo chown zhangsan:zhangsan /home/zhangsan
lichongchong@ubuntu01:/home$ ls -l
总用量 8
drwxr-xr-x 30 lichongchong rock     4096 12月 19 15:04 lichongchong
drwxr-xr-x  2 zhangsan     zhangsan 4096 12月 19 15:35 zhangsan
lichongchong@ubuntu01:/home$ sudo passwd zhangsan
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
Sorry, passwords do not match
passwd:认证令牌操作错误
passwd:密码未更改
lichongchong@ubuntu01:/home$ sudo passwd zhangsan
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码
lichongchong@ubuntu01:/home$ cd ..
lichongchong@ubuntu01:/$ cd /home/
lichongchong@ubuntu01:/home$ ls
lichongchong  zhangsan
lichongchong@ubuntu01:/home$ su lichongchong
密码: 
lichongchong@ubuntu01:/home$ su root
密码: 
root@ubuntu01:/home# exit
exit
lichongchong@ubuntu01:/home$ su zhangsan
密码: 
zhangsan@ubuntu01:/home$ exit
exit
lichongchong@ubuntu01:/home$ su - zhangsan
密码: 
$ exit
注销
lichongchong@ubuntu01:/home$ su - root
密码: 
root@ubuntu01:~# su - lichongchong
lichongchong@ubuntu01:~$ su - zhangsan
密码: 
$ ls -a /home/lichongchong/.bash*
/home/lichongchong/.bash_history  /home/lichongchong/.bashrc
/home/lichongchong/.bash_logout
$ ls -a /etc/skel/
.  ..  .bash_logout  .bashrc  examples.desktop	.profile
$ cp /etc/skel/.bash* .
$ ls -a
.  ..  .bash_history  .bash_logout  .bashrc
$ 注销
lichongchong@ubuntu01:~$ sudo vim /etc/passwd
lichongchong@ubuntu01:~$ su - zhangsan
密码: 
zhangsan@ubuntu01:~$ sudo useradd user1
[sudo] zhangsan 的密码: 
zhangsan 不在 sudoers 文件中。此事将被报告。
zhangsan@ubuntu01:~$ su - lichongchong 
密码: 
lichongchong@ubuntu01:~$ sudo vim /etc/sudoers
lichongchong@ubuntu01:~$ su - user1
密码: 
user1@ubuntu01:~$ sudo useradd -m lisi  -g  lisi
[sudo] user1 的密码: 
user1 不在 sudoers 文件中。此事将被报告。
user1@ubuntu01:~$ su - lichongchong
密码: 
lichongchong@ubuntu01:~$ sudo useradd -m lisi -g lisi
useradd:“lisi”组不存在
lichongchong@ubuntu01:~$ cd /home/
lichongchong@ubuntu01:/home$ su root
密码: 
root@ubuntu01:/home# groupadd lisi
root@ubuntu01:/home# useradd -m lisi -g lisi
root@ubuntu01:/home# su lichongchong
lichongchong@ubuntu01:/home$ ls
lichongchong  lisi  user1  zhangsan
lichongchong@ubuntu01:/home$ sudo passwd lisi
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码

7>userdel 删除用户

步骤:
1.使用userdel 删除用户
2.使用rm -rf 用户组 ,删除用户组

演示命令:
ichongchong@ubuntu01:~$ sudo userdel user1
userdel: user user1 is currently used by process 11839
lichongchong@ubuntu01:~$ exit
root@ubuntu01:/home# exit
lichongchong@ubuntu01:/home$ 注销
user1@ubuntu01:~$ 注销
lichongchong@ubuntu01:~$ 注销
zhangsan@ubuntu01:~$ 注销
lichongchong@ubuntu01:~$ 注销
root@ubuntu01:~# 注销
lichongchong@ubuntu01:/home$ exit
lichongchong@ubuntu01:/home$ 注销
root@ubuntu01:~# 注销
lichongchong@ubuntu01:~$ sudo userdel user1
lichongchong@ubuntu01:~$ ls /home/
lichongchong  lisi  py1811  user1  zhangsan
lichongchong@ubuntu01:~$ cd /home/
lichongchong@ubuntu01:/home$ sudo rm -rf user1
lichongchong@ubuntu01:/home$ ls
lichongchong  lisi  py1811  zhangsan
lichongchong@ubuntu01:/home$ sudo userdel lisi
lichongchong@ubuntu01:/home$ ls
lichongchong  lisi  py1811  zhangsan
lichongchong@ubuntu01:/home$ sudo rm -rf lisi

8>passwd 设置密码

9>查看用户组

演示命令:
lichongchong@ubuntu01:/home$ cat /etc/group

10>groupadd 添加组

演示命令:
ichongchong@ubuntu01:/home$ sudo groupadd python1811

11>usermod 修改用户的基本信息

-c<备注>  修改用户帐号的备注文字。 
-d登入目录>  修改用户登入时的目录。 
-e<有效期限>  修改帐号的有效期限。 
-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。 
-g<群组>  修改用户所属的群组。 
-G<群组>  修改用户所属的附加群组。 
-l<帐号名称>  修改用户帐号名称。 
-L  锁定用户密码,使密码无效。 
-s<shell>  修改用户登入后所使用的shell。 
-u<uid>  修改用户ID。 
-U  解除密码锁定。

演示命令:
lichongchong@ubuntu01:/home$ ls
lichongchong  py1811  user1  zhangsan
lichongchong@ubuntu01:/home$ ls -l
总用量 16
drwxr-xr-x 30 lichongchong lichongchong 4096 12月 19 15:56 lichongchong
drwxr-xr-x  2 py1811       python1811   4096 12月 19 16:10 py1811
drwxr-xr-x  2 user1        user1        4096 12月 19 16:27 user1
drwxr-xr-x  2 zhangsan     zhangsan     4096 12月 19 15:51 zhangsan
lichongchong@ubuntu01:/home$ sudo usermod -g staff user1
lichongchong@ubuntu01:/home$ ls -l
总用量 16
drwxr-xr-x 30 lichongchong lichongchong 4096 12月 19 15:56 lichongchong
drwxr-xr-x  2 py1811       python1811   4096 12月 19 16:10 py1811
drwxr-xr-x  2 user1        staff        4096 12月 19 16:27 user1
drwxr-xr-x  2 zhangsan     zhangsan     4096 12月 19 15:51 zhangsan

12>groupdel 删除组

#注意:不能直接删除有用户的用户组,如果一定要删除,首先使用userdel删除用户,使用groupdel删除用户组,使用rm - rf 删除home下的用户目录

演示命令:
ichongchong@ubuntu01:/home$ sudo groupadd text
lichongchong@ubuntu01:/home$ ls
lichongchong  py1811  user1  zhangsan
lichongchong@ubuntu01:/home$ cat /etc/group
lichongchong@ubuntu01:/home$ sudo groupdel text
lichongchong@ubuntu01:/home$ cat /etc/group

13>sudo 让当前用户暂时以管理员的身份root来执行命令

14>chmod 修改文件权限

演示命令:
#字母法
lichongchong@ubuntu01:~$ cd Desktop/
lichongchong@ubuntu01:~/Desktop$ touch file1.txt
lichongchong@ubuntu01:~/Desktop$ ll
总用量 12
drwxr-xr-x  2 lichongchong lichongchong 4096 12月 19 16:43 ./
drwxr-xr-x 30 lichongchong lichongchong 4096 12月 19 15:56 ../
-rw-r--r--  1 lichongchong lichongchong  731 12月 19 14:51 a1.txt
-rw-r--r--  1 lichongchong rock            0 12月 19 16:43 file1.txt
lichongchong@ubuntu01:~/Desktop$ chmod u+x file1.txt 
lichongchong@ubuntu01:~/Desktop$ ll
总用量 12
drwxr-xr-x  2 lichongchong lichongchong 4096 12月 19 16:43 ./
drwxr-xr-x 30 lichongchong lichongchong 4096 12月 19 15:56 ../
-rw-r--r--  1 lichongchong lichongchong  731 12月 19 14:51 a1.txt
-rwxr--r--  1 lichongchong rock            0 12月 19 16:43 file1.txt*
lichongchong@ubuntu01:~/Desktop$ chmod g+w file1.txt 
lichongchong@ubuntu01:~/Desktop$ ll
总用量 12
drwxr-xr-x  2 lichongchong lichongchong 4096 12月 19 16:43 ./
drwxr-xr-x 30 lichongchong lichongchong 4096 12月 19 15:56 ../
-rw-r--r--  1 lichongchong lichongchong  731 12月 19 14:51 a1.txt
-rwxrw-r--  1 lichongchong rock            0 12月 19 16:43 file1.txt*


#数字法
lichongchong@ubuntu01:~/Desktop$ touch b.txt
lichongchong@ubuntu01:~/Desktop$ ll
总用量 12
drwxr-xr-x  2 lichongchong lichongchong 4096 12月 19 16:46 ./
drwxr-xr-x 30 lichongchong lichongchong 4096 12月 19 15:56 ../
-rw-r--r--  1 lichongchong lichongchong  731 12月 19 14:51 a1.txt
-rw-r--r--  1 lichongchong rock            0 12月 19 16:46 b.txt
-rwxrw-r--  1 lichongchong rock            0 12月 19 16:43 file1.txt*
lichongchong@ubuntu01:~/Desktop$ chmod 777 b.txt 
lichongchong@ubuntu01:~/Desktop$ ll
总用量 12
drwxr-xr-x  2 lichongchong lichongchong 4096 12月 19 16:46 ./
drwxr-xr-x 30 lichongchong lichongchong 4096 12月 19 15:56 ../
-rw-r--r--  1 lichongchong lichongchong  731 12月 19 14:51 a1.txt
-rwxrwxrwx  1 lichongchong rock            0 12月 19 16:46 b.txt*
-rwxrw-r--  1 lichongchong rock            0 12月 19 16:43 file1.txt*

15>chown 修改用户所有者

演示命令:

16>chgrp 修改文件所属组

#前提:组名必须存在
格式: chgrp  新的组名   文件名
4.与用户账号有关的系统文件
5.系统管理

1>date 显示当前日期

2>cal 显示一个日历

3>ps 报告当前系统的进程状态

​ 进程是处于执行期的程序以及它所包含的所有资源的总称,包括虚拟处理器,虚拟空间,寄存器,堆栈,全局数据段等。
​ 针对用户进程,又可以分为交互进程、批处理进程和守护进程三类。
​ (1) 交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。
​ (2) 批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。
​ (3) 守护进程:守护进程是一直运行的一种进程,经常在linux系统启动时启动,在系统关闭时终止。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。例如httpd进程,一直处于运行状态,等待用户的访问。还有经常用的crond进程,这个进程类似与windows的计划任务,可以周期性的执行用户设定的某些任务。
​ ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的

​ -a:显示所有进程(包括其他用户的进程)

​ -u:用户以及其他详细信息

​ -x:显示没有控制终端的进程

​ -ef:显示所有

4>kill 删除执行中的程序或工作

​ -a:当处理当前进程时,不限制命令名和进程号的对应关系;
​ -l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
​ -p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
​ -s <信息名称或编号>:指定要送出的信息;
​ -u:指定用户

5>top 动态显示进程

6>df 显示磁盘分区上的可使用的磁盘空间

​ 注意:默认显示单位为KB

​ 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息

7>du 显示文件的内存大小

​ 注意:与df命令不同的是du命令是对文件和目录磁盘使用的空间的查看

8>crontab 提交和管理用户的需要周期性执行的任务

​ 注意:当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务

9>free 显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区

​ -b:以Byte为单位显示内存使用情况;

​ -k:以KB为单位显示内存使用情况;

​ -m:以MB为单位显示内存使用情况;

​ -o:不显示缓冲区调节列;

​ -s<间隔秒数>:持续观察内存使用状况;

​ -t:显示内存总和列;

​ -V:显示版本信息

10>mode 权限标记

11>alias 给命令起别名

​ 格式:alias 别名=原名

12>关机重启

6.网络管理

1>ifconfig

类似于window下的ipconfig

演示命令:
lichongchong@ubuntu01:~$ ifconfig

2>ping

演示命令:
lichongchong@ubuntu01:~$ ping www.baidu.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值