Linux概述及目录命令相关的操作
一、Linux的环境搭建
Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用。
我学习用的Linux系统是CentOS7,CentOS7在Linux系统中比较常见主流也适合学习。
(1)虚拟机安装CentOS
- 缺点:耗资源,不推荐使用此方式
虚拟机安装CentOS有两种方式:
1、可以通过镜像进行安装
2、安装 VMware 虚拟机软件,然后打开我们的镜像即可使用
(2)购买CentOS的云服务器(推荐)
虚拟机安装后占用空间,也会有些卡顿,我们作为程序员其实可以选择购买一台自己的服务器,这样的话更加接近真实线上工作;
流程如下:
1、阿里云购买服务器:https://www.aliyun.com/minisite/goods?userCode=0phtycgr
2、购买完毕后,获取服务器的ip地址,重置服务器密码,就可以远程登录了
3、下载 xShell 工具,进行远程连接使用!连接成功效果如下:
(xShell连接成功后上方是一个绿点)
注意事项:
如果要打开端口,需要在阿里云的安全组面板中开启对应的出入规则,不然的话会被阿里拦截!阿里云服务器打开端口的教程如下:https://www.bt.cn/bbs/thread-2897-1-1.html
如果前期不好操作,推荐安装宝塔面板,傻瓜式的管理服务器
1、按照前面给的开端口教程,在阿里云服务器端开启对应的端口
2、用命令安装宝塔面板
宝塔面板安装教程:https://www.bt.cn/bbs/thread-19376-1-1.html
3、安装完毕后会得到远程面板的地址,账号,密码,就可以登录了
4、登录之后就可以可视化的安装环境和部署网站!在宝塔面板上可视化操作安装。
宝塔面板安装登录成功如下:
二、Linux系统开关机
(1)开机登录
开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可!
一般来说,用户的登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
最高权限账户为 root,可以操作一切!
(2)关机
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
关机指令为:shutdown ;
sync # 将数据由内存同步到硬盘中。
不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。然后再执行关机指令
sync # 将数据由内存同步到硬盘中。
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
shutdown –h now # 立马关机
shutdown –h 20:25 # 系统会在今天20:25关机
shutdown –h +10 # 十分钟后关机
shutdown –r now # 系统立马重启
shutdown –r +10 # 系统十分钟后重启
reboot # 就是重启,等同于 shutdown –r now
halt # 关闭系统,等同于shutdown –h now 和 poweroff
三、Linux系统的目录结构
在Linux中,所有的目录都在根目录下,根目录为:/
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/srv:该目录存放一些服务启动之后需要提取的数据。
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
/tmp:这个目录是用来存放一些临时文件的。
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin: 系统用户使用的应用程序。
/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src: 内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
/www :存放服务器网站相关的资源,环境,网站的项目
四、Linux目录命令的相关操作
你可以使用 man [命令]
来查看各个命令的使用文档,如 :man cp
。
接下来就来看几个常见的处理目录的命令:
ls: 列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
cp: 复制文件或目录
rm: 移除文件或目录
mv: 移动文件与目录,或修改文件与目录的名称
ls: 列出目录
语法:ls [选项与参数] [目录]
选项与参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
将目录下的所有文件列出来(含属性与隐藏档):
[root@CentOS7-First ~]# ls -al
cd :切换目录
cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:cd [相对路径或绝对路径]
# 切换到用户目录下
[root@CentOS7-First ~]# cd home
pwd :显示目前所在的目录
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
语法:pwd [-P]
选项与参数:
-P :显示出确实的路径,而非使用连接(link) 路径。
# 单纯显示出目前的工作目录
[root@CentOS7-First ~]# pwd
/root
# 如果是链接,要显示真实地址,可以使用 -P参数
[root@CentOS7-First /]# cd bin
[root@CentOS7-First bin]# pwd -P
/usr/bin
mkdir:创建新目录
语法:mkdir [-mp] 目录名称
选项与参数:
-m :配置文件的权限。直接配置,不需要看默认权限 (umask) 的脸色
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
# 进入我们用户目录下
[root@CentOS7-First /]# cd /home
# 创建一个 test 文件夹
[root@CentOS7-First home]# mkdir test
# 创建多层级目录
[root@CentOS7-First home]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’:
No such file or directory # <== 没办法直接创建此目录
# 加了这个 -p 的选项,可以自行帮你创建多层目录!
[root@CentOS7-First home]# mkdir -p test1/test2/test3/test4
# 创建权限为 rwx--x--x 的目录。
[root@CentOS7-First home]# mkdir -m 711 test2
[root@CentOS7-First home]# ls -l
drwxr-xr-x 2 root root 4096 Apr 8 11:31 test
drwxr-xr-x 3 root root 4096 Apr 8 11:32 test1
drwx--x--x 2 root root 4096 Apr 8 11:33 test2
【注】这里注意区分mkdir和touch命令:
mkdir是创建新目录;
touch是创建新文件。
我们这里讲的命令都是对目录的操作,不是对文件的操作。
rmdir : 删除空的目录
语法:rmdir [-p] 目录名称
选项与参数:
-p :连同上一级『空的』目录也一起删除
# 看看有多少目录存在?
[root@CentOS7-First home]# ls -l
drwxr-xr-x 2 root root 4096 Apr 8 11:31 test
drwxr-xr-x 3 root root 4096 Apr 8 11:32 test1
drwx--x--x 2 root root 4096 Apr 8 11:33 test2
# 可直接删除掉,没问题
[root@CentOS7-First home]# rmdir test
# 因为尚有内容,所以无法删除!
[root@CentOS7-First home]# rmdir test1
rmdir: failed to remove ‘test1’: Directory not empty
# 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 依次删除。
[root@CentOS7-First home]# rmdir -p test1/test2/test3/test4
【注】这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录,后面会讲。
cp :复制文件或目录
语法:
cp [选项与参数] 来源档(source) 目标档(destination)
cp [options] source1 source2 source3 .... directory
选项与参数:
-a:相当于 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-r:递归持续复制,用於目录的复制行为;(常用)
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination 。
# 找一个有文件的目录,这里找到 root目录
[root@CentOS7-First home]# cd /root
[root@CentOS7-First ~]# ls
install.sh
[root@kuangshen ~]# cd /home
# 复制 root目录下的install.sh 到 home目录下
[root@CentOS7-First home]# cp /root/install.sh /home
[root@CentOS7-First home]# ls
install.sh
# 再次复制,加上-i参数,增加覆盖询问
[root@CentOS7-First home]# cp -i /root/install.sh /home
cp: overwrite ‘/home/install.sh’? y # n不覆盖,y为覆盖
rm :移除文件或目录
语法:rm [-选项与参数] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除!最常用在目录的删除了!这是非常危险的选项!!!
# 将刚刚在 cp 的实例中创建的 install.sh删除掉!
[root@CentOS7-First home]# rm -i install.sh
rm: remove regular file ‘install.sh’? y
# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!
# 尽量不要在服务器上使用 rm -rf /
#为什么不要使用这个,相信你肯定懂的。。。。
mv :移动文件与目录,或修改名称
语法:
mv [选项与参数] source destination
mv [选项与参数] source1 source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
# 复制一个文件到当前目录
[root@CentOS7-First home]# cp /root/install.sh /home
# 创建一个文件夹 test
[root@CentOS7-First home]# mkdir test
# 将复制过来的文件移动到我们创建的目录,并查看
[root@CentOS7-First home]# mv install.sh test
[root@CentOS7-First home]# ls
test
[root@CentOS7-First home]# cd test
[root@CentOS7-First test]# ls
install.sh
# 将文件夹重命名,然后再次查看!
[root@CentOS7-First test]# cd ..
[root@CentOS7-First home]# mv test mvtest
[root@CentOS7-First home]# ls
mvtest
五、基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll
或者ls –l
命令来显示一个文件的属性以及文件所属的用户和组,如:
以圈出来的一条记录为例:
Effie文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
:
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档 ( link file );
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。
其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)
。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图):
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中:
第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;
第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中,Effie文件是一个目录文件,属主和属组都为 root。
六、修改文件属性
1、chgrp:更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2、chown:更改文件属主和属组
更改文件属主也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3、chmod:更改文件9个属性
chmod [-R] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute (rwx) 权限。
七、文件查看命令
参考我写的这篇文章:Linux文件内容查看相关命令