乙巳🐍年

acc8226 的博客

Shell 变量

使用 declare 命令创建一个变量名为 tmp 的变量:declare tmp

其实也可以不用 declare 预声明一个变量,直接即用即创建,这里只是告诉你 declare 的作用,这在创建其它指定类型的变量(如数组)时会用到。

使用 = 号赋值运算符,将变量 tmp 赋值为 shiyanlou。注意,与其他语言不同的是, Shell 中的赋值操作,= 两边不可以输入空格,否则会报错。

读取变量的值,使用 echo 命令和 $ 符号($ 符号用于表示引用一个变量的值,初学者经常忘记输入)

通常我们会涉及到的变量类型有三种:

当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
Shell 本身内建的变量。
从自定义变量导出的环境变量。
也有三个与上述三种环境变量相关的命令:set,env,export。这三个命令很相似,都是用于打印环境变量信息,区别在于涉及的变量范围不同。详见下表:

命令说明
set 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

export 小于 env 小于 set

注意:为了与普通变量区分,通常我们习惯将环境变量名设为大写。

永久生效
但是问题来了,当你关机后,或者关闭当前的 shell 之后,环境变量就没了啊。怎么才能让环境变量永久生效呢?

按变量的生存周期来划分,Linux 变量可分为两类:

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

这里介绍两个重要文件 /etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件:

这个 .profile 只对当前用户永久生效。因为它保存在当前用户的 Home 目录下,当切换用户时,工作目录可能一并被切换到对应的目录中,这个文件就无法生效。

创建 shell 脚本文件

一个简单的示例

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

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

exit 0

为文件添加可执行权限,否则执行会报错没有权限:chmod 755 hello_shell.sh
并执行脚本 ./hello_shell.sh

添加自定义路径到“ PATH ”环境变量, 注意这里一定要使用绝对路径。PATH=$PATH:/home/shiyanlou/mybin

每个用户的 home 目录中有一个 Shell 每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。实验楼的环境使用的 Shell 是 zsh,它的配置文件是 .zshrc,相应的如果使用的 Shell 是 Bash,则配置文件为 .bashrc。它们在 etc 下还都有一个或多个全局的配置文件,不过我们一般只修改用户目录下的配置文件。Shell 的种类有很多,可以使用 cat /etc/shells 命令查看当前系统已安装的 Shell。

$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
命令中 >> 表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的 > 是以覆盖的方式重定向到一个文件中

修改和删除已有变量

变量的修改有以下几种方式:

变量设置方式 说明
${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据
${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据
${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据
${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串
${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串

变量删除
可以使用 unset 命令删除一个环境变量:
$ unset mypath

如何让环境变量立即生效
前面我们在 Shell 中修改了一个配置脚本文件之后(比如 zsh 的配置文件 home 目录下的 .zshrc),每次都要退出终端重新打开甚至重启主机之后其才能生效,很是麻烦,我们可以使用 source 命令来让其立即生效,如:

1
2
cd /home/shiyanlou
source .zshrc

source 命令还有一个别名就是 .,上面的命令如果替换成 . 的方式就该是:
在使用 . 的时候,需要注意与表示当前路径的那个点区分开。
. ./.zshrc

参考

Linux 基础入门(新版)_Linux - 实验楼

通常 Linux 上的软件安装主要有四种方式

  • 在线安装
  • 从磁盘安装软件包
  • 从二进制软件包安装
  • 从源代码编译安装
阅读全文 »

英文标题:USEFUL ONE-LINE SCRIPTS FOR SED (Unix stream editor)
原标题:HANDY ONE-LINERS FOR SED (Unix stream editor)

整理:Eric Pement - 电邮:pemente[at]northpark[dot]edu 版本5.5
译者:Joe Hong - 电邮:hq00e[at]126[dot]com

阅读全文 »

在讲 Linux 上的压缩工具之前,有必要先了解一下常见常用的压缩包文件格式。在 Windows 上最常见的不外乎这两种 .zip,.7z 后缀的压缩文件。而在 Linux 上面常见的格式除了以上两种外,还有 .rar,.gz,.xz,.bz2,.tar,.tar.gz,.tar.xz,.tar.bz2,简单介绍如下:

文件后缀名 说明

_.zip zip 程序打包压缩的文件
_.rar rar 程序压缩的文件
_.7z 7zip 程序压缩的文件
_.tar tar 程序打包,未压缩的文件
_.gz gzip 程序(GNU zip)压缩的文件
_.xz xz 程序压缩的文件
_.bz2 bzip2 程序压缩的文件
_.tar.gz tar 打包,gzip 程序压缩的文件
*.tar.xz tar 打包,xz 程序压缩的文件
*tar.bz2 tar 打包,bzip2 程序压缩的文件
*.tar.7z tar 打包,7z 程序压缩的文件

不过我们一般只需要掌握几个命令即可,包括 zip,tar。

阅读全文 »

优麒麟

优麒麟(英文名为 Ubuntu Kylin)是基于 Ubuntu 的一款官方衍生版。 是一款专门为中国市场打造的免费操作系统,而且它已经被录入中国政府采购条例名单中。它包括 Ubuntu 用户期待的各种功能,并配有必备的中文软件及程序。

Win + 优麒麟双系统安装

下载镜像优麒麟

准备一个 U 盘要求:U 盘内存大于 4G;

阅读全文 »
0%