嵌入式学习-linux-day02

文章详细介绍了Linux系统中关于文件的查找,包括find、locate命令的使用,以及which和whereis命令查找可执行文件的方法。同时,阐述了文件的打包、压缩及解压的各种命令,如tar、gzip、bzip2和xz。此外,还涵盖了文件的重定向和管道功能,以及用户管理的基本操作,如创建、切换和删除用户,以及用户密码和权限的相关知识。
摘要由CSDN通过智能技术生成

目录

文件操作

1.文件的查找

1.find从磁盘查找

 2.locate从数据查找

 3.which/whereis专门查找可执行文件

2. 文件的打包(归档)、压缩

1. 打包与解包

2.压缩与解压

3.打包并压缩

3.文件的重定向

4.管道

5.用户管理


文件操作

1.文件的查找

1.find从磁盘查找

find 路径 操作 []

按文件类型查找

find /etc -type f/d/c/b/l/s/p 按照文件的类型(-type)查找(f、d、c、b、l、s、p都是文件类型)

f(普通文件)、p(管道文件)、d(目录文件)、s(套接字文件)、c(字符设备文件)、b(块设备文件)、l(链接文件)

按文件名查找

例如:从/etc目录找到名字为passwd的文件

find /etc -name "passwd"

其中/etc是路径,-name是查找条件(查找文件名),"passwd"文件名

也可以使用通配符的方式查找文件名

find /etc -name '*.c' 查找/etc目录下所有的以.c结尾的文件

find /etc -name 'pass*' 查找/etc目录下所有的以pass开头的文件

find /etc -name '????' 查找/etc目录下所有的以四个字符组成文件名的文件

 按文件的字节大小查找

find 路径 -size n[c(字符)/w(字)/b/k/M/G]        (其中n是文件的字节数)

2byte == 1word   512byte == 1b(block块)

 对于查找到的文件可执行操作,如改名、删除等

find ~/ -name "hello" -ok rm {}\;        该操作是删除当前目录下名为hello的文件,-ok可以使我们再一次确实是否删除

 2.locate从数据查找

locate 路径

 locate查找是直接从数据库中查找,而find命令查找则是遍历查找硬盘上的文件,因此locate的查找速度要比find快。

但是由于locate查找是每天更新一次,因此当天所创建的文件locate查找不到。因此find的查找要比locate更加精确。(locate可以通过updatedb或sudo updatedb命令来更新数据库)(/tmp这个临时目录下的文件或目录,利用locate命令是无法查找的)

 3.which/whereis专门查找可执行文件

 例如:ls、cp、mv、sudo等这些都是可执行文件

which ls        查看ls所在路径,类似于pwd显示当前路径

which是通过 PATH 环境变量到该路径内查找可执行文件

whereis           显示内容比which更详细,查找范围更大

whereis ls        whereis是将ls的相关文件都查找出来

CSDN博主「swq123459」的文章讲解了which与whereis的区别
原文链接:https://blog.csdn.net/qq_33826564/article/details/82906115

linux命令分为内部命令和外部命令

内部命令:命令行,通常称为shell,shell内部实现的功能,也就是说不是一个独立的文件,所以which、whereis是找不到的。例如cd alias。。。

外部命令:就是一个独立的可执行文件,可以查找命令

2. 文件的打包(归档)、压缩

1. 打包与解包

tar cvf bao.tar file1 file2 dir1 dir2                将文件file1 file2 目录dir1 dir2打包成bao.tar

tar rf bao.tar filename                                 将filename文件追加到bao.tar中

tar tf bao.tar                                                不解包,查看包中文件

tar xvf bao.tar                                             解包

cvf、rf、tf、xvf中c为创建,v为显示打包,f为文件,r为追加,t为查看,x为解压

2.压缩与解压

gz格式:        gzip bao.tar                将bao.tar压缩为gz格式的压缩包

                    gunzip bao.tar.gz       解压缩

bzip2格式:  

                    bzip2 bao.tar             将bao.tar压缩为bz2格式的压缩包

                    bunzip2 bao.tar.bz2   解压缩

xz格式

                     xz bao.tar                  将bao.tar压缩为xz格式的压缩包

                     unxz bao.tar.xz          解压缩

3.打包并压缩

gz格式

        tar czvf bao2.tar.gz file1 file2 dir1 dir2        将文件file1、file2、dir1、dir2打包并压缩为bao2.tar.gz

bz2格式

        tar cjvf bao2.tar.bz2 dir group hello passwd        将文件dir、group、hello、passwd打包并压缩为bao2.tar.bz2

xz格式

        tar cJvf bao2.tar.xz dir group hello passwd        将文件dir、group、hello、passwd打包并压缩为bao2.tar.xz

以上想要解压解包:        tar xcf 压缩包名

查看文件的类型

1.file 文件路径-->格式

2.stat文件路径-->原信息(除了文件名之外的)比ls -l更丰富

3.文件的重定向

1.所谓的重定向就是改变文件的输出或者输入方向

2.当系统用户登录成功,默认三个文件已经打开了,分别是

        1.stdin 标准输入

        2.stdout 标准输出

        3.stderr 标准错误输出

3.三种方式

  1. 1> 或者> 表示标准输出重定向
  2. 2> 表示标准错误输出重定向
  3. 0< 表示标准输入重定向

例如:cat /etc/passwd > file1                将/etc/passwd中数据的标准输出到file1文件

4.管道

| 管道符号,管道有读端和写端,|左边为写管道,右边为读管道

例如:cat file1 | grep a                显示file文件中含有a的数据

cat file1 | grep -i a                        显示file文件中含有a的数据,不区分a\A

cat file1 | grep -i -w var                精确显示file文件中含有var单词的数据,不包括第一个单 词中有var三个字母的数据,不区分a\A

cat file1 | grep -i -w -n var            精确显示file文件中含有var单词的数据,不包括第一个单 词中有var三个字母的数据,不区分a\A,显示行号

例如:head -20 /etc/passwd| tail -10        显示文件的第10到20行

grep 筛选文件内容,常用于与管道使用,grep的常用选项

-n 显示行号

-i 不区分大小写

-w 精确筛选

wc 统计文件的行数 单词数 字符数

wc -l filepath 行数

wc -c filepath 字符数

wc -w filepath 单词数

5.用户管理

linux是多用户多任务的操作系统,只有root用户可以创建新用户,以及修改其他用户的密码

可以使用sudo命令临时切换到root身份,即在执行命令期间使用root身份。

创建新用户:

        1.sudo useradd 用户名        需要输入密码,密码是登录用户的密码,不是新创建用户的密码(注意使用这种方法创建的用户一穷二白,没有家没有命令行...)

        2.sudo adduser 用户名        推荐这种方式,基本上啥都有

指定创建用户密码:

        sudo passwd 用户名

切换用户

        su 用户名

删除用户

        sudo userdel -r 用户名

当成功创建一个用户,用户信息存储在/etc/passwd

例如:zhang:x:1000:1000:zhang,,,:/home/zhang:/bin/bash        (用:分割每一个用户信息)

  1. zhang(用户名)
  2. x密码占位,之前这里放密码的,现在密码在独立的文件中
  3. 1000用户的id
  4. 1000用户的宿组id
  5. /home/zhang 用户的家目录
  6. /bin/bash用户的命令行      

具体可参考man 5 passwd

用户密码存储/etc/shadow

  1. 只有root用户有权限查看密码文件,密码文件存储的是加密后的密码
  2. zhang:$6$9YgsYAVL$ySPHw6hirVsu0GoEyu8YgHl81/xuo2vOd1Rr2VgnICDQAg9JZUNPKFn4jHXfQIiMRTrXEtmZxiRe0lrq2DF650:19541:0:99999:7:::
  3. 绿色部分就是加密后的密码,所有的加密算法都是不可逆的。只能比对。
  4. $6$加密算法的id sha512
  5. $salt$ 盐值,增加加密序列的安全性

 每一个用户都有所属组group,默认情况下新建用户的组的组名与用户名同名,组文件/etc/group

        1.宿组:每一个用户都要有一个宿组

        2.附加组:每一个用户可以在多个附加组

如何改变组:

        sudo usermod -a -G zhang 用户名a 将用户名a加入zhang组中,作为用户名a的附加组

实验:

  1. 首先zhang用户创建了文件hello 文件的默认权限就是664 rw-rw-r--
  2. hello文件的所属组是zhang
  3. sudo usermod -a -G zhang xiaohuang 将xiaohuang加入了zhang组
  4. 创建xiaolv用户 sudo adduser xiaolv
  5. su xiaolv 尝试去修改hello 会成功吗?
  6. exit
  7. su xiaohuang 尝试修改hello 会成功吗

将用户从组中删除

        sudo gpasswd -d xiaohuang zhang         将xiaohuang从zhang组中移除

passwd命令

提出问题:密码存在/etc/shadow中,而普通用户对这个文件是没有修改的权限的,那么为什么你能改自己的密码呢?

  1. which passwd --> /usr/bin/passwd
  2. 查看权限-rwsr-xr-x 1 root root 59640 11月 29 2022 /usr/bin/passwd
  3. 看到了一个特别的权限u+s,对于可执行文件如果有s权限,那么执行命令的期间身份临时切换为了文件的拥有者,而/usr/bin/passwd的拥有者是root,所以我们成功修改了密码
  4. 文件的特殊权限有三个
    1. u+s 执行命令期间提权的
    2. g+s 同u+s
    3. o+t 例如/tmp 限制所有用户对有o+t权限的目录有读写权限,但是仅限于文件拥有者是自己的文件
    4. g.文件特殊权限
      1. i.u+s也就是文件拥有者有s权限,对于拥有u+s的可执行文件,在执行此文件的期间,身份临时切换为文件的拥有者
      2. ii.g+s也就是文件所属组有s权限,对于拥有g+s的可执行文件,在执行此文件的期间,身份临时切换为文件的所属组 4。
      3. iii.o+t主要针对目录文件,如果一个目录拥有o+t权限,那么所有的用户对此目录都可以增删改查,但是都只能修改删除自己创建的 例如/tmp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值