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