“Linux 基础入门(新版)”实验报告
原文来自自己的实验楼实验报告:链接,由于复制过来,有些markdown语法不太兼容。
-
declare 声明一个变量,echo 返回变量的值:
-
简单理解了变量的概念,就很容易理解环境变量了。环境变量的作用域比自定义变量的要大,如 Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell 中运行的大部分命令都将以 Shell 的子进程的方式运行。
- 通常我们会涉及到的变量类型有三种:
- 当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
- Shell 本身内建的变量。
- 从自定义变量导出的环境变量。
- 也有三个与上述三种环境变量相关的命令:set,env,export。这三个命令很相似,都是用于打印环境变量信息,区别在于涉及的变量范围不同。
- 通过export命令将bash下的变量tmp输出为环境变量,然后切换到子进程zsh中去,能够引用tmp这个变量,但export只是暂时的,在退出终端时就会失效。
- 添加永久的环境变量需要去修改配置文件,一个是当前用户目录下的
./profile
,一个是/etc/profile
;前者设置的环境变量只对目标用户有效,而后者对所有的用户都有效。 - 使用gedit创建两个文件来执行,
gedit hello_shell.sh
,gedit hello_world.c
,在窗口下写入一下简单的代码,就可以实现简单的使用,当然对于.sh
文件要通过`chmod
命令来赋予它可执行的权限,而.c
文件就需要通过gcc -o hellp_world hello_world.c
来编译产生可执行文件:
-
当把前面创建的两个文件放到新建mybin目录下,再返回home目录执行的时候就只能通过完整路径来执行,这里就可以设置环境变量来直接执行:
- 注意到配置文件中的PATH变量每一个路径以
:
分隔,所以利用以下命令PATH=$PATH:/home/shiyanlou/mybin
自定义添加路径到PATH文件中,这样就可以在任意目录执行那两个文件了,不过这只是暂时的,当你重启终端的时候就会发现又不能使用了,下面介绍将自定义添加路径的命令自动执行的方式来解决后顾之忧。 - 因为每个用户在启动时,都会加载用户目录下的配置脚本,将刚才那条命令添加到这个配置文件中后,就可以在每次启动shell时自动添加路径到配置文件中:
echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
其中>>
表示将标准输出以追加的方式重定向到一个文件中,而前面用到的>
则是以覆盖的方式重定向到一个文件中,如果没有文件将会新建一个文件,使用这个两个的时候要注意区分。 - 让设置立即生效可以使用
source
命令$ source .zshrc
- 另外
source
还有一个别名```.````,它的使用方式如下,注意与之前表示目录的区分开来$ . ./.zshrc
- 注意到配置文件中的PATH变量每一个路径以
-
搜索文件:
- 下面简要说一下,
whereis
只能查找二进制文件,而更为全面的是locate
命令。 - 通过“ /var/lib/mlocate/mlocate.db ”数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令更新一次,所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令(在我们的环境中必须先执行一次该命令)。它可以用来查找指定目录下的不同文件类型,如查找 /etc 下所有以 sh 开头的文件:
$ sudo apt-get install locate $ locate /etc/sh
他还会递归子目录进行查找
- 查找
/usr/share/
目录下的所有jpg文件:$ locate /usr/share/\*.jpg
- 此外,``which
命令和
find命令,一个小而精,一个精而细。
which通常用来查看某个软件有没有安装,
find```则是这几个命令中最强大的了。 - 这条命令表示去 /etc/ 目录下面 ,搜索名字叫做 interfaces 的文件或者目录。这是 find 命令最常见的格式,千万记住 find 的第一个参数是要搜索的地方:
$ sudo find /etc/ -name interfaces
- 列出 home 目录中,当天(24 小时之内)有改动的文件:
$ find ~ -mtime 0
- 列出用户家目录下比 Code 文件夹新的文件:
$ find ~ -newer /home/shiyanlou/Code
find
命令的其他功能还很多,有机会用上会再加深入!
- 下面简要说一下,
-
作业:
- 找出 /etc/ 目录下的所有以 .list 结尾的文件:
$ locate /etc/\*.list
- 找出 /etc/ 目录下的所有以 .list 结尾的文件: