实验二 用户管理
2.1 用户
- who用法
- -a |打印能打印的全部
- -d |打印死掉的进程
- -m |同am i,mom likes
- -q |打印当前登录用户数及用户名
- -u |打印当前登录用户登录信息
- -r |打印运行等级
- 查看用户
who am i
2.2 创建用户su,su- 与 sudo
- sudo
- 创建用户需要 root 权限,这里就要用到 sudo 这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。shiyanlou 用户也属于 sudo 用户组
sudo adduser lilei
- 添加用户到系统,并创建home目录
ls
显示文件目录列表
ls /home
- su
su 可以切换到用户 user,执行时需要输入目标用户的密码,sudo 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。su命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。 - su -l 切换用户lilei(需要密码)
su -l lilei
- 退出当前用户跟退出终端一样, exit 命令或者使用快捷键 Ctrl+d
2.3 用户组 groups
- 查询用户组shiyanlou属于哪个用户组,冒号之后是组名
groups shiyanlou
- 新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组
- 将其它用户加入 sudo 用户组需要root用户组密码即实验楼密码,这里我们用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限:
su shiyanlou
groups lilei
sudo usermod -G sudo lilei
groups lilei
2.4 删除用户
- 删除用户
sudo deluser lilei --remove-home
实验三 文件权限
3.1 查看文件权限
- ls 使用较长格式列出文件:
ls -l
ls -Al
- 使用较长格式更直观列出文件:
ls -lh
- 查看某一个目录的完整属性而不是显示目录里面的文件属性
ls -dl <目录名>
- 显示所有文件大小
ls -AsSh
其中小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序
- 文件类型
关于文件类型,这里有一点你必需时刻牢记 Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。 socket:网络套接字,具体是什么,感兴趣的用户可以自己去了解或期待实验楼的后续相关课程。pipe 管道,这个东西很重要,我们以后将会讨论到,这里你先知道有它的存在即可。软链接文件:链接文件是分为两种的,另一种当然是“硬链接”(硬链接不常用,具体内容不作为本课程讨论重点,而软链接等同于 Windows 上的快捷方式,你记住这一点就够了) - 权限
你可以使用cat <file name>
之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件。需要注意的一点是,一个目录同时具有读权限和执行权限才允许打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件。 - 链接数
- 文件大小
3.2 变更文件所有者
- 新建文件命名为 “ iphone6 ”可见文件所有者是 lilei
$ cd /home/lilei
$ touch iphone6
- 变更文件所有者为 shiyanlou :
$ cd /home/lilei
$ ls iphone6
$ sudo chown shiyanlou iphone6
- 查看文件所有者成功修改为 shiyanlou
ll iphone6
实验四 目录路径和文件的基本操作
4.1 FHS标准
- tree
tree /
sudo apt-get update
sudo apt-get install tree
4.2 目录
- 使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(注意我们上一节介绍过的,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用户的 home 目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
- 进入上一级目录:
$ cd ..
- 进入home 目录:
$ cd ~
或者
cd /home/<你的用户名>
- 使用 pwd 获取当前路径:
$ pwd
- 绝对路径 关于绝对路径,简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。
- 相对路径 相对路径,也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,表现形式如: usr/local/bin
cd /usr/local/bin
或者
cd ../../usr/local/bin
目录切换的过程中请多使用 Tab 键自动补全,可避免输入错误,连续按两次 Tab 可以显示全部候选结果
4.3 Linux 文件基本操作
<新建>
- touch 新建文件
创建名为 test 的空白文件,因为在其它目录没有权限,所以需要先 cd ~ 切换回用户的 /home/shiyanlou 目录:
$ cd ~
$ touch test
- mkdir 新建目录
mkdir symo
- mkdir -p 创建多级目录
mkdir -p father/son/grandson
<复制>
- cp(copy)复制文件
将之前创建的“ test ”文件复制到“ /home/shiyanlou/father/son/grandson ”目录中:
$ cp test father/son/grandson
- cp -r 复制目录
cp -r father family
<删除>
- rm 删除文件
使用 rm(remove files or directories)命令删除一个文件:
$ rm test
- rm -f 参数强制删除
$ rm -f test
- rm -r 删除目录
跟复制目录一样,要删除一个目录,也需要加上 -r 或 -R 参数:
$ rm -r family
<移动文件和删除文件>
- 移动文件 将mv,文件“ file1 ”移动到
Documents
目录
mkdir Documents
touch file1
mv file1 Documents
- 重命名文件
mv 旧的文件名 新的文件名,将文件“ file1 ”重命名为“ myfile ”:
$ mv file1 myfile
- rename 批量重命名
要用 perl 正则表达式来作为参数,关于正则表达式我们要在后面才会介绍到。
$ 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
<查看文件>
-
cat
,tac
和nl
命令查看文件
cat passwd
可以加上 -n 参数显示行号:
cat -n passwd
nl 命令,添加行号并打印,这是个比 cat -n 更专业的行号打印命令。这里简单列举它的常用的几个参数:
- -b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式) - -n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0 - -w : 行号字段占用的位数(默认为 6 位)
要是希望直接使用键盘操作翻页,那么你就可以使用使用 more
和 less
命令分页阅读文件。打开后默认只显示一屏内容,终端底部显示当前阅读的进度。可以使用 Enter
键向下滚动一行,使用 Space
键向下滚动一屏,按下 h
显示帮助,q
退出。
- 使用
more
命令查看文件
more passwd
- 使用
head
和tail
命令查看文件
只查看文件的头几行和尾几行。比如当我们想要查看最近新增加的用户,那么我们可以查看这个 /etc/passwd
文件,因为系统新增加一个用户,会将用户的信息添加到 passwd 文件的最后,那么这时候我们就可以使用 tail
命令了:
$ tail /etc/passwd
甚至更直接的只看一行, 加上 -n
参数,后面紧跟行数:
$ tail -n 1 /etc/passwd
3.6 file 命令查看文件的类型
file /bin/ls
3.7 编辑文件
vimtutor
3.8 眼睛
召唤一双眼睛出来,将它放到后台运行:
xeyes
nohup xeyes &