记录学习GNU/Linux(3)

目录

0 前言

1 系统环境变量

2 文件特殊权限

2.1 SUID

2.2 SGID

2.3 SBIT

3 文件操作命令

3.1 文件复制 —— cp

3.2 文件移动 —— mv

3.3 文件删除 —— rm

4 文件压缩与解压缩

4.1 文件压缩

4.2 文件解压缩

5 命令与文件查找

5.1 命令查找

5.2 文件查找

6 查看文件类型

7 结束语


0 前言

今天继续记录自己学习Linux的过程,emm就算是加深一下记忆,希望能对我未来的学习和成长起到一定的指导和帮助吧,也希望能帮助到有需要的伙伴~

1 系统环境变量

Linux系统环境变量是一些系统级别的变量,用来存储关于系统运行和操作的一些信息。这些变量可以被系统中的所有进程和用户访问,包括登录Shell、终端、GUI应用等等。在Linux中,常见的系统环境变量包括:

  • PATH:用来存储系统可执行程序的路径列表,当用户在命令行中输入命令时,系统会按照PATH中指定的路径顺序查找对应的可执行程序。

  • HOME:用来存储当前用户的家目录路径。

  • SHELL:用来存储当前用户默认的Shell程序路径。

  • USERLOGNAME:用来存储当前登录用户的用户名。

  • LANG:用来存储当前系统默认的语言。

当然我们可以使用env命令(即environment的简写)来查看环境变量,以列出shell环境下所有的环境变量,如图1.1所示。

图1.1 系统环境变量

下面介绍一些常用的Linux系统环境变量相关操作:

1) 显示环境变量:使用echo命令和$符号来显示环境变量的值。例如,要显示PATH环境变量的值,可以执行以下命令:

 echo $PATH

2) 设置临时环境变量:使用export命令来设置环境变量的值,如图1.2所示。例如,要将/opt/myapp/bin添加到PATH环境变量中,可以执行以下命令:

export PATH=$PATH:/opt/myapp/bin

上述命令将/opt/myapp/bin添加到PATH环境变量的末尾。

图1.2 设置临时环境变量

3) 永久设置环境变量:在Linux系统中,环境变量通常保存在/etc/profile文件和~/.bashrc文件中。如果要永久设置环境变量,可以在这些文件中添加对应的设置。

例如,在/etc/profile文件中添加以下语句,可以将/opt/myapp/bin添加到PATH环境变量中:

export PATH=$PATH:/opt/myapp/bin

然后执行以下命令使设置生效:

source /etc/profile
图1.3 设置永久环境变量

这里,/etc/profile~/.bashrc 都是 Bash shell 配置文件,但它们有不同的作用和适用范围。

/etc/profile 是系统级别的配置文件,它被系统中所有的 Bash 用户共享。当用户登录系统时,/etc/profile 中的命令会被执行,并设置一些全局的环境变量和系统范围的配置。通常,这个文件是系统管理员用来配置系统范围的环境变量,如 PATH、JAVA_HOME、LANG 等等。

~/.bashrc 是用户级别的配置文件,它仅对当前用户有效。当用户启动一个新的 Bash shell 时,~/.bashrc 中的命令会被执行,用户可以在这里设置自己的环境变量、别名、函数等等。这个文件通常用来定制个人的 Bash 环境,如设置 PS1(命令提示符)、定义自己的别名等。

总的来说,/etc/profile 用于系统范围的配置,而 ~/.bashrc 用于个人定制的配置。


4) 取消环境变量:使用unset命令来取消环境变量。例如,要取消MYVAR环境变量,可以执行以下命令:

unset MYVAR

ps : 环境变量通常只对当前Shell会话有效,如果要在其他Shell会话或进程中使用相同的环境变量,需要在对应的Shell或进程中设置。

2 文件特殊权限

在Linux中,除了文件的基本权限(读、写、执行)外,还可以设置文件的特殊权限,这些权限通常被称为 "SUID"、"SGID"和"Sticky Bit"。

2.1 SUID

SUID(Set User ID)权限是一种特殊权限,如果启用了SUID位,用户在执行该文件时将以文件所有者的身份执行该文件,而不是执行该文件的用户的身份。 SUID位对于允许普通用户以超级用户身份执行某些系统命令非常有用。

在命令行中,可以使用以下命令将SUID权限设置为可执行文件:

chmod u+s filename

2.2 SGID

SGID(Set Group ID)权限是一种特殊权限,如果启用了SGID位,用户在执行该文件时将以文件所属组的身份执行该文件,而不是执行该文件的用户的身份。 SGID位对于允许用户在同一个组中共享文件和目录非常有用。

在命令行中,可以使用以下命令将SGID权限设置为可执行文件或目录:

chmod g+s filename

2.3 SBIT

粘着位(Sticky Bit)是一种特殊权限,它只能应用于目录,如果启用了SBIT位,对于具有写访问权限的目录中的文件,只有文件的所有者才能删除或重命名该文件。 SBIT位对于允许多个用户共享同一个目录非常有用,而又不希望用户可以删除或重命名其他用户上传的文件。

在命令行中,可以使用以下命令将Sticky Bit权限设置为目录:

chmod o+t dirname 或者 chmod +t dirname

总之,特殊权限允许文件或目录以特殊的方式运行或使用,并且只应在必要时使用,以保持系统的安全性和完整性。

图2.1 设置SBIT权限

  • 若要删除这些权限位,可以使用相应的标志(-s、-t)和文件或目录名称,例如:

chmod u-s file
chmod g-s filename
chmod o-t directory
  • !!同样也可以以数字模式进行相应的设置,只需要将相应的数字置于前面,比如在原有755权限加上SUID,则变成4755,以此类推。

4——SUID, 2——SGID, 1——SBIT
例如:
chmod 4755 filename

3 文件操作命令

3.1 文件复制 —— cp

cp命令用于复制文件和目录。它的一般语法如下:

 cp [OPTION] SOURCE DEST

其中,SOURCE是要复制的文件或目录,DEST是要复制到的位置。一些常用的选项包括:

  • -r:递归复制目录及其子目录和文件。

  • -p:保留文件的权限、所有者和时间戳。

  • -f:强制复制,即如果目标文件已经存在,则覆盖它。

例如,要将文件file1复制到目录dir1中并保留原文件的权限和所有者,可以使用以下命令:

cp -p file1 dir1/
图3.1 复制文件或目录

3.2 文件移动 —— mv

mv命令用于移动文件和目录,也可用于重命名文件和目录。它的一般语法如下:

mv [OPTION] SOURCE DEST

其中,SOURCE是要移动或重命名的文件或目录,DEST是移动或重命名后的位置或名称。一些常用的选项包括:

  • -f:强制移动,即如果目标文件已经存在,则覆盖它。

  • -i:交互式移动,即在移动前提示用户确认。

图3.2 文件移动

例如,要将文件file1移动到目录dir1中并重命名为file2,可以使用以下命令:

mv file1 dir1/file2

如果只是要重命名文件而不移动,可以将目标位置省略:

mv file1 file2

ps : 如果目标位置与原位置相同,则mv命令相当于重命名文件。

3.3 文件删除 —— rm

rm命令用于删除文件和目录。它的一般语法如下:

 rm [OPTION] FILE

其中,FILE是要删除的文件或目录。一些常用的选项包括:

  • -r:递归删除目录及其子目录和文件。

  • -f:强制删除,即不提示确认,直接删除。

图3.3 文件删除

例如,要删除文件file1,可以使用以下命令:

rm file1

ps : rm命令删除的文件无法恢复,请谨慎使用该命令。

4 文件压缩与解压缩

在linux的环境中,压缩文件的扩展名大多是:*.tar*.tar.gz*.tgz*.gz*.bz2等 ,这里仅对常见的targzip命令的用法作简要说明。

4.1 文件压缩

  • 使用tar命令进行压缩:

tar命令可以将多个文件或目录打包成一个归档文件,并且可以选择不同的压缩方式进行压缩。以下是常用的一些参数和选项:

  • -c:创建一个新的压缩文件。

  • -v:在压缩文件中显示详细的文件信息。

  • -f:指定压缩文件名。

  • -z:使用gzip方式进行压缩。

  • -j:使用bzip2方式进行压缩。

  • -J:使用xz方式进行压缩。

例如,要将文件file1、file2和dir1目录压缩成一个名为archive.tar的tar包,并使用gzip进行压缩,可以使用以下命令:

tar -czvf archive.tar.gz file1 file2 dir1
图4.1 使用tar进行文件压缩
  • 使用gzip命令进行压缩:

gzip命令可以将单个文件进行gzip压缩,压缩后的文件名默认为原文件名加上.gz后缀。以下是常用的一些参数和选项:

  • -d:解压缩文件。

  • -v:在压缩或解压缩时显示详细信息。

图4.2 使用gzip进行文件压缩与解压缩

图4.3 gzip压缩文件

例如,要将文件file1进行gzip压缩,并将压缩后的文件命名为file1.gz,可以使用以下命令:

gzip -v file1

4.2 文件解压缩

  • 使用tar命令进行解压缩:

使用tar命令进行解压缩时,需要根据压缩方式选择不同的选项。以下是常用的一些参数和选项:

  • -x:从压缩文件中提取文件。

  • -v:在压缩文件中显示详细的文件信息。

  • -f:指定压缩文件名。

  • -z:使用gzip方式进行解压缩。

  • -j:使用bzip2方式进行解压缩。

  • -J:使用xz方式进行解压缩。 例如,要解压缩名为archive.tar.gz的gzip压缩文件,可以使用以下命令:

tar -xzvf archive.tar.gz

若需要解压到指定文件夹,则可添加-C参数执行即可:

tar -xzvf archive.tar.gz -C /path
图4.4 使用tar解压缩
  • 使用gzip命令进行解压缩:

使用gzip命令进行解压缩时,只需使用-d选项即可。例如,要解压缩名为file1.gz的gzip压缩文件,并将解压缩后的文件命名为file1,可以使用以下命令:

gzip -d -v file1.gz

除了tar和gzip之外,还有一些其他的压缩和解压缩命令,如zip和unzip,以及rar和unrar等。这些命令的使用方法类似,具体使用时需要根据不同的命令和选项进行操作。

5 命令与文件查找

5.1 命令查找

  • which命令

which命令可以查找指定命令的路径。例如,要查找ls命令所在的路径,可以执行以下命令:

which ls

该命令会输出ls命令所在的完整路径,例如:

/bin/ls

5.2 文件查找

在Linux系统中,由于whereis只查找系统中某些特定目录下的文件,而locate则是利用数据库来查找文件名,其速度较快,因此对于文件查找一般应先使用whereis或者是locate命令来检查,若还是找不到再使用find命令。

图5.1 使用which、whereis、locate命令查找
  • whereis命令

whereis命令用于查找系统中指定文件的位置,包括可执行文件、源代码和帮助文档等。其语法格式为:

whereis [选项] 文件名

whereis命令支持以下选项:

  • b:只查找二进制文件。

  • m:只查找说明文件。

  • s:只查找源代码文件。

whereis命令不支持太多的参数和选项,它默认只在系统默认的路径中查找文件。

例如,要查找pwd命令相关的文件和文档,可以执行以下命令:

whereis pwd

该命令会输出pwd命令相关的文件和文档所在的路径,例如:

pwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz

其中,/usr/bin/pwd是pwd命令的可执行文件路径,/usr/share/man/man1/pwd.1.gz是pwd命令的帮助文档路径。

  • locate命令

locate命令可以查找指定文件名包含特定字符串的文件。该命令会搜索系统中已经建立的文件名索引库,因此速度较快。若环境不存在该命令,要记得安装哈~ 其语法格式为:

locate [选项] 文件名

locate命令支持以下选项:

  • i:忽略大小写。

  • c:只返回符合条件的文件数量。

  • l:限制返回结果的数量。

  • e:排除指定的目录或文件。

  • r:支持使用正则表达式进行匹配。

例如,要查找文件名包含字符串“test”的文件,可以执行以下命令:

locate test

该命令会输出所有文件名包含字符串“test”的文件路径,例如:

/home/user/test.txt
/usr/share/test/test.c
...

ps : locate命令搜索的是已经建立的文件名索引库,因此如果系统中新建或重命名文件后,需要使用updatedb命令来更新索引库。同时,由于该命令搜索的是文件名,因此不能用来查找文件内容包含特定字符串的文件。

  • find命令

图5.2 使用find查找

find命令可以查找指定路径下符合特定条件的文件。该命令会递归搜索指定路径下的所有子目录,因此速度较慢,但可以查找文件内容包含特定字符串的文件。例如,要查找当前目录下文件名包含字符串“test”的文件,可以执行以下命令:

find . -name "*test*"

该命令会输出当前目录及其子目录下所有文件名包含字符串“test”的文件路径,例如:

./test.txt
./dir1/test.c
...

ps : find命令的选项和使用方法较为复杂,需要根据具体需求进行调整。

6 查看文件类型

在Linux中,可以使用file命令来查看文件的类型。file命令会读取文件头信息,并根据文件头信息来判断文件类型,例如文本文件、二进制文件、压缩文件、图片文件等。

图6.1 使用file查看文件类型

使用file命令查看文件类型的方法很简单,只需要在命令后面加上要查看的文件名即可,例如:

file myfile.txt

上述命令将返回myfile.txt文件的类型信息,例如:

myfile.txt: ASCII text

除了文件类型之外,file命令还可以显示一些其他的文件信息,例如文件编码、文件大小、最后修改时间等。

ps : file命令只能判断文件类型,不能判断文件内容是否正确或合法。如果需要检查文件内容是否正确或合法,可以使用一些特定的工具或命令。例如,可以使用md5sum命令计算文件的MD5校验值,以判断文件是否被篡改过。

7 结束语

在学习的过程中,可能会遇到各种各样的问题和挑战,但只要坚持下去,就一定会有所收获。今天就到这里吧,感谢各位小伙伴们的关注,也感谢自己!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sokedev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值