Linux学习笔记三
环境变量
变量
准确的说是shell变量,就是计算机中用于记录一个值的符号,而这些符号将用于不同的运算处理中。通常变量与值都是一一对应的关系,可以通过表达式读取它的值并赋值给其他变量,也可以直接指定数值赋值给任意变量。
使用declare
命令创建一个变量名为temp的变量。
1 | declare temp 预声明而已 |
使用=
赋值运算符将变量temp进行赋值,shell中的赋值操作,=
两边不能有空格
1 | 正确的赋值 |
读取变量的值,使用echo
和$
符号。($符号用于表示引用一个变量的值)
1 | echo $temp |
变量类型有三种:
- 当前shell进程私有用户自定义变量
- shell本身内建的变量
- 从自定义变量导出的环境变量
与上述相关的命令为:set
、env
、export
set
:显示当前shell所有变量,包括其内建环境变量,用户自定义变量以及导出的环境变量;
env
:显示与当前用户相关的环境变量,还可以让命令在指定环境中运行;
export
:显示从shell中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。
永久生效
- 永久的:需要修改配置文件,变量永久生效
- 临时的:使用
export
命令行声明即可,变量在关闭shell时失效。
注
两个文件/etc/bashrc
和/etc/profile
分别存放的是shell变量和环境变量。
命令的查找路径与顺序
查看PATH
环境变量的内容
1 | echo $PATH |
创建一个shell脚本文件,可以使用gedit,vim,sublime
等工具编辑
1 | cd mydir |
在脚本中添加内容
1 | #!/bin/bash |
为文件添加可执行权限,否则执行时会报错。
1 | chmod 755 hello_shell.sh |
执行脚本即可
1 | cd sh_filedir |
创建C语言的hello world程序
1 | gedit hello_world.c |
添加一下程序:
1 |
|
保存后使用gcc
生成可执行文件:
1 | gcc -o hello_world hello_world.c |
变量删除
使用unset
命令删除一个环境变量
1 | unset mypath |
文件查找
与搜索有关的命令有:whereis
、which
、find
、locate
whereis
简单快速
1 | whereis who |
whereis
只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s).
locate快且全
使用locate
命令查找文件也不会遍历硬盘,它通过查询/var/lib/mlocate/mlocate.db
数据库来检索信息。不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行updatedb
命令来更新数据库。
1 | sudo apt-get update |
查找某目录下的所有图片:
1 | locate /dir/*.jpg |
which小而精
which
本身是shell内建的一个命令,使用该命令来确定是否安装了某个指定的程序,因为它只从PATH
环境变量指定的路径去搜索命令并且返回第一个搜索到的结果
1 | which man |
find精而细
find
不仅可以通过文件类型、文件名进行查找而且还可以根据文件的属性进行搜索,比如文件的时间戳和文件的权限等。
命令格式为:find [path][option][action]
与时间有关的命令参数:
-atime
:最后访问时间
-ctime
:最后修改文件内容的时间
-mtime
:最后修改文件属性的时间
-mtime n
:n为数字,表示为在n天之前的一天之内修改过的文件、-mtime +n
:列出在n天之前被修改过的文件mtime -n
:列出在n天之内被修改过的文件newer file
:file作为一个已经存在的文件,列出比file还要新的文件名
实现黑客帝国里的数字雨
1 | sudo apt-get update |