使用了蓝桥云课的云服务环境
Linux基础
操作系统是管理软硬件的软件。
操作系统通过驱使驱动来管理硬件。
操作系统为用户提供安全稳定高效的运行环境。
一.常见指令
\
#创建一个名为 file 的文件,touch是一个命令
$touch file
#进入一个目录。cd是一个命令
$ cd /etc/
#查看当前所在目录
$ pwd
按键 | 作用 |
---|---|
Ctrl+d | 键盘输入结束或退出终端 |
Ctrl+s | 暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z | 将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a | 将光标移至输入行头,相当于Home 键 |
Ctrl+e | 将光标移至输入行末,相当于End 键 |
Ctrl+k | 删除从光标所在位置到行末 |
Alt+Backspace | 向前删除一个单词 |
Shift+PgUp | 将终端显示向上滚动 |
Shift+PgDn | 将终端显示向下滚动 |
通配符
(*)(?)用来对字符串进行模糊匹配(比如文件名、参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。
例如使用touch命令创建两个文件:
touch asd.txt func.txt
可以给文件随意命名,假如过了很长时间,你已经忘了这两个文件的文件名,现在你想在一大堆文件中找到这两个文件,就可以使用通配符
ls *.txt
在创建文件的时候,如果需要一次性创建多个文件:
touch love_{1..10}_shiyanlou.txt
Linux目录结构以及文件基本操作
Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。
FHS标准:FHS 定义了两层规范,第一层是, /
下面的各个目录应该要放什么文件数据,例如 /etc
应该放置设置文件,/bin
与 /sbin
则应该放置可执行文件等等。
第二层则是针对 /usr
及 /var
这两个目录的子目录来定义。例如 /var/log
放置系统日志文件,/usr/share
放置共享数据等等。
1.ls指令
ls指令: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录和文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a 列出目录下的所有文件,包括以.开头的隐含文件。
-d 将目录像文件一样显示,而不是显示其下的文件。如:ls -d+指定目录。
-i 输出文件的i节点的索引信息。如:ls -i+指定文件。
-l 使用较长格式列出文件。
-dl 查看某一个目录的完整属性,而不是显示目录里面的文件属性。
-AsSh 其中小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,请使用“man”命令查询。
2.cd指令
进入上一级目录:
cd ..
进入home目录:
cd ~
cd /home/<你的用户名>
3.文件指令
新建空白文件
:使用 touch
命令创建空白文件,关于 touch
命令,其主要作用是来更改已有文件的时间戳的(比如,最近访问时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个指定文件名的空白文件(不会覆盖已有同名文件),当然你也可以同时指定该文件的时间戳。
touch test
新建目录
:使用 mkdir
(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。
创建名为“ mydir ”的空目录:
mkdir mydir
使用 -p
参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用):
mkdir -p father/son/grandson
复制文件
使用 cp
(copy)命令复制一个文件到指定目录。
将之前创建的“ test ”文件复制到“ /father/son/grandson ”目录中:
cp test father/son/grandson
复制目录
要成功复制目录需要加上 -r
或者 -R
参数,表示递归复制,就是说有点“株连九族”的意思:
cd /home/shiyanlou
mkdir family
cp -r father family
删除文件
使用 rm
命令删除一个文件:
rm test
-f 有时候你会遇到想要删除一些为只读权限的文件,会强制删除文件:
rm -f test
删除目录
跟复制目录一样,要删除一个目录,也需要加上 -r
或 -R
参数:
rm -r family
移动文件和重命名文件
使用 mv
(move or rename files)命令移动文件(剪切)。将文件“ file1 ”移动到 Documents
目录:
mkdir Documents
touch file1
mv file1 Documents
重命名文件:将文件“ file1 ”重命名为“ myfile ”:
mv file1 myfile
批量重命名:
要实现批量重命名,mv
命令就有点力不从心了,我们可以使用一个看起来更专业的命令 rename
来实现。不过它要用 perl 正则表达式来作为参数。
查看文件
使用 cat
,tac
和 nl
命令查看文件
前两个命令都是用来打印文件内容到标准输出(终端),其中 cat
为正序显示,tac
为倒序显示。
cat -n passwd
#-n能够显示行数
使用 more
和 less
命令分页查看文件
使用 more
命令打开 passwd
文件:
more passwd
打开后默认只显示一屏内容,终端底部显示当前阅读的进度。可以使用 Enter
键向下滚动一行,使用 Space
键向下滚动一屏,按下 h
显示帮助,q
退出。
使用 head
和 tail
命令查看文件
这两个命令,那些性子比较急的人应该会喜欢,因为它们一个是只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行。还是拿 passwd 文件举例,比如当我们想要查看最近新增加的用户,那么我们可以查看这个 /etc/passwd
文件,不过我们前面也看到了,这个文件里面一大堆乱糟糟的东西,看起来实在费神啊。因为系统新增加一个用户,会将用户的信息添加到 passwd 文件的最后,那么这时候我们就可以使用 tail
命令了:
关于 tail
命令,不得不提的还有它一个很牛的参数 -f
,这个参数可以实现不停地读取某个文件的内容并显示。这可以让我们动态查看日志,达到实时监视的目的。
查看文件类型
在 Linux 中文件的类型不是根据文件后缀来判断的,我们通常使用 file
命令查看文件的类型。
sudo adduser lilei
编辑文件
使用vim编译器
二. Linux 用户管理
Linux 是一个可以实现多用户登录的操作系统,比如“李雷”和“韩梅梅”都可以同时登录同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看、修改彼此的文件。
打开终端,输入命令:
who am i
或者
who mom likes
参数 | 说明 |
---|---|
-a | 打印能打印的全部 |
-d | 打印死掉的进程 |
-m | 同am i ,mom likes |
-q | 打印当前登录用户数及用户名 |
-u | 打印当前登录用户登录信息 |
-r | 打印运行等级 |
输出的第一列表示打开当前伪终端的用户的用户名(要查看当前登录用户的用户名,去掉空格直接使用 whoami
即可),第二列的 pts/0
中 pts
表示伪终端,所谓伪是相对于 /dev/tty
设备而言的
创建用户
在 Linux 系统里, root
账户拥有整个系统至高无上的权利,比如 新建/添加 用户。
root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,用 Windows 的方法理解也就是将自己的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。
我们一般登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo
这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo
用户组
su,su- 与 sudo:
su <user>可以切换到用户user,执行时需要输入目标用户的密码
sudo <cmd>可以以特权级别运行cmd命令
su- <user> 命令也是切换用户
取消登录和注销使用ctrl + d或者exit
新建一个用户:
sudo adduser lilei
用户组
在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,当然一个用户是可以属于多个用户组的,正如你既属于家庭,又属于学校或公司。
在 Linux 里面如何知道自己属于哪些用户组:
方法一:使用 groups 命令
groups shiyanlou
方法二:查看 /etc/group
文件
cat /etc/group | sort
将其他用户加入sudo用户组
使用 usermod
命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。
sudo usermod -G sudo lilei
删除用户
sudo deluser lilei --remove-home
Linux文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
使用较长格式列出文件:
ls -l
/dev
目录下有各种设备文件,大都跟具体的硬件设备相关。 socket
:网络套接字。pipe管道。软链接文件
:链接文件是分为两种的,另一种当然是“硬链接”
文件权限
读权限,表示可以使用
cat <file name>
之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的exe
后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件**,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
-
链接数
链接到该文件所在的 inode 结点的文件名数目(关于这个概念涉及到 Linux 文件系统的相关概念知识,不在本课程的讨论范围,感兴趣的用户可以自己去了解)。
-
文件大小
以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上
-lh
参数来更直观的查看文件的大小。
变更文件所有者
sudo chown shiyanlou file
adduser
和 useradd
的区别是什么?
useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
修改文件权限
方式一:二进制数字表示
chmod 600 iphone6
-
方式二:加减赋值操作
chmod go-rw iphone6
g
、o
还有 u
分别表示 group、others 和 user,+
和 -
分别表示增加和去掉相应的权限。