Linux基础命令(中)

Posted chanyuli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础命令(中)相关的知识,希望对你有一定的参考价值。

开机/重启/用户切换/注销

7.1 关机/重启命令

shutdown命令
	shutdown -h now :立即关机
	shutdown -h 2   :1分钟后关机
	shutdown -r now :立即重启
	shutdown -r 1	:1分钟后重启

halt
	关机
reboot
	重启
sync:
	把内存的数据同步到磁盘

特别注意:当关机或重启前,都应当先执行一下sync指令,把内存的数据写入磁盘,防止数据丢失

7.2 用户切换/注销

7.2.1 基本说明:

正常在公司是不会给你root权限的,就算给你了root权限,也不要拿root用户直接登录,避免操作失误

正常情况都是使用普通用户登录,然后主要管理员权限的时候再切换

7.2.2 切换用户

su - 用户名	切换用户
exit		  回到原来用户

注销用户

前提:图形界面无效
logout

八 用户管理

8.1 知识储备

img

1.Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

2.Linux 的用户需要至少要属于一个组

8.2 添加用户

8.2.1 基本语法

useradd  [选项]  用户名

例子:
useradd lxx 

说明:
1.创建用户成功后会自动创建和用户名同名的家目录
指定家目录

useradd -d 目录路径 用户名


指定用户组

useradd -g 用户组名 用户名

8.3 给用户指定或修改密码

8.3.1 基本语法

passwd 用户名

8.4 删除用户

8.4.1 基本语法

userdel 用户名			删除用户,保留家目录
userdel -r 用户名		删除用户,不保留家目录

8.4.2 说明

正常在我们删除用户的时候,一般会保留家目录

8.5 查询用户信息

8.5.1 基本语法

id 用户名

8.6 切换用户

8.6.1 说明

当用户权限不够时,可以通过su -,来切换到高权限用户,比如root用户

8.6.2 基本语法

su - 用户名		切换用户
exit			  返回原来用户

8.6.3 补充说明

从高权限用户切换到低权限用户时,不需要密码

小练习:
1.创建一个lxx的用户并指定密码
2.切换到lxx
3.尝试cd到/root目录
4.切换回root用户
5.再次cd到/root目录

8.7 用户组

8.7.1 说明

用以对具备同一权限的用户进行统一管理

就好比:运维组,技术组

8.7.2 增加组

groupadd 组名

8.7.3 删除组

groupdel 组名

前提:组内不能有用户,否则无法删除

8.8 修改用户的组

8.8.1 基本指令

usermod -g 组名 用户名

8.9 /etc/passwd 文件

这是用户的配置文件,记录着用户的各种信息

每行含义:用户名:口令(不显示):用户id:组id:注释性描述:主目录:Shell

8.10 /etc/shadow 文件

口令配置文件

存用户密码和相关时间的地方

8.11 /etc/group 文件

组的配置文件

九. 实用指令

9.1 指定运行级别

运行级别说明:

0:关机

1:单用户[找回丢失密码]

2:多用户状态[无网络服务]

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

4:保留级别

5:图形界面

6:系统重启

9.2 修改默认运行级别

vim /etc/inittab

修改最后一行:
id:5:initdefault:

9.3 切换运行级别

9.3.1 基本指令

init [012356]
测试:
1.从图形化切到级别3
2.再切回图形化
3.切换到关机级别

9.3.2 面试题

​ 如何找回 root 密码,如果我们不小心,忘记 root 密码,怎么找回。

​ 思路: 进入到 单用户模式,然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录。

动手:
开机->在引导时输入 回车键-> 看到一个界面输入 e ->  看到一个新的界面,选中第二行(编辑内核)在输入  e->  在这行最后输入1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。
这时,我们就进入到单用户模式,使用 passwd  指令来修改 root  密码。
练习:
1.假设我们的 root 密码忘记了,请问如何找回密码
2.请设置我们的 运行级别,linux 运行后,直接进入到 命令行界面,即进入到 3 运行级别

9.4 帮助指令

man 指令及配置文件
help shell内置指令
百度

9.5 文件目录指令

9.5.1 pwd指令

pwd		显示当前所在的目录

9.5.2 ls指令

ls [选项] [目录或文件]		查看文件信息
ls -a 					查看所有文件和目录,包括隐藏的
ls -l					以列表的方式显示

9.5.3 cd指令

cd 路径
cd ~:	回到家目录
cd ..:  回到上一级目录
练习:
1.使用绝对路径,切换到root目录
2.使用相对路径,切换到root目录,比如当前在/usr/lib
3.回到上一级目录
4.回到家目录

9.5.4 mkdir指令

mkdir [选项] 路径		创建文件夹
mkdir -p 路径			 创建多级文件夹

9.5.5 rmdir指令

rmdir [选项] 路径		删除空文件夹
rmdir -r 路径			 递归删除空文件夹

文件夹下有内容,则无法删除

9.5.6 touch 指令

touch 文件路径

可以一次创建多个文件
touch 文件路径1 文件路径2

9.5.7 cp指令

拷贝文件到目标路径

9.5.7.1 基本语法

cp [选项] 源路径 目标路径

cp 源路径 目标路径  			拷贝单个文件
cp -r 源路径 目标路径			拷贝文件夹
小练习:
1./home下创建test1文件夹
2.test1文件夹中创建a.txt,b.txt,c.txt三个文件
3.把test1中的a.txt复制到/home下
4.新建一个文件夹test2
5.拷贝整个test1到test2下

9.5.7.1 补充

当拷贝时发现相同文件,会提示[是否覆盖?]

\\cp [选项] 源路径 目标路径		取消提示,强制复制

9.5.8 rm指令

删除目录或者文件

9.5.8.1基本语法

rm [选项] 目标路径

rm 文件路径			删除文件
rm -r 文件夹路径		删除文件夹
rm -f xxxx			强制删除不提示
小练习:
1.删除test1中的a.txt文件
2.删除test2整个文件夹

9.5.9 mv指令

移动文件或重命名

9.5.9.1 基本语法

mv 源路径 目标路径
小练习:
1.修改test1中的a.txt 为 d.txt
2.把test1中的c.txt 移动 到/home下

9.5.10 cat指令

显示文件内容

9.5.10.1 基本语法

cat [选项] 文件路径

cat 文件路径		显示文件内容
cat -n 文件路径		显示文件内容,并显示行号
小练习:
1.用cat显示/etc/profile 的内容,并显示行号

9.5.10.2 补充说明

正常情况为了方便阅读,我们会在cat指令最后加上管道符"
|",把内容传给more,分页显示

如:

cat -n /etc/profile | more

9.5.11 more指令

more指令是基于vi编辑器的文本过滤器,以全屏的方式按页显示文本内容

more指令中内置了很多快捷键,用起来很方便

9.5.11.1 基本语法

more 文件路径

9.5.11.2 快捷键

空格			向下翻一页
Enter		 向下翻一行
q			 立即离开
Ctrl+F		 向下滚动一屏
Ctrl+B		 向上滚动一屏
=			 显示当前行号
:f			 输出文件名和当前行号

9.5.12 less指令

比more更加强大,功能比more更过,这里只介绍部分

9.5.12.1 基本语法

less 文件路径

9.5.12.2 快捷键

空格				向下翻一页
pagedown		  向下翻一页
pageup			  向上翻一页
/字符串		    向下查找[字符串],n下一个,N上一个
?字符串			向上查找[字符串],n下一个,N上一个
q				  离开less

9.5.13 >指令/>>指令

9.5.13.1 基本说明

把前方语句的结果存进文件,若文件不存在会自动创建

>:输出重定向			会覆盖原来文件内容
>>:追加重定向		追加到文件末尾

9.5.13.2 示例

1.a.txt里写上任意内容
2.把ll 查找的结果,用输出重定向写进a.txt
3.b.txt里写上任意内容
4.把ll 查找的结果,用追加重定向写进b.txt
小练习:
1.把/etc/profile 的内容 写进 /home/c.txt中

9.5.14 echo指令

把内容输出到控制台

如下:
echo "我是杨家三少"
echo $PATH
小练习:
1.用echo输出\'hello world\'

9.5.15 head指令

head
用于显示文件的开头部分内容,默认情况下
head 指令显示文件的前
10 行内容

9.5.15.1 基本语法

head 文件路径			查看文件前10行
head -n 5 文件路径		查看文件前5行
小练习:
1.查看/etc/profile 的前5行内容

9.5.15 tail指令

tail
用于显示文件的结尾部分内容,默认情况下tail指令显示文件的后10行内容

9.5.15.1 基本语法

tail 文件路径			查看文件前10行
tail -n 5 文件路径		查看文件前5行
tail -f 文件路径		实时追踪文件所有的更新-----经常使用
小练习:
1.查看/etc/profile 的后5行内容
2.实时追踪/home/myinfo.txt,在虚拟机上更新myinfo.txt,看xshell的效果

9.5.16 ln指令

软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径

ln -s 源文件或源文件夹 软连接名
测试:
1. 在/home目录下创建/root的软链接,名字为linktoroot
2. cd 到软链接,然后pwd,查看当前路径
3. 创建一个a.txt的文件
4. cd 到 /root目录,查看是否有变化
5. 删除/home下的linktoroot

软连接解释

你可以把软连接理解为一个文件的快捷方式,硬链接,就相当于是文件。

文件是什么?是操作系统提供给用户的用来管理磁盘的虚拟单位,软连接就是这个文件的快捷方式,硬链接就是用来防止误删文件用的,用的比较少。

软连接的应用场景:项目上线

项目迭代,回滚,都要在uwsgi里面改配置,就会很麻烦,所以就指向一个软连接,比如名字就叫xxx,xxx然后在指向一个版本的项目。如果版本要变,删掉这个软连接,再建一个新的叫做xxx的软连接指向新的版本的项目,就可以了。

9.5.17 history指令

查看已经执行过历史命令,也可以执行历史指令

history 		查看所有的历史指令
history 10		查看最近执行的10条指令
!100			执行编号为100的指令

所以,在公司,指令不要瞎逼乱输

9.6 时间日期类

9.6.1 date 指令

9.6.1.1 基本语法

date 			显示当前日期
data +%Y		显示当前年份
data +%m		显示当前月份
data +%d		显示当前天
data +%Y-%m-%d %H:%M:%S
小练习:
1.显示当前时间信息
2.显示当前时间年月日
3.显示当前时间年月日时分秒

9.6.2 cal指令

查看日历

cal 		显示当前日历
cal 2020 	显示2020年的日历

9.6.3 find指令

find
指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

find [范围] [选项]
范围:指路径,不写默认从当前向下找,类似于windows的查找

选项:
-name 文件名		按文件名查找
-user 用户名		查找属于该用户的所有文件
-size 			  按文件大小查找
	+20M
	-20M
	20M
	20K
小练习:
1.根据名称查找/home 目录下的 a.txt 文件
2.查找/opt 目录下,用户名称为 lxx 的文件
3.查找整个 linux 系统下大于 20M 的文件
4.查询/ 目录下,所有.txt 的文件

9.6.4 grep 指令 和 管道符号 |

管道符:"|",表示将前一个命令的处理结果输出传递给后面的命令处理

grep:过滤查找

grep [选项] 过滤内容

选项:
-n		显示匹配行及行号
-i		忽略字母大小写
例子:
1.创建文件,写上多行,包含\'yes\'和\'YES\'
2.查找\'yes\'所在行,并显示行号
3.忽略大小写,查找\'yes\'所在行

9.7 压缩和解压类

9.7.1 gzip/gunzip 指令

用于压缩和解压文件

gzip 文件路径
gunzip gz文件路径

说明:使用gzip压缩文件之后,不会保留原来的文件

例子:
1.将 /home 下的 1.txt 文件使用gzip压缩
2.将 /home 下的 1.txt.gz 文件使用gunzip解压

9.7.2 zip/unzip 指令

zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的

zip [选项] xxx.zip 被压缩内容			压缩文件或者目录
	-r 								压缩目录

unzip [选项] xxx.zip  			    解压文件	
	-d 目录							指定压缩后的存放目录
例子:
1.将 /home 下的 所有文件进行压缩成 mypackage.zip
2.讲mypackge.zip解压到/opt/tmp下

9.7.3 tar指令

tar 指令 是打包指令,最后打包后的文件是
.tar.gz
的文件

压缩:
tar -zcvf xx.tar.gz  被压缩内容			 		   压缩
tar -zxvf xx.tar.gz	 -C 目标路径					解压

z:使用gzip格式压缩
c:创建压缩包
x:解压
f:显示压缩解压过程
例子:
1.压缩多个文件,将  /home/a1.txt 和  /home/a2.txt 压缩成	a.tar.gz
2.将/home 的文件夹 压缩成 myhome.tar.gz
3.将  a.tar.gz	解压到当前目录
4.将 myhome.tar.gz	解压到 /opt/ 目录下

十 组管理和权限管理

10.1 Linux组基本介绍

在 linux 中的每个用户必须属于一个组,不能独立于组外。在
linux 中每个文件有所有者、所在组、其它组的概念

img

10.2 文件/目录 所有者

一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。

10.2.1 查看文件的所有者

ls -ahl
例子:
1.创建一个组 police
2.再创建一个用户 tom
3.然后使用 tom 来创建一个文件 ok.txt,看看情况如何

10.2.2 修改文件所有者

chown 用户名 文件名
例子:
1.使用 root  创建一个文件 apple.txt
2.然后将其所有者修改成 tom
3.查看文件所有者

10.3 组的创建

groupadd 组名
例子:
1.创建一个组,monster
2.创建一个用户fox,并放到monster组中

10.4 文件/目录 所在组

当某个用户创建了一个当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。

10.4.1 查看文件/目录 所在组

ls –ahl

10.4.2 修改文件所在组

chgrp 组名 文件名
例子:
1.使用 root 用户创建文件 orange.txt
2.查看当前这个文件属于哪个组
3.将这个文件所在组,修改到 police 组 

10.5 其他组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

10.6 改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用
root 的管理权限可以改变某个用户所在的组

10.6.1 改变用户所在组

usermod	–g	组名	用户名

10.7 权限基本介绍

ls -l
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

0-9 位说明
第 0 位确定文件类型(d,-,l)
第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限
第 4-6 位确定所属组(同用户组的)拥有该文件的权限
第 7-9 位确定其他用户拥有该文件的权限

10.8 rwx权限详解

10.8.1 rwx作用到文件

r:可读
w:可写[可写不代表可以删除,删除一个文件的前提是对文件所在的目录有写的权限]
x:可执行

10.8.2 rwx作用到目录

r:可读(可用ls查看目录内容)
w:可写[可在目录内创建+删除+重命名文件或目录]
x:可执行[可以进入目录]

10.9 文件及目录权限实际案例

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

- 表示类型为文件
第一组rwx: 表示所有者 可读  可写 可执行
第二组rw-: 表示同组用户  可读 可写 但不能执行
第三组r--: 表示其他用户  只可读

可用数字表示:
r = 4
w = 2
x = 1
因此rwx = 4+2+1 = 7

10.10 修改权限

chmod 权限变更格式 文件或目录路径

权限变更格式一:
u:所有者	g:所有组	o:其他人	a:所有人

1. u=rwx,g=rx,o=x
2. o+w					其它用户增加w权限
3. a-x					所有人减去执行权限
例子:
1.给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
2.给 abc 文件的所有者除去执行的权限,增加组写的权限
3.给 abc 文件的所有用户添加读的权限
权限变更格式二:
r = 4   w = 2  x = 1	rwx = 7	  rx = 5
chmod u=rwx,g=rx,o=x   可以写成		chmod 751

例子:
1.将 /home/abc 文件的权限修改成	rwxr-xr-x, 使用给数字的方式实现

10.11 修改文件所有者

chown newowner file			改变文件所有者
chown -R newowner 文件夹	  使得所有子文件或子目录生效
例子:
1.请将 /home/abc 文件的所有者修改成 tom
2.请将 /home/xxx 目录下所有的文件和目录的所有者都修改成 tom

10.12 修改文件所在组

chgrp newgroup file			改变文件所有组
chgrp -R newgroup 文件夹	  使得所有子文件或子目录生效
例子:
1.请将 /home/abc 文件的所在组修改成 bandit (土匪) 
2.请将 /home/xxx 目录下所有的文件和目录的所在组都修改成 bandit(土匪) 

10.13 小案例-警察和土匪游戏

police,bandit
jack, jerry: 警 察
xh, xq: 土 匪

1.创建组
2.创建用户
3.jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
4.jack 修改该文件,让其它组人可以读, 本组人可以读写
5.xh 投靠 警察,看看是否可以读写
6.使用 jack  给他的家目录 /home/jack 的所在组一个 rx 的权限
7.xh重新注销再到 jack 目录,操作 jack 的文件
练习:
练习文件权限管理[课堂练习]

1.建立两个组(神仙,妖怪)
2.建立四个用户(唐僧,悟空,八戒,沙僧)
3.设置密码
4.把悟空,八戒放入妖怪;唐僧,沙僧放入神仙
5.用悟空建立一个文件 (monkey.py 该文件要输出 i am monkey)
6.给八戒一个可以r,w的权限,唐僧,沙僧对该文件没有权限
7.八戒修改 monkey.py 加入一句话( i am pig)
8.把 沙僧 放入妖怪组
9.让沙僧修改monkey.py, 加入一句话 ("我是沙僧,我是妖怪!");

十一 crond任务调度

10.1示意图

img

10.2 基本语法

crontab [选项]

	-e : bianji crontab定时任务
	-l : 查询crontab
	-r : 删除当前用户所有的crontab任务
例子:
每分钟执行查看一次/ect目录,把目录内容写进/tml/a.txt下

具体实现步骤:
1.crontab –e
2.*/ 1 * * * * ls -l /etc >> /tmp/a.txt
3.保存退出

10.3 参数细节说明

img

img

时间参数案例:
1.每天22点45分执行
2.每周一的17点执行
3.每月1号的15号的凌晨5点执行
4.每周一到周五的凌晨4点40份执行
5.每天的凌晨4点,每隔10分钟执行一次命令

10.4 案例

1.每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate  文件中
2.每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal  文件中

以上是关于Linux基础命令(中)的主要内容,如果未能解决你的问题,请参考以下文章

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

linux-基础-常用命令

逆向及Bof基础实践