1.linux的登录注销

1.登录时尽量少用root账号登录,因为他是系统管理员,最大的权限,避免操作失误,可以利用普通用户登录,登录后再用“su - 用户名“命令来切换成系统管理员身份
2.在提示符下输入logout即可注销账户(logout注销指令在图形运行级别无效,在运行级别3下有效)

2.linux的关机&重启命令

shutdown -h now 立刻进行关机
shudown -h 1(/2/3/4) 1分钟后关机
shutdown -r now 现在重启计算机
halt 关机,作用和上面一样
reboot 现在重新启动计算机
sync 把内存的数据同步到磁盘
建议进行以上操作前来执行一次sync

3.添加用户

useradd <用户名>
应用案例:添加一个用户xiaokeai,默认该用户的家目录在/home/xiaokeai
ubuntu用户创建用户需要加-m参数才会创建同名家目录;

手动创建家目录并设置权限:

  • 创建家目录:使用 sudo mkdir /home/新用户名 命令创建家目录。

  • 修改目录所有者:使用 sudo chown 新用户名:新用户名/home/新用户名 命令修改家目录的所有者为新用户。

  • 修改目录权限:使用 sudo chmod 755 /home/新用户名 命令修改家目录的权限,确保新用户可以访问和使用

细节说明:(1)当创建用户成功后,会自动创建和用户同名的家目录 (2)也可以通过useradd -d <指定目录> <新的用户名>,给新创建的用户指定家目录.

4.指定/修改密码

passwd <用户名> <密码>
若不指定用户名默认修改当前登录密码

5.删除用户

userdel <用户名>
注意:删除<用户名>默认保留其家目录;若要删除其目录则输入userdel -r <用户名>

6.切换账户

su - root
su <用户名> 切换账户
sudo su 切换root账户

7.用户组指令

介绍:类似于角色,系统可以对有共性/权限的多个用户进行统一的管理

groupadd <组名> 新增组
groupdel <组名> 删除组
增加用户时直接加上组
基本用法:useradd -g <用户组> <用户名>
修改用户的组
usermod -g <用户组> <用户名>

关于组与用户可查看GIDUID

8.用户和组相关文件

/etc/passwd 文件
  • 用户(user)的配置文件,记录用户的各种信息

  • 每行的含义:用户名;口令;用户标识号;组标识号;注释性描述;主目录;登录shell

/etc/shadow 文件
  • 口令的配置文件

  • 每行的含义:登录名;加密口令;最后一次修改时间;最小时间间隔;最大时间间隔;警告时间;不活动时间;失效时间;标志

/etc/group 文件

  • 组(group)的配置文件,记录linux包含的组的信息

  • 每行含义:组名;口令;组标识号;组内用户列表

9.指定运行级别

运行级别说明:
  • 0:关机

  • 1:单用户【找回丢失密码】

  • 2:多用户状态没有网络服务

  • 3:多用户状态有网络服务

  • 4:系统未使用保留给用户

  • 5:图形界面

  • 6:系统重启

常见的运行级别是3和5,也可以指定默认运行级别

应用实例

命令:initp[123456]应用案例:通过init来切换不同的运行级别,比如动5-3,然后关机

10.文件目录类

pwd 显示当前工作目录的绝对路径
ls 查看当前目录的所有内容信息
ls [选项] [目录或是文件]

常用选项

-a 显示当前目录所有的文件和目录,包括隐藏的

-l 以列表的方式显示信息

cd 切换到指令目录
cd [参数]

cd ~ 或者cd:回到自己的家目录

..

cd .. 回到上一级目录

cd ../.. 回到前两级目录

mkdir 用于创建目录
mkdir [选项] [ 创建目录]

-p 可以使其创建多集目录

rmdir 删除空目录
rmdir [选项] [要删除的空目录]

注意:rmdir删除的是”空目录“若目录下有内容则无法删除

-rf 可以使其删除非空目录

touch指令 创建空文件
touch [文件名称]
cp 拷贝文件到制定目录
cp [选项] source dest

-r:递归复制整个文件夹

应用实例

1.将/home/hello.txt 拷贝到/home/bbb目录下

cp hello.txt /home/bbb
#接着在home目录下bbb成为了/home/bbb/txt

2.递归复制整个文件夹,比如将/home/bbb整个目录拷贝到/opt

cp -r /home/bbb /opt
应用细节

强制覆盖不提示的方法:\cp

rm 移除文件或目录
rm [选项] [要删除的文件或目录]

-r 递归删除整个文件夹

-f 强制删除不提示

应用实例

rm -r /home/bbb

mv 移动文件与目录或重命名
基本语法:

重命名:

mv [olenamefile] [newnamefile]

移动文件

mv /temp/movefile /targetfolder

应用实例:

1.将/home/cat.txt文件重命名为pig.txt

2.将/home/pig.txt移动到/root目录下

cat 查看文件(与vim不同的是cat不能修改文件,更加安全)
cat [选项] 要查看的文件

-n:显示行号

使用细节

管道命令:| more

cat -n profile | more

more指令 一个基于vi编辑器的文本过滤器,它以全屏的方式按页显示文本的内容,more指令内置的若干快捷键
more [文件]
操作说明

less指令

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示的,而是根据显示需要加载内容,对于显示大型文件具有较高的效率

less [文件]
操作说明

echo 输出内容到控制台
echo [选项] [输出内容]
应用案例

使用echo指令输出环境变量,比如输出$PATH $HOSTNAME,echo $HOSTNAME

使用echo指令输出 hello,world!

head 用于显示文件的开头部分内容,默认情况下head指令显示文件的前十行内容
head [文件] (功能描述:查看文件头10行内容)
head -n [文件] (功能描述:查看文件头5行内容,5可以是任意行数)
tail指令 用于输出文件中尾部的内容,默认情况下tail指令显示文件的、后十行内容
tail 文件 (查看文件尾部10行内容)
tail -n 5 文件 (查看文件尾部5行内容,5可以是任意行数)
tail -f 文件 (实时追踪该文档的所有更新)

实时监控mydate.txt当有变化时,会提醒

>指令>>指令 >:输出重定向和 >>:追加
ls -l > 文件 (列表的内容写入文件a.txt中(覆盖写))
ls -al >>文件 (列表的内容追加到文件aa.txt的末尾)
cat 文件1 > 文件2 (将文件1内容覆盖到文件2)
echo “内容” >> 文件 (追加)

其他指令

clear 清除当前显示
vim 查看,浏览
cat 查看,浏览

小知识

UID(用户标识符)
  • 基本概念:每个用户在系统中都有一个唯一的 UID,它是一个非负整数。系统内核使用 UID 来识别不同的用户,而不是用户名。当用户登录系统并执行操作时,系统会根据 UID 来判断用户对文件、目录等资源的访问权限。

  • 取值范围

    • 超级用户UID 为 0 的用户是超级用户(通常是 root 用户),拥有系统的最高权限,可以对系统进行任何操作,包括修改系统配置、管理其他用户等。

    • 系统用户:一般 UID 取值在 1 - 999 之间(不同系统可能略有差异)的用户为系统用户,这些用户通常是系统安装时自动创建的,用于运行特定的系统服务,比如 daemonnobody 等,它们不需要交互式登录,仅为了满足系统服务运行的需要。

    • 普通用户UID 从 1000 开始(在许多 Linux 发行版中是这样设定的)分配给普通用户,每个普通用户都有自己独立的 UID,普通用户的权限受到限制,只能访问被授权的资源。

  • 作用示例:假设有两个普通用户 user1user2user1UID 是 1001,user2UID 是 1002。user1 创建了一个文件,默认情况下,只有 UID 为 1001 的用户(即 user1 )以及 UID 为 0 的超级用户 root 对该文件有相应的操作权限(具体权限由文件的权限位决定 ),user2 没有经过授权是无法随意访问或修改这个文件的。

GID(组表示符)
  • 基本概念:用户组是具有相同特征用户的集合,每个用户组对应一个唯一的 GID,同样是一个非负整数。一个用户可以属于多个用户组,用户在访问文件或目录时,除了根据自身的 UID 来判断权限外,还会根据所在用户组的 GID 来判断是否具有相应的组权限。

  • 取值范围:与 UID 类似,其取值也有一定的范围划分。系统组的 GID 通常在较低范围(如 1 - 999 之间 ),普通用户组的 GID 一般从 1000 开始。

  • 作用示例:比如系统中有一个用户组 devgroupGID 是 1003,user1user2 都属于这个用户组。现在有一个文件,设置了所属组为 devgroup,并且给组用户赋予了读写权限。那么 user1user2 都可以基于所在的 devgroup 用户组,对该文件进行读写操作 。

UID与GID关联与应用
  • 文件权限管理:在 Linux 中,文件和目录的权限分为所有者(UID 对应的用户 )、所属组(GID 对应的用户组 )以及其他用户三类。通过设置这三类的权限(读、写、执行 ),可以精细地控制不同用户和用户组对资源的访问。

  • 用户和组的管理:管理员可以使用命令如 useradd(添加用户,会自动分配 UID 等 )、groupadd(添加用户组,分配 GID ),以及 usermod(修改用户所属组等信息 )等工具,来管理用户的 UIDGID,从而构建一个合理的用户权限体系,保障系统的安全性和资源的合理分配。

总之,UIDGID 是 Linux 系统实现用户管理和权限控制的基础,理解它们对于掌握 Linux 系统的用户权限机制至关重要。

Shell
Shell 的定义与本质:

Shell 是操作系统与用户之间的 命令行接口(Command Line Interface,CLI),它充当着用户与操作系统内核之间的 “翻译官” 角色。当用户在终端中输入命令时,Shell 会对这些命令进行解析,并将其转换为内核能够理解的指令,进而执行相应的操作。从本质上讲,Shell 是一个用 C 语言编写的程序,它是用户使用操作系统的桥梁,常见于 Unix、Linux 等系统中。

Shell 的主要功能:
  • 命令解释执行:接收用户输入的命令(如 lscdmkdir 等),解析后传递给内核执行,并将执行结果返回给用户。

  • 脚本编程:支持编写 Shell 脚本,将一系列命令按逻辑组合成脚本文件(通常以 .sh 为后缀),实现自动化任务处理,例如批量文件操作、系统管理等。

  • 变量与参数处理:允许定义和使用变量存储数据,处理命令行参数,增强命令的灵活性和可复用性。

  • 流程控制:包含条件判断(如 if - then - else)、循环结构(如 forwhile)等编程元素,使脚本具备逻辑处理能力。

  • 管道与重定向:通过管道符 | 将一个命令的输出作为另一个命令的输入;利用重定向符号(><>> 等)控制命令的输入和输出流向,例如将命令结果写入文件。

  • 命令历史与补全:记录用户输入过的命令,支持通过上下方向键调用历史命令;使用 Tab 键自动补全命令、文件名等,提高操作效率。

Shell分类

Shell 类型

特点

适用场景

Bash(Bourne-Again SHell)

最常用的 Shell,兼容 Bourne Shell(sh),功能强大,支持命令补全、历史记录、作业控制等,是大多数 Linux 发行版的默认 Shell。

日常交互、Shell 脚本编写

Zsh(Z Shell)

扩展了 Bash 的功能,具备更强大的自动补全(如路径补全、插件支持)、主题定制、拼写纠错等特性,需要手动安装配置。

追求高效交互、个性化配置的用户

Ksh(Korn Shell)

结合了 Bourne Shell 和 C Shell 的优点,在系统管理和大型脚本中表现稳定,常用于 Unix 系统。

企业级系统管理、复杂脚本开发

Csh(C Shell)

语法类似 C 语言,支持别名、作业控制、历史命令等,但在脚本编程的可读性和兼容性上不如 Bash。

部分传统 Unix 环境、习惯 C 语法的用户

Fish(Friendly Interactive SHell)

以用户友好为设计目标,具备直观的错误提示、自动建议、美观的界面,适合新手使用,但性能略低于 Bash。

新手入门、注重交互体验