目录
0 前言
今天继续记录自己学习Linux的过程,emm就算是加深一下记忆,希望能对我未来的学习和成长起到一定的指导和帮助吧,也希望能帮助到有需要的伙伴~
1 系统环境变量
Linux系统环境变量是一些系统级别的变量,用来存储关于系统运行和操作的一些信息。这些变量可以被系统中的所有进程和用户访问,包括登录Shell、终端、GUI应用等等。在Linux中,常见的系统环境变量包括:
-
PATH
:用来存储系统可执行程序的路径列表,当用户在命令行中输入命令时,系统会按照PATH
中指定的路径顺序查找对应的可执行程序。 -
HOME
:用来存储当前用户的家目录路径。 -
SHELL
:用来存储当前用户默认的Shell程序路径。 -
USER
和LOGNAME
:用来存储当前登录用户的用户名。 -
LANG
:用来存储当前系统默认的语言。
当然我们可以使用env
命令(即environment的简写)来查看环境变量,以列出shell环境下所有的环境变量,如图1.1所示。
![](https://i-blog.csdnimg.cn/blog_migrate/1afa107626bdd35b77053775b7f69fe9.png)
下面介绍一些常用的Linux系统环境变量相关操作:
1) 显示环境变量:使用echo
命令和$
符号来显示环境变量的值。例如,要显示PATH
环境变量的值,可以执行以下命令:
echo $PATH
2) 设置临时环境变量:使用export
命令来设置环境变量的值,如图1.2所示。例如,要将/opt/myapp/bin
添加到PATH
环境变量中,可以执行以下命令:
export PATH=$PATH:/opt/myapp/bin
上述命令将/opt/myapp/bin
添加到PATH
环境变量的末尾。
![](https://i-blog.csdnimg.cn/blog_migrate/ec16a13a07de179f0e4acdeb7ab88612.png)
3) 永久设置环境变量:在Linux系统中,环境变量通常保存在/etc/profile
文件和~/.bashrc
文件中。如果要永久设置环境变量,可以在这些文件中添加对应的设置。
例如,在/etc/profile
文件中添加以下语句,可以将/opt/myapp/bin
添加到PATH
环境变量中:
export PATH=$PATH:/opt/myapp/bin
然后执行以下命令使设置生效:
source /etc/profile
![](https://i-blog.csdnimg.cn/blog_migrate/11e42b59f2196d873e0a3d3d97642999.png)
这里,/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
总之,特殊权限允许文件或目录以特殊的方式运行或使用,并且只应在必要时使用,以保持系统的安全性和完整性。
![](https://i-blog.csdnimg.cn/blog_migrate/525eac5f802f0c15c4beb129b68feb45.png)
-
若要删除这些权限位,可以使用相应的标志(-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/
![](https://i-blog.csdnimg.cn/blog_migrate/354ae2d00bf318b32590784a60696756.png)
3.2 文件移动 —— mv
mv
命令用于移动文件和目录,也可用于重命名文件和目录。它的一般语法如下:
mv [OPTION] SOURCE DEST
其中,SOURCE
是要移动或重命名的文件或目录,DEST
是移动或重命名后的位置或名称。一些常用的选项包括:
-
-f
:强制移动,即如果目标文件已经存在,则覆盖它。 -
-i
:交互式移动,即在移动前提示用户确认。
![](https://i-blog.csdnimg.cn/blog_migrate/2d074b5d8806e1615ca9a6b7f6084453.png)
例如,要将文件file1
移动到目录dir1
中并重命名为file2
,可以使用以下命令:
mv file1 dir1/file2
如果只是要重命名文件而不移动,可以将目标位置省略:
mv file1 file2
ps : 如果目标位置与原位置相同,则mv
命令相当于重命名文件。
3.3 文件删除 —— rm
rm
命令用于删除文件和目录。它的一般语法如下:
rm [OPTION] FILE
其中,FILE
是要删除的文件或目录。一些常用的选项包括:
-
-r
:递归删除目录及其子目录和文件。 -
-f
:强制删除,即不提示确认,直接删除。
![](https://i-blog.csdnimg.cn/blog_migrate/a6e6621eace126d2cddf0955d8ac367d.png)
例如,要删除文件file1
,可以使用以下命令:
rm file1
ps : rm
命令删除的文件无法恢复,请谨慎使用该命令。
4 文件压缩与解压缩
在linux的环境中,压缩文件的扩展名大多是:*.tar
、*.tar.gz
、*.tgz
、*.gz
、*.bz2
等 ,这里仅对常见的tar
和gzip
命令的用法作简要说明。
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
![](https://i-blog.csdnimg.cn/blog_migrate/84a4237d201c6f0a694ceae4a10bef74.png)
-
使用gzip命令进行压缩:
gzip命令可以将单个文件进行gzip压缩,压缩后的文件名默认为原文件名加上.gz后缀。以下是常用的一些参数和选项:
-
-d:解压缩文件。
-
-v:在压缩或解压缩时显示详细信息。
![](https://i-blog.csdnimg.cn/blog_migrate/5b9cfee20f2b3cffbc6230a630fff4ca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7351637d902e9d4b30751145dcc31ae8.png)
例如,要将文件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
![](https://i-blog.csdnimg.cn/blog_migrate/97c4aab6efe4bf64512f687796eaedb7.png)
-
使用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命令。
![](https://i-blog.csdnimg.cn/blog_migrate/080d8219a8338ff21ab31627fe885f1b.png)
-
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命令
![](https://i-blog.csdnimg.cn/blog_migrate/533b29ee4dd0648d356826b16b12feac.png)
find命令可以查找指定路径下符合特定条件的文件。该命令会递归搜索指定路径下的所有子目录,因此速度较慢,但可以查找文件内容包含特定字符串的文件。例如,要查找当前目录下文件名包含字符串“test”的文件,可以执行以下命令:
find . -name "*test*"
该命令会输出当前目录及其子目录下所有文件名包含字符串“test”的文件路径,例如:
./test.txt
./dir1/test.c
...
ps : find命令的选项和使用方法较为复杂,需要根据具体需求进行调整。
6 查看文件类型
在Linux中,可以使用file命令来查看文件的类型。file命令会读取文件头信息,并根据文件头信息来判断文件类型,例如文本文件、二进制文件、压缩文件、图片文件等。
![](https://i-blog.csdnimg.cn/blog_migrate/50b2ad5fdcc63c51f52bf0d2b34f41b9.png)
使用file命令查看文件类型的方法很简单,只需要在命令后面加上要查看的文件名即可,例如:
file myfile.txt
上述命令将返回myfile.txt文件的类型信息,例如:
myfile.txt: ASCII text
除了文件类型之外,file命令还可以显示一些其他的文件信息,例如文件编码、文件大小、最后修改时间等。
ps : file命令只能判断文件类型,不能判断文件内容是否正确或合法。如果需要检查文件内容是否正确或合法,可以使用一些特定的工具或命令。例如,可以使用md5sum
命令计算文件的MD5校验值,以判断文件是否被篡改过。
7 结束语
在学习的过程中,可能会遇到各种各样的问题和挑战,但只要坚持下去,就一定会有所收获。今天就到这里吧,感谢各位小伙伴们的关注,也感谢自己!