03. Linux 介绍与工具使用(三:变量、环境变量、conda)
参考:生信技能树
★https://www.bilibili.com/video/BV1ds411g7eg?p=5”
变量
所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中。通常变量与值是一对一的关系。
变量也存在使用的限制,称为 作用域
,变量的作用域即变量的有效范围(比如一个函数中、一个源文件中或者全局范围),在该范围内只能有一个同名变量。一旦离开则该变量无效,如同不存在这个变量一般。
可以通过 declare
声明一个变量。
通过 =
为变量赋值。
需要注意, Shell 中的赋值操作,=
两边不可以输入空格,否则会报错。
★和其他编程语言一样,shell中的变量只能是英文字母、数字或者下划线,且不能以数字作为开头。”
image.png
状态变量
记录命令的运行结果。
位置参数变量
用于向命令或程序脚本传递信息。
自定义变量
由用户自行设定。
需要注意的是,单引号中的特殊符号不会被解释,而双引号中的特殊符号才会被解释。
环境变量
shell 中的环境变量有三种:
而有三种命令和环境变量有关:
查看环境变量
echo 可以用来打印内容
$ echo $PATH
返回结果便是环境变量
但并不好看,因此我们可以利用管道(传递结果),及tr 操作以及换行符 ,将输出结果修改。
echo $PATH|tr ':' '
'
打印结果,因为我安装了java 和minicoda,因此还有一些其他的路径。
/root/miniconda3/envs/wes/bin
/root/miniconda3/condabin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/usr/local/java/jdk1.8.0_251/bin
/root/bin
顺便利用管道我们还可以借助环境变量查看一些其他东西。ls 可以列出当前所有内容, 选项l 表示多行输出,h 则可以显示出其详细信息,xargs则是给其他命令传递参数的一个过滤器,在默认设置下相当于echo。可以列出所有环境下的文件
echo $PATH|tr ':' '
'|xargs ls -lh
除此之外,我们也可以查看某个环境下的文件信息
ls -lh /root/miniconda3/bin
绿色的都是可执行文件
常用环境变量
image.png
删除环境变量
unset
可以帮助我们删除环境变量。但记得要小心不要删除重要的环境变量,比如 PATH
,否则将无法直接使用许多命令。
添加环境变量的方法
我们可以将新内容添加到 PATH
环境变量下。
第一种
PATH=$PATH:环境所在的绝对路径
PATH=$PATH:${pwd}
# 如果已经进入需要添加的目录下,可以用pwd偷个懒。
该方法相对比较省事,一行代码就可以解决问题。可是上述的PATH 在连接关闭后就会失效。
第二种
第二种方法通过修改/etc/profile 从而改变环境。
vim /etc/profile # 通过vim 编辑器进入文件
export PATH="$PATH:环境所在的绝对路径" # 指定环境,添加到文件末尾
:wq # 保存并退出vim
通过source /etc/profile
激活环境,没有报错就成功啦。
source 也可以写成 .
。
~/.profile & /etc/profile
工作目录下的profile 中配置的环境变量只对当前用户生效。
PS1 设置
PS1 是系统终端的命令提示符变量。
echo $PS1 # 查看当前的环境
[u@h W] # 返回的内容
那么这些命令提示符变量分别代表什么含义呢?
这里参考:https://www.cnblogs.com/feiyun126/p/6125608.html
d :代表日期,格式为weekday month date,例如:Wed Dec 12
H :完整的主机名称。例如:hostname是debian.linux
h :仅取主机的第一个名字,如上例,则为debian,.linux则被省略
:显示时间为24小时格式,如:HH:MM:SS
T :显示时间为12小时格式
A :显示时间为24小时格式:HH:MM
u :当前用户的账号名称 如:root
v :BASH的版本信息 如:3.2
w :完整的工作目录名称。家目录会以 ~代替 如显示/etc/default/
W :利用basename取得工作目录名称,所以只会列出最后一个目录 如上例则只显示default
# :下达的第几个命令
$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
而我的root@VM_0_3_centos ~
对应的命令提示符变量为[u@h W]
- 还可以通过修改PS1 内容,从而修改各种类型提示符的颜色。
通常来说提示符颜色格式为[e[F;Bm]
F 表示字体颜色,B表示背景颜色。比如我设置的就是PS1="[ 33]2;h:u w 07 33[33;1m]u 33[35;1m 33[0m [ 33[36;1m]w[ 33[0m]
[e[32;1m]$ [e[0m]"
可以参考:https://www.jianshu.com/p/0ad354929baf
你可以通过cat >>
或vim
的方式进入 .bashrc
文件。在文件末尾加上即可。记得结束以后source ~/.bashrc
激活新配置
激活后
.bashrc 与.profile 区别
bashrc和profile都是Shell的启动设置文件,可以初始化环境变量。但profile是在用户登录后才会运行,而bashrc在系统一启动便会运行。
另一方面,bashrc属于non-login shell,可以在非交互模式下运行,即不通过shell 进行交互(比如你通过ssh 连接输入cd, ls等交互),而是通过读取存放在文件中的命令,并进行执行。直到读取至文件的末尾,shell 才终止。
而profile 则属于交互式的 login shell,与bashrc 相反。
另外,/etc/bashrc
(有的 Linux 没有这个文件) 和 /etc/profile
,它们分别存放的是 shell 变量和环境变量。
conda 中的环境
conda 是个管理linux 包的好东西。你可以通过下面这个代码安装
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh #安装软件到服务器目录
bash Miniconda3-latest-Linux-x86_64.sh # 用bash 运行该脚本
source ~/.bashrc # 激活conda
在安装好conda 后,由于国内qiang 的关系,我们可以为conda 的下载来源添加一些镜像,加快我们的下载速度。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
conda 非常厉害的一点在于,它提供了一个创建环境的功能。
下面提供了一些常用的conda 指令。
conda --version # 查看conda 版本
conda create -n xxx python=2 # 创建xxx 的环境,依赖py2.0
conda info --envs # 查看当前环境
conda info -e # 也可以查看环境
conda env remove -n env_name # 删除某个环境
source active xxx # 激活环境
source deactivate # 退出当前环境
conda remove package_name # 删除某个包
conda create -n new_env_name old_env_name # 直接复制某个环境
conda install package_name # 安装某个包
conda search package_name # 在conda 软件库中搜索某个包
conda update package_name # 更新某个包
conda list # 查看当前环境下安装的内容
相关文章
- 奥利奥才发,谷歌已经着手开发Android P
- 苹果申请声波屏下指纹识别专利 精度足以取代Touch ID
- 擦亮自己的眼睛去看SQL Server之说说跟踪
- 开发者分享:20个关于Unity使用建议和技巧
- 别说自己懂手机 还玩Root的才是发烧友
- 苹果机器学习期刊「Siri 三部曲」之一:通过跨带宽和跨语言初始化提升神经网络声学模型
- 挨踢部落故事汇(26):全栈攻城狮之葵花宝典
- 【直播】向日葵技术总监张小峰:国内首例谈MySQL InnoDB memcached plugin实践
- 在Object-C中学习排序算法
- 大数据时代已来临,你准备好了吗?
- 机器学习在金融领域的四大优势和五大应用
- iOS如何进行优化项目?
- 2017 Android GitHub常用开源框架汇总
- 函数调用中堆栈的个人理解
- 初识Rust语言的所有权概念
- 深入理解游戏中寻路算法
- 甲骨文收益同比增长 用户抱怨声也越来越多
- Home Contact Gallery RSS Git 在团队中的最佳实践--如何正确使用Git Flow
- Informatica 9.1与合作伙伴共迎大数据时代
- 如何快速全面建立自己的大数据知识体系?