#实验楼“Linux基础入门”课程笔记
课程地址:https://www.lanqiao.cn/courses/1
第一章:用户及文件权限管理
一、Linux用户管理
1.1 查看用户
打开终端,输入命令:
who am i
#或者
who mom likes
#或者
whoami
输出的第一列表示打开当前伪终端的用户的用户名。
第二列的 pts/0 中 pts 表示伪终端,伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端,pts/0 后面那个数字就表示打开的伪终端序号,可以尝试再打开一个终端,然后在里面输入 who am i,第二列就变成 pts/1 了。
第三列则表示当前伪终端的启动时间。
1.2 创建用户
创建用户需要root权限,要用到sudo
命令。
su,su- 与 sudo
su 可以切换到用户 user,执行时需要输入目标用户的密码。
sudo 可以以特权级别运行 cmd 命令,需要当前 用户属于 sudo 组,且需要输入当前用户的密码。su - 命令也是切换用户,但是同时用户的环境变量和工作目录也会跟着改变成目标用户所对应的。
1、创建一个名叫lilei
的用户:
sudo adduser lilei
这个命令不但可以添加用户到系统,同时也会默认为新用户在 /home 目录下创建一个工作目录:
ls /home
2、创建好一个用户,使用如下命令切换登录用户:
su -l lilei
3、退出当前用户,可以使用exit
命令或者使用快捷键Ctrl+D
1.3 用户组
1.3.1 查看用户组
方法1:groups命令
groups shiyanlou
其中冒号之前表示用户,后面表示该用户所属的用户组。每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组。
默认情况下在 sudo 用户组里的可以使用 sudo 命令获得 root 权限。
方法2:查看/etc/group
文件
cat /etc/group | sort
cat
命令用于读取指定文件的内容并打印到终端输出,后面会详细讲它的使用。 | sort
表示将读取的文本进行一个字典排序再输出,然后你将看到如下一堆输出,你可以在最下面看到 shiyanlou 的用户组信息:
可以使用 grep
命令过滤掉一些你不想看到的结果:
cat /etc/group | grep -E "shiyanlou"
/etc/group
文件格式说明
/etc/group 的内容包括用户组(Group)、用户组口令、GID(组 ID) 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
上面的 password 字段为一个 x,表示密码不可见。
1.3.2 将其它用户加入 sudo 用户组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限。
使用 usermod
命令添加用户组,使用该命令必需有 root 权限。可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。
这里我用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组:
groups lilei
sudo usermod -G sudo lilei
groups lilei
1.3.3 删除用户和用户组
1、删除用户
sudo deluser lilei --remove-home
--remove-home
参数在删除用户时候会一并将该用户的工作目录一并删除。如果不使用那么系统会自动在 /home 目录为该用户保留工作目录。
2、删除用户组
使用 groupdel
命令,倘若该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组。
二、Linux文件权限
在 Unix/Linux 中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
2.1、查看文件权限
ls
命令用来列出并显示当前目录下的文件。
使用较长格式列出文件:ls -l
文件列表所包含的内容如下:
关于 ls
命令的一些其它常用的用法:
- 显示除了
.
(当前目录)和..
(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以.
开头的文件为隐藏文件)。
ls -a
当然,你可以同时使用 -a
和 -l
参数:
ls -al
查看某一个目录的完整属性,而不是显示目录里面的文件属性:
ls -dl <目录名>
- 显示所有文件大小,并以普通人类能看懂的方式呈现:
ls -asSh
其中小 s 为显示文件大小,大 S 为按文件大小排序。
2.2、变更文件所有者
切换到lilei
用户,然后在 /home/lilei 目录新建一个文件,命名为 iphone11
,可见文件所有者是 lilei
现在切换回到 shiyanlou 用户,使用以下命令变更文件所有者为 shiyanlou。
#需要切换到 shiyanlou 用户执行以下操作
cd /home/lilei
ls iphone11
sudo chown shiyanlou iphone11
现在查看,发现文件所有者成功修改为 shiyanlou。
2.3、修改文件权限
- 方法1:二进制数字表示
每个文件有三组固定的权限,分别对应拥有者,所属用户组,其他用户,这个顺序是固定的。
文件的读写执行对应字母rwx
,以二进制表示就是111
,用十进制表示就是7
。
如果我要将文件 iphone11 的权限改为只有我自己可以用那么就可以用这个方法更改它的权限。
chmod 600 iphone11
ls -alh iphone11
切换到 lilei 用户,尝试写入和读取操作,可以看到 lilei 用户已经不能读写这个 iphone11 文件了:
- 方法2:加减赋值操作
要完成上述实验相同的效果,可以:
chmod go-rw iphone11
g
、o
还有 u
分别表示 group(用户组)、others(其他用户) 和 user(用户),+
和 -
分别表示增加和去掉相应的权限。
第二章:Linux目录结构及文件基本操作
一、Linux目录结构
1、FHS标准
Linux大部分目录结构是规定好了的(FHS 标准),FHS 定义了两层规范:
第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
FHS_3.0标准文档
FHS将目录定义为四种交互作用的形态:
2、目录路径
如果你想进入某个具体的目录或者想获得某个目录的文件(目录本身也是文件)那就得用路径来找到了。
使用 cd
命令可以切换目录,使用 pwd 命令可以获取当前所在路径(绝对路径)。
.
表示当前目录,..
表示上一级目录,-
表示上一次所在目录,~
通常表示当前用户的 home 目录。
二、文件基本操作
1、新建
1.1 新建空白文件
touch
命令,创建名为test的空白文件。
因为在其它目录没有权限,所以需要先 cd ~
切换回 shiyanlou 用户的 Home 目录:
cd ~
touch test
若当前目录存在一个 test 文件夹,则 touch
命令,则会更改该文件夹的时间戳而不是新建文件。
1.2新建目录
使用 mkdir
(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。
创建名为“ mydir ”的空目录:
mkdir mydir
使用 -p
参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用):
mkdir -p father/son/grandson
若当前目录已经创建了一个 test 文件,再使用 mkdir test 新建同名的文件夹,系统会报错文件已存在。这符合 Linux 一切皆文件的理念。
2、复制
2.1复制文件
使用 cp 命令(copy)复制一个文件到指定目录。
将之前创建的 test 文件复制到 /home/shiyanlou/father/son/grandson 目录中:
cp test father/son/grandson
2.2复制目录
复制目录需要加上 -r 或者 -R 参数,
cd /home/shiyanlou
mkdir family
cp -r father family
3、删除
3.1 删除文件
使用 rm
(remove files or directories)命令删除一个文件:
rm test
有时候你会遇到想要删除一些为只读权限的文件,直接使用 rm
删除会显示一个提示,如下:
你如果想忽略这提示,直接删除文件,可以使用 -f
参数强制删除:
rm -f test
3.2 删除目录
和复制目录一样,删除一个目录也需要加上-r
或-R
参数:
rm -r family
遇到权限不足删除不了的目录也可以和删除文件一样加上
-f
参数:
rm -rf family
4、移动文件与文件重命名
4.1移动文件
mv
(move or rename files)命令移动文件(剪切)。
命令格式:mv 源目录文件 目的目录
例如将文件“file1”移动到Documents
目录:
mkdir Documents
touch file1
mv file1 Documents
4.2 重命名文件
mv
命令重命名文件。
命令格式为:mv 旧的文件名 新的文件名
例如将文件“file1”重命名为“myfile”:
mv file1 myfile
批量重命名:
rename
命令可以批量重命名,
cd /home/shiyanlou/
# 使用通配符批量创建 5 个文件:
touch file{1..5}.txt
# 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
rename 's/\.txt/\.c/' *.txt
# 批量将这 5 个文件,文件名和后缀改为大写:
rename 'y/a-z/A-Z/' *.c
5、查看文件
cat
,tac
和 nl
命令查看文件:
前两个命令都是用来打印文件内容到标准输出(终端),其中 cat
为正序显示,tac
为倒序显示。
more
和 less
命令分页查看文件:
more 和 less 就是天生用来"阅读"一个文件的内容的。
more 命令只能向一个方向滚动,打开后默认只显示一屏内容,终端底部显示当前阅读的进度。可以使用 Enter 键向下滚动一行,使用 Space 键向下滚动一屏,按下 h 显示帮助,q 退出。
head
和 tail
命令查看文件:
这两个命令只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行。
6、查看文件类型
file
命令查看文件的类型:
file /bin/ls
说明这是一个可执行文件,运行在 64 位平台,并使用了动态链接文件(共享库)。
值得注意的是, Linux 中文件的类型不是根据文件后缀来判断的。当你在文件里输入内容后才会显示文件类型。
编辑文件
在 Linux 下面编辑文件通常我们会直接使用专门的命令行编辑器比如(emacs,vim,nano)。
-------持续更新-----------