在计算机上进行一系列操作,包括但你不限于:
按要求切换工作目录
Linux的cd切换目录,相当于我们在Windows中通过鼠标或者快捷键点开不同的目录
注意:在Linux系统当中, cd 命令算是比较常用的命令
cd是Change Directory的缩写,这是用来变换工作目录的命令
使用者权限:所有使用者都可使用。
语法如下:
cd [相对路径或绝对路径]
- 绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。 - 相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法啦!
1、使用相对路径定位目标
- 特征: 相对路径 输入路径时, 最前面不是以 “/” 开始的, 表示相对 当前目录 所在的位置
- 缺点: 参照工作目录 发生变化 相对路径也要发生变化
需求1: 当前工作目录是 /usr, 使用相对路径 切换到 /usr/tmp 目录下
需求2: 当前工作目录是 /root, 使用相对路径 切换到 /usr/tmp 目录下
注意:
cd ~ 表示回到根目录
2、使用绝对路径定位目标
- 特征: 绝对路径 在输入路径时, 最前面是以
/
开始的, 表示 从 根目录 开始的具体目录位置 - 优点: 定位准确, 不会因为 工作目录变化 而变化
需求1: 当前工作目录是 /usr, 使用绝对路径 切换到 /usr/tmp 目录下
需求2: 当前工作目录是 /root, 使用绝对路径 切换到 /usr/tmp 目录下
文件创建、删除以及创建文件链接
文件创建
touch
touch
命令常用于将每个文件的访问和修改时间更新为当前时间。
touch 1.txt
如果指定的文件名不存在,将会创建一个新的文件。
touch
不允许我们在创建文件的同时向其中输入一些文本。它默认创建一个 0KB 的空文件。
vi/vim
vim
是一个向上兼容 vi
的文本编辑器。它通常用来编辑所有种类的纯文本。在编辑程序时特别有用。
vim
中有很多功能可以用于编辑单个文件。
vim 1.txt
创建并编辑1.txt文件
文件删除
rm -f filename
删除filename文件
-f或–force 强制删除文件或目录。 不添加删除不存在的文件会报错
创建文件链接
创建不同类型的文件链接
susu@susu-2020:~/aaa$ touch 1.txt #创建一个测试文件
susu@susu-2020:~/aaa$ ln 1.txt 2.txt #创建1.txt的一个硬连接文件2.txt
susu@susu-2020:~/aaa$ ln -s 1.txt 3.txt #创建1.txt的一个符号连接文件file3
susu@susu-2020:~/aaa$ ls -li #-l参数以单列格式输出文件信息,-i参数输出文件的inode节点信息
总用量 0
526003 -rw-r--r-- 2 susu susu 0 11月 27 21:10 1.txt
526003 -rw-r--r-- 2 susu susu 0 11月 27 21:10 2.txt
533159 lrwxrwxrwx 1 susu susu 5 11月 27 21:10 3.txt -> 1.txt
从上面的结果中可以看出,硬连接文件file2与原文件file1的inode节点相同,均为28125,然而符号连接文件的inode节点不同。
分别对文件进行操作
susu@susu-2020:~/aaa$ cat >>1.txt <<EOF
> hello world
> EOF
susu@susu-2020:~/aaa$ cat 1.txt
hello world
susu@susu-2020:~/aaa$ cat 2.txt
hello world
susu@susu-2020:~/aaa$ cat 3.txt
hello world
susu@susu-2020:~/aaa$ rm 1.txt
susu@susu-2020:~/aaa$ cat 2.txt
hello world
susu@susu-2020:~/aaa$ cat 3.txt
cat: 3.txt: 没有那个文件或目录
通过上面的测试可以看出:当删除原始文件1.txt后,硬连接文件2.txt不受影响,但是符号连接文件3.txt无效。
创建目录、复制目录、删除目录
创建目录
引子:
Linux的mkdir命令相当于我们在Windows中通过鼠标或者快捷键新建文件夹
mkdir命令用于建立名称为 dirName 之子目录
使用权限:于目前目录有适当权限的所有使用者
语法
mkdir [-p] dirName
参数说明:
- -p 确保目录名称存在,不存在的就建一个
建立一个名为susuu的子目录
mkdir susuu
在工作目录下的 aaa目录中,建立一个名为 bbb的子目录。 若 aaa目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 aaa目录不存在,则产生错误。)
mkdir -p aaa/bbb
复制目录
cp命令主要用于复制文件或目录。
使用权限:于目前目录有适当权限的所有使用者
语法
cp [options] source dest
或
cp [options] source... directory
参数说明:
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
- -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
- -f:覆盖已经存在的目标文件而不给出提示。
- -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
- -r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
- -l:不复制文件,只是生成链接文件。
我们将当前目录"aaa/"下的所有目录以及文件复制到新目录"ccc"下,输入如下命令:
1、数据准备
创建aaa目录并且aaa下包含bbb目录
mkdir -p aaa/bbb
mkdir -p ccc
执行效果
aaa目录下有bbb
ccc下面没有目录和文件
2、执行复制
cp –r aaa/* ccc
我们将aaa下面的所有文件、目录复制到了目录c下面
总结:
用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。
如果不加参数"-r"或者"-R",只复制文件,而略过目录
删除目录
Linux的rmdir命令相当于我们在Windows中通过鼠标或者快捷键删除文件夹。
稍微有点不同的就是在Linux中删除子目录的时候,如果主目录下没有了目录以及文件,会连同主目录同时删除了(需要写Linux带有P的参数)
rmdir命令删除空的目录
使用权限:于目前目录有适当权限的所有使用者。
语法
rmdir [-p] dirName
参数:
- -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
将工作目录下,名为 aaa的子目录删除 :
rmdir aaa
在工作目录下的 aaa目录中,删除名为 bbb的子目录。若 bbb删除后,aaa目录成为空目录,则 aaa同时也会被删除
rmdir -p aaa/bbb
总结:
rmdir -p aaa/bbb也就是说
在删除bbb目录完成后,发现aaa目录也是空目录了,在删除完bbb后aaa也同时被删除了。
rm -rf dirName
将会删除dirName目录以及其下所有文件、文件夹
需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的
将匹配的文件复制到指定目录
mkdir -p ../ggg && find . -name "*.txt" -type f -exec cp {} ../ggg \;
find aaa/bbb -name *.txt -type f -exec cp {} ccc \;
查找当前目录下的所有txt并将所有结果复制到 ggg目录下
查找aaa/bbb目录下的所有txt文件复制到ccc下
获取管理员权限
变更帐号为 root 并在执行 ls 指令后退出返回原使用者
su -c ls root
切换到root
su root
这样的话,就进入到了root用户下。
创建新用户
使用者权限:管理员用户
useradd 选项 用户名
参数说明:
-
选项:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-
用户名:
指定新账号的用户名(后续我们可以使用这个用户名进行系统登录)。
useradd susu1
使用useradd命令创建了一个用户susu1
useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。
切换用户
su susu2
切换到用户susu2
改变目录及文件权限
Linux 文件基本属性
在Wndows系统中,我们可以选中一个文件,右键属性,可以查看到这个文件的文件类型(基本信息),以及文件的权限信息,在Linux中,它是通过不同字符的排序顺序来表示文件的类型以及权限所属信息的。
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
ls -l
实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图)。
从左至右用0-9这些数字来表示。
例如
0123456789
drwxr-xr-x
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-“字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用”-"字符表示,则没有执行权限。
改变文件的群组属性
chgrp更改属组
实际开发中我们经常会创建新建目录和文件,一般情况下,通过命令进行新建,
在创建完成后,使用不同的用户访问,可能就会出现报错,无法访问等等问题。
然后经过一番这查找,发现该有的文件都在,大小写也没问题,路径也没问题
其实并不是这些问题。而是权限问题导致我们无法访问!是因为一个文件默认隶属于一个属组,而使用其他用户访问这个文件肯定无法访问(因为访问用户所属的组和文件所在的不是同一个组)
那么怎么可以正常访问呢?其实就是通过更改用户组(用户组、文件组)来解决这些问题
chgrp命令用于变更文件或目录的所属群组。
文件或目录权限的的拥有者由所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可
为了方便初学者记忆,可以将 chgrp 理解为是 “change group” 的缩写
语法如下
chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
改变文件的群组属性
通过root用户进入
aaa文件的属主和属组都属于susu
我们现在通过chgrp命令将文件aaa的属组更改成root(其他也可以)
chgrp -v root aaa
通过下面的命令查询文件aaa的属组是否发生了变化,执行
ls -l
由结果我们发现,文件aaa的属组由susu变成了root
这样的话,文件的属组就发生了变化。
chmod权限命令
1) 数字权限
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组(owner/group/others就是所说的三个一组 )的,我们也可以使用数字来代表各个权限,各权限的分数对照表如下
各权限的数字对照表:[r]:4;[w]:2;[x]:1;[-]:0
权限 | 英文 | 缩写 | 数字序号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | execute | x | 1 |
无权限 | - | 0 |
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= — = 0+0+0 = 0
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦,变更权限的指令chmod的语法是这样的
chmod [-R] xyz 文件或目录
选项与参数:
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
上面的 可以表示如下
chmod -R 770 档案或目录
进入susu用户创建文件1.txt
touch 1.txt
然后切换到root
比如,我们如果要将1.txt这个文件所有的权限都设定启用
那么命令如下:
chmod -R 777 1.txt
as.txt的属主权限、属组权限、其他权限都发生了改变
由之前的【-rw-rw-r–】变成【-rwxrwxrwx】
根据前面的换算我们已经知道如何将一个文件的属主、属组、其他权限换算成数字了,换算成数字后,我们只需要通过chmod命令即可更改文件的权限
2) 符号权限
还有一个改变权限的方法,就是 符号权限,我们先回顾下之前提到的9个权限
- (1)user 属主权限
- (2)group 属组权限
- (3)others 其他权限
那么我们就可以使用 u, g, o 来代表三种身份的权限!
此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看
用户 | 符号 | |||
---|---|---|---|---|
u(属主权限) | +(加入) | r | ||
chmod | g(属组权限) | -(除去) | w | |
o(其他权限) | =(设定) | x | ||
a(所有) |
如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
如
将1.txt的权限设置为**-rwxr-xr–**
执行
chmod u=rwx,g=rx,o=r 1.txt
as.txt的权限变成了-rwxr-xr–
假如我们要将权限去掉而不改变其他已存在的权限呢?举个例子,比如我要拿掉全部人的可读权限,则
chmod a-r 1.txt
改变或增加用户组
1) 增加用户组
新增一个用户组(组名可见名知意,符合规范即可),然后将用户添加到组中
使用者权限:管理员用户
groupadd 选项 用户组
使用的选项有:
- -g GID 指定新用户组的组标识号(GID)。
- -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
新增用户组susu2020
groupadd susu2020
上面的命令向系统中增加了一个新组susu2020,新组的组标识号是在当前已有的最大组标识号的基础上加1
2) 修改用户组
使用者权限:管理员用户
groupmod 选项 用户组
常用的选项有:
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n新用户组 将用户组的名字改为新名字
groupmod -n susu2021 susu2020
3) 查询用户所属组
在查询用户所属的用户组前,我们先增加一个用户susu1
useradd susu1
要查询一个用户属于哪个用户组,使用groups命令,其格式如下
groups 用户名
查询用户susu1属于某个用户组,执行groups命令
groups susu1
执行结果 susu1用户属于用户组susu1(用户组默认与用户名一样)
4) 删除用户组
使用者权限:管理员用户
要删除一个已有的用户组,使用groupdel命令,其格式如下
groupdel 用户组
删除susu2020用户组
groupdel susu2020
删除成功
5) 将用户添加到组
1、创建一个新的组,并添加组ID(需要切换到root用户)
groupadd -g 8888 susu2020
2、创建3个用户(需要切换到root用户)
useradd susu1
useradd susu2
useradd susu3
3、将上面三个用户添加到组itbj2020group
通过passwd命令将三个用户添加到组
什么是gpasswd:
gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。
语法
gpasswd [可选项] 组名
将上面的三个用户使用gpasswd添加到组(需要切换到root用户)
gpasswd -a susu1 susu2020
gpasswd -a susu2 susu2020
gpasswd -a susu3 susu2020
查看用户组下所有用户(所有用户)
注意
此处的grep命令我们将在文件管理章节详细讲解,这里先使用它查看下效果
grep 'susu2020' /etc/group
由结果可知:三个用户全部都加入到了susu2020用户组。