运行级别就是操作系统当前正在运行的功能级别,级别是从0到6。Centos7系统之前的版本是通过/etc/inittab文件来定义系统,而CentOS7用的是/lib/systemd/system/runlevel*。
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用的运行级别是3和5,默认是5,通过修改文件可以更改默认运行级别。
在终端也可以使用命令来修改当前的运行级别:init [0123456]
,数字代表不同的运行级别。
pwd
显示当前工作目录的绝对路径。
ls [选项] [目录|文件]
显示目录或文件的信息,默认是当前目录。
常用选项:
-a :显示当前目录所有的文件和目录,包括隐藏的。
-l :以列表的方式显示信息,可以显示文件权限信息和创建时间等
cd [参数]
切换工作目录这里的参数通常是传入目的目录的绝对路径或者相对路径,也有一些简便写法,比如:cd ~
表示切换到当前用户的家目录,cd ..
表示切换到上一级目录。
mkdir [选项] 目录
创建目录常用选项:
-p 递归创建多级目录。
这里要创建的目录同样可以使用绝对路径或者相对路径,使用./
代表当前目录,../
代表上一级目录。
touch 文件名
创建空文件使用文本编辑器也可以直接创建新文件。
rm 文件
删除文件rm -f 文件
强制删除不提示,-f表示forcerm 目录
删除目录rm -r 目录
递归删除目录rm -rf 目录
递归删除目录,不提示cp [选项] source dest
拷贝源文件到其他目录cp -r source dest
递归复制整个文件夹\cp -r source dest
强制覆盖,不提示mv oldDir newDir
移动文件或者目录mv oldFileName newFileName
同一目录下移动相当于重命名cat [选项] 文件
以只读的方式打开文件cat -b 文件
查看文件并显示行号cat只能查看文件而不能修改文件,一般可以加上管道命令 | more ,比如car -b a.txt | more
。| 是管道符,管道符左边命令的输出就会作为管道符右边命令的输入。
more 文件
分页浏览文件less 文件
分屏显示,分页浏览文件(less比more更强大)v
指令可以进入vim进行编辑,:wq退出后返回到less模式,再按q退出。>
表示输出重定向,会将原来的内容覆盖,>>
表示在文末追加内容。
ls -l > a.txt
显示出的列表信息输入到a.txt中,会覆盖掉原内容,a.txt不存在就创建。ls -al >> a.txt
显示出的信息追加到a.txt中。cat a.txt > /files/b.txt
cal > /files/myCal
echo表示输出内容到控制台。语法:echo [选项] [要输出的内容]
echo
指令输出当前的环境变量:echo $PATH
默认情况下 head 和 tail 分别用来显示文件的前10行和后10行内容:head file
,tail file
。
行数也可以实用 -n 指定:head -n 3 file
查看文件前3行,tail -n 3 file
查看文件后3行
tail的另外一个功能可以用来监视一个文件,追踪它的更新,在工作中很实用。
软链接又叫符号链接,类似于windows中的快捷方式(实际更强大,几乎可以链接所有文件),主要存放了链接其他文件的路径。软链接会在选定的位置生成一个文件的镜像,但是并不占用磁盘空间。
ln -s [路径] [软链接名]
。多用于频繁访问的复杂路径。ln -s /home linkToHome
rm -rf linkToHome
和它的名字一样,这个命令用来查看已经执行过的命令。
history
history 10
[dave@localhost dave]$ history 10
118 ls
119 help ln
120 info ln
121 ln -s /home linkToHome
122 cd linkToHome/
123 pwd
124 cd dave
125 ll
126 history 5
127 history 10
!123
history -c
find [搜索范围] [选项]
find 指令将从我们指定的目录向下递归地遍历所有子目录,将满足条件的文件或目录显示在终端。
常用的选项有:
选项 | 功能 |
---|---|
-name<文件名> | 按照文件名查找模式来查找文件 |
-user<用户名> | 查找该用户的所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
示例:根据名称查找/home目录下的hello.txt文件
find /home -name hello.txt
示例:查找/opt目录下bob用户的所有文件
find /opt -user bob
示例:查找整个linux系统下>20M的文件(提示:+n 大于n; -n 小于n; n 等于n)
find / -size +20M
find / -size +20480k
注意k不能大写。
示例:查找整个linux系统下大于10k的所有txt文件(find支持统配符查找)
find / -size +10k -name *.txt
locate指令可以快速定位文件路径。locate指令利用实现建立的系统中所有文件名称及路径的locate数据库实现快速定位文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须顶起更新locate时刻。
语法:locate file
注意:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb
指令创建locate数据库(需要root权限)。
locate a.txt
grep 即过滤查找,管道符 | 表示将前一个命令的处理结果传递到后面的命令处理。
grep [选项] 查找内容 源文件
常用选项有:-n
显示匹配行及行号,-i
忽略字母大小写。
示例:查找a.txt中“hello”所在行,并且显示行号。
[Dave@localhost ~]$ grep -n hello a.txt
16:hello
22:hello
配合管道符使用:
[Dave@localhost ~]$ cat a.txt | grep -n hello
16:hello
22:hello
gzip file
用于压缩文件,gunzip xxx.xx.gz
用于解压文件。它们的特殊之处在于不会保留原文件。
示例:将a.txt使用gzip和gunzip先压缩后解压,观察目录中文件的变化。
这一对经常在项目打包发布时使用。
zip [选项] xxx.zip file
压缩文件或目录,需要指定压缩后的文件名和类型xxx.zip
常用的选项有-r
递归压缩,即压缩整个目录
unzip [选项] xxx.zip
解压zip文件
常用的选项有-d
指定解压后的存放目录
zip和unzip在操作之后都不会将原文件删除。
示例:创建dir0/dir1/dir2并用zip打包,之后再使用unzip解压放到桌面。
mkdir -p dir0/dir1/dir2
zip -r DIR.zip dir0/
unzip -d Desktop/ DIR.zip
tar 指令是打包命令,打包并压缩后的文件格式是 .tar.gz (.tar代表包,.gz代表压缩文件)。
首先要明白打包和压缩不是一个概念,打包是指将多个文件和目录合并在一起,而压缩是指通过算法将文件体积的变得更小。
语法:tar [选项] xxx.tar.gz 打包的内容
常用选项 | 解释 |
---|---|
-c | 建立压缩档案 |
-v | 显示详细信息 |
-f | 指定归档文件名称 |
-z | 支持gzip解压文件 |
-x | 解包.tar文件 |
这几个命令通常组合起来使用(f必须放在最后,直接跟档案名),比如,打包压缩文件时-zcvf
;解压时-zxvf
,可以通过-C
指定解档到某个目录(前提是这个目录必须存在)。
示例:压缩多个文件a.txt和b.txt到 c.tar.gz
tar -zcvf c.tar.gz a.txt b.txt
示例:压缩整个/home目录到 myhome.tar.gz
tar -zcvf myhome.tar.gz /home/
示例:将myhome.tar.gz解压到/opt/目录下
tar -zxvf myhome.tar.gz -C /opt/
注意,-c 和 -x 不可能一起使用,一个是打包,一个是解包。
对于每一个linux文件来说,都有一个特定的所有者(一般是创建者),所有者拥有文件的所有权。
在linux系统中,用户是按组分类的,一个用户属于一个或多个组。所以,对于文件来说,除了所有者以外的用户可以分为文件所有者的同组用户和其他用户。
为了文件的安全性,linux针对文件所有者 user、文件所有者同组用户 group和其他用户 others来规定了不同的文件访问权限。
默认创建一个新用户时,会自动创建一个与用户同名的组,而该用户创建的文件的所有者就是自己,而所属组即这个同名组(是可以更改的)。
对于root用户来说,这些权限没有任何作用。
ls -l
查看文件详细信息,包括所有者和所在组,创建时间,权限等。
ls -ahl
a 显示隐藏的文件 l 显示详细列表模式 h 大小显示便于查看
示例:创建一个用户tom属于group0组,tom创建一个文件,使用ls -ahl
查看
[root@localhost ~]# useradd -G group0,group1 tom #创建tom用户,并把他归属到group0和group1组
[root@localhost ~]# groups tom #查看tom的属组信息
tom : tom group0 group1
[root@localhost ~]# su - tom #切换到tom
[tom@localhost ~]$ touch a.txt #新建文件
[tom@localhost ~]$ ls -ahl #查看文件详细信息
total 12K
drwx------. 5 tom tom 120 Sep 2 11:04 .
drwxr-xr-x. 5 root root 41 Sep 2 11:01 ..
-rw-rw-r--. 1 tom tom 0 Sep 2 11:04 a.txt #tom tom 就表示这个文件的所有者和所属组
-rw-r--r--. 1 tom tom 18 Oct 31 2018 .bash_logout
-rw-r--r--. 1 tom tom 193 Oct 31 2018 .bash_profile
-rw-r--r--. 1 tom tom 231 Oct 31 2018 .bashrc
drwxrwxr-x. 3 tom tom 18 Sep 2 11:04 .cache
drwxrwxr-x. 3 tom tom 18 Sep 2 11:04 .config
drwxr-xr-x. 4 tom tom 39 Jun 3 17:04 .mozilla
chown 用户名 文件名
记忆:change owner示例:root用户新建一个文件,并将所有者改为tom
touch tom.txt #创建文件
chown tom tom.txt #更改所有者为tom
chown newowner:newgroup file
改变用户的所有者和所有组示例:将a文件的所有者改为tom,所属组改为police,只能使用一个命令
chown tom:police a
-R
如果是目录 则使其下所有子文件或目录递归生效示例:请将 /home/kkk 目录下所有的文件和目录的所有者都修改成tom
chown -R tom /home/kkk `
chgrp 组名 文件名
记忆:change group示例:root用户创建一个文件,并将文件所在组改为Group001
chgrp Group001 tom.txt
以上面新建的a.txt文件为例:
-rw-rw-r--. 1 tom tom 0 Sep 2 11:04 a.txt
左起第一部分就代表a.txt的文件权限,即-rw-rw-r--
,一共10个字符,除过第一个字符,其余三个一组,分别代表user权限,group权限,others权限。
所有的文件权限都由0-9这10个字符表示:
0 表示文件类型:-
文件,d
目录,l
链接文档,b
和c
与设备有关。
1.2.3. 表示所有者对该文件的权限——user
4.5.6. 表示所属组对该文件的权限——group
7.8.9. 表示其他用户对该文件的权限——others
如果首个符号是-
,表示这是一个文件。那么针对文件就会有[ rwx ]
权限,分别对应可读
,可写
,可执行
。 如果没有某项权限,就用 -
表示。对于文件来说,可写表示可以修改,并不一定代表可以删除,如果要删除这个文件,必须要拥有对文件所在目录的可写权限。
如果首个符号是d
,表示这是一个目录。针对目录同样有 [ rwx ]
权限,可读即表示可以查看目录内容,可写表示可以修改目录中的内容,即创建文件,删除文件,重命名文件,可执行表示可以进入该目录。
rwx 权限也可以用数字表示,即4+2+1 = 7。
那么针对上面的文件分析一下:-rw-rw-r--. 1 tom tom 0 Sep 2 11:04 a.txt
-
表示文件类型,说明 a.txt 是文件而不是目录或其他。rw-
表示文件所有者tom拥有对文件的可写,可读权限,a.txt不是一个可执行文件,就不存在可执行权限,用-
表示。rw-
表示文件所在组tom拥有对文件的可写,可读权限。r--
表示其他用户只拥有可读全新,不能修改。1
表示文件数或者子目录数tom tom
表示文件的所有者和所在组0
表示文件大小Sep 2 11:04
表示最近一次修改时间a.txt
表示文件名通过chmod指令,可以修改文件的权限。
使用 u 表示 user;g表示group;o表示others;a表示all (所有人)
示例:
chmod u=rwx,g=rx,o=rx abc.txt
chmod u-x,g+w abc.txt
chmod a+r abc.txt
我们已经知道权限可以用数字表示:r=4 w=2 x=1,那么他们的组合也可以: rw=6 rx=5 wx=3 rwx=7。
示例:
将 /home/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:
chmod 755 /home/abc.txt
警察和土匪游戏
两个组:police , bandit
四个用户:jack, jerry: 警察,xh, xq: 土匪
(1) 创建组
(2) 创建用户
(3) jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
(4) jack 修改该文件,让其它组人可以读, 本组人可以读写
(5) xh 投靠 警察,看看是否可以读写
神仙与妖怪
建立两个组(神仙,妖怪)
建立四个用户(唐僧,悟空,八戒,沙僧)
设置密码
把悟空,八戒放入妖怪 唐僧 沙僧 在神仙
用悟空建立一个文件 (monkey.java 该文件要输出 i am monkey)
给八戒一个可以r w 的权限
八戒修改monkey.java 加入一句话( i am pig)
唐僧 沙僧 对该文件没有权限
把 沙僧 放入妖怪组
让沙僧 修改 该文件 monkey, 加入一句话 (“我是沙僧,我是妖怪!”);
#root:
groupadd god
groupadd monster
useradd -g monster wukong
useradd -g monster bajie
useradd -g god tangseng
useradd -g god shaseng
passwd wukong
passwd bajie
passwd tangseng
passwd shaseng
su - wukong
#wukong:
vim monkey.java
chmod 760 monkey.java
su - bajie
#bajie:
cd /home/wukong
vim monkey.java
su -
#root:
useradd -g monster shaseng
su - shaseng
#shasenn:
cd /home/wukong
vim monkey.java
exit
useradd mycentos
,pwd mycentos
su - mycentos
,mkdir -p test/t11/t1
cd /test/t11/t1
,touch aa
,vi aa
rm -rf test/
userdel -r mycentos
init 5
shutdown
,reboot