linux(CentOS版本)学习笔记2

拈花ヽ惹草 提交于 2020-01-10 18:55:07

1.cp和mv命令:拷贝文件和移动文件
cp命令:拷贝文件或目录。例如拷贝new_file文件:cp new_file new_file_copy,第一个文件new_file是已经存在的文件,也就是被拷贝的文件,第二个文件new_file_copy是需要创建的文件,是new_file的副本。
当然,我们不一定要在同一个目录下拷贝,也可以把文件拷贝到其他目录。例如:cp new_file one 这里one是其他的目录。拷贝过去后,文件名是不改变的,还是叫new_file。如果想拷贝文件到其他目录的同时,不要具有相同名字,那么可以这样做 cp new_file one/new_file_copy。
如果要拷贝目录,只要在cp命令之后加上-r或者-R参数,这样拷贝的时候,目录中所有的内容(子目录和文件)都会被拷贝。
使用通配符星号:例如,cp 星号.txt folder就是把当前目录下所有txt文件拷贝到folder目录中。cp ha星号 folder就是把当前目录以ha开头的文件都拷贝到folder目录中。

mv命令:
功能1:移动文件,与cp命令用法类似,不同的是cp命令会复制当前文件,而mv命令则是单纯的移动,并不会制作副本。例如:mv new_file_2 one就是将new_file_2这个文件移动到one目录,而原先的new_file_2文件就不存在了,用cp命令的时候,原文件还是在的,只是把副本移动到其他目录。
功能2:移动目录:和移动文件一样,不需要额外的参数。例如:mv new_folder one就是将new_folder目录(包括子目录和文件)移动到one这个目录。
mv命令也可以配合通配符使用,例如,mv 星号.txt one就是将当前目录下所有txt文件移动到one目录。
功能3:重命名文件。例如:mv new_file renamed_file就是将new_file重命名为renamed_file。

2.rm命令:删除文件和目录
重要提示:这个命令不好惹,因为在终端中没有回收站或垃圾箱,所以删除后一般很难恢复。
rm命令可以删除一个文件,多个文件,目录,甚至整个linux系统。
例如:rm new_file_2,也可以同时删除多个文件,只要用空格隔开每个文件即可,例如:rm file1 file2 file3
下面介绍rm的几个参数
a.-i参数:保险起见,用rm删除命令时,可以加上-i参数,这样可以向用户确认是否删除。有两种回答:y表示是,回车确认后就删除了,n表示否,回车确认后文件不会删除。
b.-f参数:慎用,终端不会询问用户是否确认删除文件,而是会强制删除。例如:rm -f file
c.-r参数:使用-r参数,可以使rm命令删除目录,并且递归删除其包含子目录和文件。
最危险的命令:rm -rf /星号 或者rm -rf /:可能会毁了整个系统

3.ln命令:创建链接,用于在文件之间创建链接
事实上:Linux下有两种链接类型:
a.Physical link:物理链接或硬链接
硬链接原理:使链接的两个文件共享同样的文件内容。一旦文件1或文件2之间有了硬链接,那么修改文件1或文件2,修改的是相同一块内容,只不过我们可以用两个文件名来取到文件内容。
硬链接缺陷:只能创建指向文件的硬链接,不能创建指向目录的。而软链接可以指向文件或目录,对于目录,一般都是用软链接。
创建硬链接:直接用ln命令,不加任何参数:ln file1 file2。如果我们用rm file1来删除file1,对file2没什么影响,如果我们用rm file2来删除file2,对file2也没什么影响。对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上删除。

b.Symbolic link:符号链接或软链接
创建软链接:创建硬链接时ln不带任何参数,创建软链接需要加上-s参数
ln -s file1 file2
file2的信息是这样的:file2->file1,表示file2指向file1。file2前面的权限那里的第一个字母变成了L,表示link,之前硬链接是没有L的,硬链接看起开就和普通文件类似。其实file2这个软链接只是file1的一个快捷方式。file2的inode(可以用ls -i来查看)和file1不一样,也就是文件内容不一样。
软链接特点:如果我们删除file2,没什么大不了,file1不会受影响。但是如果删除file1,file2会变成死链接,因为指向的文件不见了。

4.如果要运行只有root才可以运行的命令,可以在此命令前加上sudo命令,例如:
sudo command,此时终端会提示你输入密码,至少第一次会要求输入密码。此密码是你个人用户的密码,在我的情况,就是socarry8的账户密码。这只是暂时使用一下sudo命令,如果想一直成为root,则应该使用sudo su命令,用exit命令可以退出root身份。使用su -i命令,可以直接切换到root家目录下。

5.只有root用户才能运行的命令:
a.useradd命令:用于添加用户,命令后接要创建的用户名。
b.passwd命令:修改用户的密码,用法类似useradd。
c.userdel命令:删除已创建的用户,在后面接要删除的用户名。单单用userdel命令,只会删除用户,但是不会删除在/home目录中的家目录,如果你想要连此用户的家目录也一并删除,可以加上-r这个参数,即userdel -r 用户名。

6.群组管理的命令
linux中每一个用户都属于一个特定的群组,如果你不设置用户的群组,默认会创建一个和它的用户名一样的群组,并且把用户划归到这个群组。
a.groupadd命令:用于添加一个新的群组,后接需要创建的群组名。
b.usermod命令:用于修改用户的账户。
-l参数:对用户重命名。/home中的用户家目录名不改变,需要手动修改。
-g参数:修改用户群组。
假如要将socarry8这个用户放到我刚创建的friends群组里,则需要usermod -g frineds socarry8,用户socarry8之前的群组是socarry8,默认的。
用groups命令可以获知一个用户属于哪些群组,用法很简单,后接用户名就可以了,当然用户要存在才行。
-G参数:可以将一个用户添加到多个群组。例如usermod -G friends,happy,funny thomas,就是将thomas用户添加到friends,happy,funny几个群组中。注意使用usermod要小心,因为配合-g或者-G参数时,它会把用户从原先的群组剔除,加入到新的群组。如果不想离开原先的群组又想加入新的群组,可以在-G参数的基础上加上-a参数。
c.groupdel命令:删除一个已存在的群组,后接已存在的群组名。

7.修改文件的所有者和群组
只有root用户可以修改一个文件的所有者和群组。
我们在家目录里(用户socaary8)创建一个文件,例如file.txt,用ls -l命令来查看一下它的信息,file.txt的所有者和群组都是socarry8
在这里插入图片描述
现在我想把这个文件转让给另一个用户thomas,则需要用到chown命令:改变文件的所有者,需要root身份才能运行,后接新的所有者的用户名,再接文件名。例如chown thomas file.txt,这样就把所有者改为thomas,但是所在群组是不变的,还是socarry8。
那么如何改变文件所在的群组呢?这就要用到chgrp命令,后接新的群组名,再接文件名。
其实chown命令也可以改变文件的群组,用法如下:chown thomas:friends file.txt,就把file.txt文件的所有者改为thomas,群组改为friends。
chrown命令的-R参数:递归设置子目录和子文件,会使得被修改目录的所有子目录和子文件都改变所有者,或者连群组也改变,用上述冒号的方法来同时修改所有者和群组。

8.权限的原理
在这里插入图片描述
d:表示目录,就是说这是一个目录
l: 表示链接,就是说这是一个链接
r:表示读,就是说可以读这个文件
w:表示写,就是说可以写/修改这个文件
x: 表示执行/运行,可以运行这个文件。如果x权限在一个目录上,表示的是这个目录可以被读,就是可以打开此目录来看其子目录和子文件,如果同时有r权限的话。如果相应位置有字母,表示有相应权限,短横-,表示没有相应权限。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.chmod命令:修改文件的访问权限
a.用数字来分配权限:chmod的绝对用法。事实上,linux系统对每种权限(r,w,x)分配了对应的数字。r对应4,w对应2,x对应1,所以要合并这些权限,就需要做简单的加法,即将对应的数字相加。
例如我们要分配读写权限,那么我们就要用4+2,就等于6
在这里插入图片描述
举例:640
6:文件的所有者具有读和写的权限
4:文件所在群组的其他用户具有读的权限
0:除此之外的其他用户没有任何权限
因此可以给的最宽泛的权限是777
chmod 600 renamed_file,就代表renamed_file文件的访问权限被修改为了:rw-------。

b.用字母来分配权限:chmod的相对用法
u:表示所有者
g:表示群组用户
o:表示其他用户
a:表示所有用户
+:表示添加权限
-:表示去除权限
=:表示分配权限
chomd u+rx file 文件file的所有者增加读和运行的权限。
chomd g+r file 文件file的群组其他用户增加读的权限。
chomd o-r file 文件file的其他用户移除读的权限。
chomd g+r o-r file 文件file的群组其他用户增加读的权限,其他用户移除读的权限
chomd go-r file 文件file的群组其他用户和其他用户均移除读的权限
chomd +x file 文件file的所有用户增加运行的权限
chomd u=rwx,g=r,o-=file 表示文件file的所有者分配读,写和执行的权限,群组其他用户分配读的权限,不能写或执行,其他用户没有任何权限。

-R参数:递归的修改访问权限,假如只允许socarry8能读,写运行/home/socarry8目录的所有文件,chmod -R 700/home/socarry8。

总结一下:有一些命令的运行必须要先切换到root身份,usermod用于修改用户账户,chgrp用于修改群组,chown用于修改所有者和群组,而chmod命令不需要root身份就可以运行

10.文本编辑器:可以编辑和查看文本文件,但是不能对文件做格式处理,例如加粗,斜体,改变颜色,改变字体大小,添加超链接等等。常见的有windows下的记事本,maxOS下的文本编辑,linux下的Vi,Vim等等。
文本处理器:又叫文档编辑器,不仅可以编辑和查看文档,而且可以对其文字进行格式处理。例如加下划线,插入图片等。这些软件只能在图形界面下使用,常见的有windows下的word,maxOS下的Pages,Linux下的OpenOffice Writer等。
接下来我们介绍一种容易入门,对初学者有好的文本编辑器:Nano,日后随着学习的深入,我们将介绍Vim。

我们可以用文本编辑器来编辑纯文本文件,纯文本格式,就是没有任何文本修饰的,没有任何粗体,下划线,斜体,图形,符号或者特殊字符以及特殊打印格式的文本。即只保存文本,不保存格式设置。windows下,比较熟悉的纯文本文件就是.txt结尾的文本文档,在linux下,后缀名没有那么重要,不少纯文本文件是没有后缀名的。

CentOS中预装了nano,因此只要在终端中输入nano,就可以启动它了。
在这里插入图片描述
常用的nano组合快捷键:
ctrl + G:显示帮助文档
ctrl + O:保存文件
ctrl + R:打开其他文件
ctrl + Y:上一页
ctrl + V:下一页
ctrl + K:剪切当前一行
ctrl + X:退出
ctrl + W:查找
ctrl + U:粘贴刚剪切的内容
ctrl + \:替换
ctrl + F:向前移动一格光标
ctrl + B:向后移动一格光标
ctrl + P:向上移动一行
ctrl + N:向下移动一行
如果比较熟悉这些快捷键组合之后,觉得下方帮助文档有点碍眼,则先按Esc键,再按x键,帮助文档就没了,若要重新显示,则同样操作。

11.Nano的参数
nano file.txt:用nano打开file.txt,如果你对file.txt有写的权限,那你就可以用nano来修改这个文件。如果file.txt文件不存在,就会创建一个空文件,名字叫做file.txt。
-m参数:激活鼠标。如果没有-m参数,鼠标在nano里是不起作用的,加了-m参数鼠标可以通过点击来控制光标的位置。
-i参数:激活自动缩进的功能
-A参数:激活智能home键的功能。通常状况下按下键盘的home键,光标会立即跳到一行的最开始,用了-A参数,按下home键它会智能的判断,根据一行的开始有无缩进来跳。
如果要同时激活这三个参数,只需要这样用:nano -miA file.txt。

12.通过.nanorc来配置Nano
在终端家目录下中输入nano .nanorc
每一行一句配置语句,配置语句是以set或者unset开头,set用于激活,unset用于关闭,它们后面接你要配置的项目。例如set mouse,就是用于激活鼠标,每次nano启动时就会激活鼠标操作了,不必写-m这个参数了。同理,set autoindent是激活自动缩进,相当于-i参数的作用,set smarthome是激活智能home键。
要保存文件,只要按下ctrl + O,它会提示你文件名是.nanorc。
上面所说的操作只对某个用户生效,如果用户非常多,可以使用全局的nanorc,是为系统上所有用户所公共调用的,也叫nanorc,是在/etc中,是/etc/nanorc,这回nano前面没有.了(表明不是隐藏文件),这个全局的配置只能由root用户修改。在这个配置文件里有所有可以放置在你自己的.nanorc中的语句,这些配置语句都是以#开头,就是说默认是注释掉的(不生效),在/etc/nanorc中把那些配置语句前面的#去掉,会对全局用户生效。

13.通过.bashrc配置终端
.bashrc是用户的终端配置文件,在我的情况,位于/home/socarry8/.bashrc,这个文件一般来说是默认存在的,不想.nanorc可能还要自己创建。打开家目录下的终端配置文件看看,只要输入以下命令:nano ~/.bashrc。
Bash是最常用的一种shell程序,CentOS和大部分常见的linux发行版默认的shell程序就是Bash。之后我们会去学习这种脚本语言。
终端的bash也有它的全局配置文件:/etc/bashrc

14.软件安装,如虎添翼
有时候CentOS默认的yum源不一定是国内镜像,导致yum在线安装及更新速度不是很理想。这时候需要将yum源设置为国内镜像站点。国内主要开源的开源镜像站点应该是网易和阿里云了。
1.首先备份系统自带yum源配置文件/etc/yum.repos.d/CentOS-Base.repo
root身份输入命令:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.下载163的yum源配置文件到上面那个文件夹内
CentOS7
root身份输入命令:wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
3.运行yum makecache生成缓存
root身份输入命令:yum makecache
在这里插入图片描述

15.用终端管理软件包
终端的软件包管理命令一般用yum
a.sudo yum update:更新软件包
b.sudo yum search xxx:搜索软件包
c.sudo yum install xxx:安装软件包
d.sudo yum remove xxx:删除软件包
如果网站上没有对应的软件包,则去下载本地的.rpm软件包,可以用rpm命令来安装:
sudo rpm-i *.rpm 用于安装
sudo rpm -e 包名 用于卸载

16.下面讲解非常重要的知识点:
RTFM阅读手册
a.man命令:后接你想要显示使用手册的命令,函数等等,此命令用于查看系统中自带的各种参考手册。
输入man+数字+命令/函数,可以查到相关的命令和函数,若不加数字,man默认从数字较小的手册中寻找相关的命令和函数。
如何在手册中移动:
a.键盘上的方向键:向上和向下键使我们实现上一行和下一行的跳转
b.Pgup和PgDn(或者空格键):实现上一页和下一页的跳转
c.键盘上的Home和End键:实现开始和结尾的跳转
d./键:实现搜索,和之前在less命令中功能类似
e.键盘上的q键:退出手册页

手册页的不同区域,这些区域的名字是用大写和粗体表示,且靠左对齐
在这里插入图片描述
NAME:手册页对应的命令或函数名字,后接简单描述。
SYNOPSIS:包含了使用此命令的所有方法。
DESCRIPTION:命令的更深入的描述,这个区域也会包括所有参数及其用法,一般来说这个区域也是文字最多的。
SEE ALSO:与此命令有关的,扩展阅读。
下面以mkdir命令举例:
在这里插入图片描述
在SYNOPSIS区域中有[OPTION],表示在mkdir之后,我们可以加选项参数(就是-p之类),SYNOPSIS区域中中括号中的内容表示可选,不一定非要加参数。在这个区域中还有DIRECTORY,就是需要用mkdir命令创建的目录,这个参数是必须的,因为并没有用中括号括起来。区域里的省略号表示可以有多个此类内容,在[OPTION]和DIRECTORY后都有省略号,分别表示可以有多个选项和多个目录名。SYNOPSIS区域中,粗体的文字表示要原封不动的输入,下划线的文字表示要用实际的内容替换。

下面再来看一个稍复杂的命令,man cp
在这里插入图片描述
SYNOPSIS区域第一行代表拷贝原文件到目标文件
第二行表示拷贝一个或多个源文件到目录
第三行表示拷贝一个或多个源文件到目录,与第二种方法的效果其实是一样的,只不过这里把目录名放在了前面,但是这里的-t参数必须加。

apropos命令:查找命令。只要后接一个关键字,apropos命令就会为你在所有手册页中查找相关的命令。

-h或–help参数:也是查找帮助文档,可能没有man命令那么详细,但是往往更容易阅读。比如我们要查看yum命令帮助文档,可以:yum -h

whatis命令:只会列出man命令显示的手册的开头部分,就是概述命令的作用

17.查找文件
a.locate命令:快速查找,搜索包含关键字的所有文件和目录。这个命令用于定位要查找的文件,而且此命令很快。后接要查找的文件名。
缺陷:对于刚创建不久的文件,因为它们还没被收录进文件数据库,因此locate命令就找不到其索引,自然就不会返回任何结果。linux系统一般每天更新一次数据库,因此只要你隔24小时再用locate查找,应该就能找到了。如果不想等那么久,可以用updatedb命令强制系统立即更新文件数据库,此命令只能由root用户执行。

b.find命令:深入查找,而且它可以让我们对每个找到的文件做后续的操作。
用法:find 何处 何物 做什么 这几个参数中,只有何物是必须指定的,也就是要查找什么。
何处:指定在哪个目录中查找,此目录的所有子目录也会被查找。与locate命令的查找所有文件数据库的所有记录不同,find命令可以限定查找目录。比如可以只让 find查找/home目录。默认的,假如我们没有给出何处这个参数,那么find命令会在当前目录及其子目录中查找。
何物:也就是要查找什么,我们可以根据文件的名字查找,也可以根据其大小查找,也可以根据其最近访问时间查找,这个参数是必须的。
做什么:用find命令找到我们要的文件后,可以对每个文件做一定的操作,称为后续处理。默认的,假如不指定这个参数,find命令只会显示找到的文件。

例如要在/var/log目录下查找名为syslog的文件,则find /var/log -name “syslog”
与locate命令不同的是,find命令只会查找完全符合何物的字符串表示的文件,而locate会查找所有包含关键字的文件,例如要用find查找thing这个文件,那么只会找到名字就是thing的文件,而locate命令会查找到比如thing,thing1,onething这样的文件。如果想用find查找所有以syslog这个关键字开头的文件,则输入find /var/log -name “syslog*”,会匹配凡是以syslog开头的文件,*号是匹配一个或多个字符。如果要查找以syslog结尾的文件,可以用星号syslog,如果查找包含syslog这个关键字的文件,可以用星号syslog星号。如果要在整个硬盘里查找:则 find / -name “syslog”。

还可以根据文件大小查找:例如以root身份查找/var中大小超过10M的文件:find /var -size +10M。这次使用的-size参数,来指定查找文件的大小,后面紧跟的+10M表示大于10兆字节。如果要查找小于指定大小的文件,可以用减号。如果没有加减号,则查找大小等于指定数值的文件。

还可以根据文件的最近访问时间查找:使用-atime参数:find -name “*.txt” -atime -7。-atime参数后面紧跟的-7表示7天之内,减号的作用是表示小于。

仅查找目录或文件:用-type参数来指定查找文件类型
-type d:只查找目录类型。
-type f:只查找文件类型。
如果不使用-type参数指定类型,find命令默认是查找目录和文件的。

find命令高级用法:操作查找结果
a.删除查找到的文件:可以用delete参数,例如find -name “*.jpg” -delete
就会删除当前目录及子目录下所有以.jpg为后缀的文件。
b.调用命令:使用-exec参数,可以后接一个命令,对每个查找到的文件进行操作,例如将one目录下所有查找到的txt文件的访问权限都改为600,则find one -name “星号.txt” -exec chomd 600 {} ;就是对每个找到的.txt结尾的文件,都进行-exec参数指定的操作。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!