Linux学习笔记三

环境变量

变量

准确的说是shell变量,就是计算机中用于记录一个值的符号,而这些符号将用于不同的运算处理中。通常变量与值都是一一对应的关系,可以通过表达式读取它的值并赋值给其他变量,也可以直接指定数值赋值给任意变量。

使用declare命令创建一个变量名为temp的变量。

1
declare temp  预声明而已

使用=赋值运算符将变量temp进行赋值,shell中的赋值操作,=两边不能有空格

1
2
3
4
# 正确的赋值
temp=nihao
# 错误的赋值
temp = nihao

读取变量的值,使用echo$符号。($符号用于表示引用一个变量的值)

1
echo $temp

变量类型有三种:

  • 当前shell进程私有用户自定义变量
  • shell本身内建的变量
  • 从自定义变量导出的环境变量

与上述相关的命令为:setenvexport

set:显示当前shell所有变量,包括其内建环境变量,用户自定义变量以及导出的环境变量;

env:显示与当前用户相关的环境变量,还可以让命令在指定环境中运行;

export:显示从shell中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

永久生效

  • 永久的:需要修改配置文件,变量永久生效
  • 临时的:使用export命令行声明即可,变量在关闭shell时失效。

两个文件/etc/bashrc/etc/profile分别存放的是shell变量和环境变量。

命令的查找路径与顺序

查看PATH环境变量的内容

1
echo $PATH

创建一个shell脚本文件,可以使用gedit,vim,sublime等工具编辑

1
2
3
cd mydir
touch hello_shell.sh
gedit hello_shell.sh

在脚本中添加内容

1
2
3
4
5
6
7
#!/bin/bash

for ((i=0; i<10; i++));do
echo "hello shell"
done

exit 0

为文件添加可执行权限,否则执行时会报错。

1
chmod 755 hello_shell.sh

执行脚本即可

1
2
cd sh_filedir
./hello_shell.sh

创建C语言的hello world程序

1
gedit hello_world.c

添加一下程序:

1
2
3
4
5
6
7
#include <stdio.h>

int main(void)
{
printf("hello world!\n");
return 0;
}

保存后使用gcc生成可执行文件:

1
gcc -o hello_world hello_world.c

变量删除

使用unset命令删除一个环境变量

1
unset mypath

文件查找

与搜索有关的命令有:whereiswhichfindlocate

whereis简单快速

1
2
whereis who
whereis find

whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s).

locate快且全

使用locate命令查找文件也不会遍历硬盘,它通过查询/var/lib/mlocate/mlocate.db数据库来检索信息。不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行updatedb命令来更新数据库。

1
2
3
4
5
sudo apt-get update
sudo apt-get install locate
sudo updatedb

locate /etc/sh 查找`/etc`下所有以sh开头的文件

查找某目录下的所有图片:

1
locate /dir/*.jpg

which小而精

which本身是shell内建的一个命令,使用该命令来确定是否安装了某个指定的程序,因为它只从PATH环境变量指定的路径去搜索命令并且返回第一个搜索到的结果

1
2
3
which man
which nginx
which ping

find精而细

find不仅可以通过文件类型、文件名进行查找而且还可以根据文件的属性进行搜索,比如文件的时间戳和文件的权限等。

命令格式为:find [path][option][action]

与时间有关的命令参数:

-atime:最后访问时间

-ctime:最后修改文件内容的时间

-mtime:最后修改文件属性的时间

  • -mtime n:n为数字,表示为在n天之前的一天之内修改过的文件、
  • -mtime +n:列出在n天之前被修改过的文件
  • mtime -n:列出在n天之内被修改过的文件
  • newer file:file作为一个已经存在的文件,列出比file还要新的文件名

实现黑客帝国里的数字雨

1
2
3
sudo apt-get update
sudo apt-get install cmatrix
cmatrix # 运行