生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

318

主题
发表于 2021-12-13 21:04:39 | 查看: 1824| 回复: 0
本帖最后由 生信喵 于 2021-12-13 21:07 编辑

背景
      由于 Linux 命令行没有图形化界面,因此,所有的设置都采用文本的方式来完成,而其中最重要的用户设置则为 bashrc 文件,bashrc 配置文件非常重要,相当于图形化界面的设置选项。很多时候,命令找不到,缺少 XXX,都可能与这个有关。如果 bashrc 修改错误,会造成严重的影响。下面系统来介绍一下 bashrc 文件。
      bashrc:为每一个运行 bash shell 的用户执行此文件。当 bash shell 被打开时,该文件被读取,其中 rc 是“run configure”的简写。在每个用户的 home 目录下,我们使用 ls -a 命令,就会看到以 bash 开始开头的四个隐藏文件。
  1. $ ll -a .bash*
  2. -rw-------. 1 meta bio 25K Nov 19 20:51 .bash_history
  3. -rw-r--r--. 1 meta bio 18 Nov 9 2019 .bash_logout
  4. -rw-r--r--. 1 meta bio 141 Nov 9 2019 .bash_profile
  5. -rw-r--r--. 1 meta bio 1.7K Sep 9 14:30 .bashrc
复制代码
     不同的 bashrc 配置会呈现完全不同的效果,我的配置文件主要分为三个部分,分别是 alias部分,PS 变量部分以及 export 部分。接下来我来介绍一下我的 bashrc 配置,仅供参考。

1 Alias 部分
      alias 主要是设置一些别名,方便将一些长的命令和选项参数进行简化,例如“less -S”,每次要敲七个字符,简写成 le,两个字符就够了。以下是一些常用的 alias 命令,可以添加到.bashrc中。
  1. # .bashrc
  2. # User specific aliases and functions
  3. alias rm='rm -i'
  4. alias cp='cp -i'
  5. alias mv='mv -i'
  6. alias df='df -h'
  7. alias du='du -skh'
  8. alias grep='grep --color'
  9. alias ls='ls -hF --color=tty' # classify files in colour
  10. alias dir='ls --color=auto --format=vertical'
  11. alias ll='ls -lh -rt --file-type' # long list
  12. alias l='ls -CF' #
  13. alias lla='ls -a -l'
  14. alias e='exit'
  15. alias le='less -S'
  16. alias d='display'
  17. alias t='top -u $USER'
复制代码
     这其中 rm 和 cp 都是默认带交互模式,这是系统自带的,也可以自己定义一些命令,但是注意,不能和其他命令混了。

2 PS 部分
2.1 修改 PS 变量
      Linux 系统中的 PS变量用来控制命令行设置,其中PS 即是Prompt String,命令提示符的意思,可以看到有 PS1,PS2,PS3,PS4 等。其中最重要的就是 PS1,PS2 用来设置二级提示符。修改 PS 中的设置就可以对命令行进行个性化的设置,不过这些都是一些奇怪的符号,不容易看懂。
  1. \d :设置日期
  2. \H :完整的主机名称
  3. \h :仅取主机名中的第一个名字
  4. \t :显示时间为 24 小时格式,如:HH:MM:SS
  5. \T :显示时间为 12 小时格式
  6. \A :显示时间为 24 小时格式:HH:MM
  7. \@:显示时间,为 12 小时格式:am/pm
  8. \u :当前用户的账号名称
  9. \v :BASH 的版本信息
  10. \w :完整的工作目录名称
  11. \W :显示最后一个目录名
  12. \# :下达的第几个命令
  13. \$ :提示字符,如果是 root 用户,提示符为 # ,普通用户则为 $
复制代码
     这其中我们只选取需要的部分添加到命令行里即可。一般是用户名,时间,工作目录几个部分。
  1. [meta@localhost meta]$ export PS1="\u \t \w \n[        DISCUZ_CODE_3        ]quot;
  2. meta 09:25:28 /User/meta
  3. $
复制代码
     这里我们分别选择了用户名(\u),时间(\t),工作目录(\w),换行加$提示符(\n$)四个部分,中间用空格分开。界面清晰了很多。如果想添加其他内容,直接添加进去就行。

2.2 设置颜色
      选择完显示内容,接下里可以对每一部分分别添加颜色来进行区分。Linux 命令行终端颜色是通过一些数字来显示的。格式为“[\e[F;Bm]…[\e[0m],其中“F“为字体颜色,编号为 30-37,“B”为背景颜色,编号为 40-47,[\e[0m]作为颜色设定的结束”。
  1. 前景 背景 颜色
  2. ------------
  3. 30 40 黑色
  4. 31 41 红色
  5. 32 42 绿色
  6. 33 43 黃色
  7. 34 44 蓝色
  8. 35 45 紫紅色
  9. 36 46 青蓝色
  10. 37 47 白色
复制代码
     有了这些内容我们就可以来添加颜色。
  1. 用户名部分:\[\e[31;1m\] \u \[\e[0m\]
  2. 时间部分:\[\e[32;1m\] \t \[\e[0m\]
  3. 工作目录部分: \[\e[34;1m\] \w \[\e[0m\]
  4. $部分设置: \n\[\e[31;1m\] $ \[\e[0m\]
复制代码
     每个设置都分为三部分,前面设置颜色[\e[F;Bm],其中数字代表具体颜色,这里我们不要背景色,给个数字 1,然后第二部分就是之前的用户名(\u),时间(\t),工作目录(\w),换行加$提示符(\n$),最后是设置结尾部分[\e[0m],这里面加了很多“\”用来进行转义。
      案例模板
      这里面给出几个模板。
      模板一:
  1. meta 10:02:38 /User/meta
  2. $ export PS1="\[\e[31;1m\]\u\[\e[0m\] \[\e[32;1m\]\t\[\e[0m\]\[\e[34;1m\]\w\[\
  3. e[0m\]\n\[\e[31;1m\]$ \[\e[0m\]"
  4. meta 10:02:46 /ifs1/User/meta
  5. $
复制代码
     模板二:
  1. meta 10:07:02 /User/meta
  2. $ export PS1="\[\e[35;1m\]\u\[\e[0m\] \[\e[36;1m\]\t \[\e[0m\]\[\e[32;1m\]\w\[
  3. \e[0m\]\n\[\e[31;1m\]$ \[\e[0m\]"
  4. meta 10:07:06 /ifs1/User/meta
  5. $
复制代码
     模板三:
  1. meta 10:11:33 /User/meta
  2. $ export PS1="\[\e[33;1m\]\u\[\e[0m\] \[\e[35;1m\]\t \[\e[0m\]\[\e[36;1m\]\w\[
  3. \e[0m\]\n\[\e[32;1m\]$ \[\e[0m\]"
  4. meta 10:11:36 /ifs1/User/meta
  5. $
复制代码
     如果想设置永久起作用,需要将该变量写入.bashrc 文件中。
  1. if [ -f /etc/bashrc ]; then
  2. . /etc/bashrc
  3. fi
  4. if [ "$TERM" = "xterm" ]
  5. then
  6. export PS1="\[\e[31;1m\]\u\[\e[0m\] \[\e[32;1m\]\t \[\e[0m\]\[\e[34;1m\]\w\[\
  7. e[0m\]\n\[\e[31;1m\]$ \[\e[0m\]"
  8. else
  9. export PS2="\[\e[31;1m\]\u\[\e[0m\] \[\e[32;1m\]\t \[\e[0m\]\[\e[34;1m\]\w\[\
  10. e[0m\]\n\[\e[31;1m\]$ \[\e[0m\]"
  11. fi
复制代码

3 export 部分
      export 是最重要的一部分,这部分内容是修改系统一些默认变量的行为,例如敲 env 命令会显示出当前账户所有环境变量,其中比较重要的就是 PATH 变量,export 之后,每次登录之后,系统会重新配置默认环境变量。除了 PATH,也可以修改 perl 模块目录,python 模块目录以及其他一些配置等。
  1. export PATH="$PATH:./:/usr/bin:$PATH"
  2. export PATH="$PATH:/Software/bin/:$PATH"
  3. export PERL5LIB="/Software/biosoft/tRNAscan-SE-1.3.1/"
  4. # added by Miniconda3 installer
  5. export LD_LIBRARY_PATH="/Software/boost-1.60.0-py27_3/lib/"
复制代码

4 PATH 变量
4.1 PATH 变量简介
      PATH 变量是 Linux 系统默认程序路径,当在命令行敲命令时,系统会从 PATH 变量中设定的目录中查找程序,which 命令搜索时也会从 PATH 变量中进行搜索。Linux 系统中常见的软件找不到“command not found...”多是因为 PAHT 变量没有设置成功引起的。PATH 变量可以极大的方便软件的使用,无需使用全路径,在任何目录下直接使用软件名即可运行,否则需要一直使用全路径。
  1. 显示当前默认软件路径
  2. echo $PATH
  3. which bwa
复制代码
     windows 系统下也有 PATH 变量。
      
4.2 修改 PATH 变量
      PATH 变量中会包含多个软件路径,当在命令行输入命令时,例如 ls,软件会自动按顺序从PATH 变量的路径下开始寻找同名的软件,如果找到直接运行;如果找不到,则到下一个目录查找,以此类推。当所有目录下都找不到的时候,则提示“command not found...”。修改PATH 变量一定要小心,需要提前备份一份,如果设置错误,可以重新恢复。
  1. 首先备份一下
  2. cp ~/.bashrc ~/.bashrc.bak
  3. 打开 vim 修改
  4. vim ~/.bashrc
  5. 将路径添加到 PATH 变量中,可以在一行中添加,也可以新建一行
  6. export PATH="$PATH:./:/usr/bin:/Software/bin/:$PATH"
  7. 刷新设置
  8. source ~/.bashrc
复制代码

4.3 创建程序快捷方式
      知道了如何添加 PAHT 变量之后,就可以将生物软件的安装目录直接添加到 PATH 变量中,但是生物软件的路径很多,不能将每一个软件安装目录都添加到 PATH 变量中,这样并不是高效的做法。比较好的方案是,在系统中创建一个 biosoft 目录,一个 bin 目录,(bin 代表binary,表示二进制可执行程序),软件安装在 biosoft 目录,只将每个软件可执行程序链接到 bin 目录下即可,最后将这个 bin 目录全路径添加到 PATH 变量中。后面每次安装新程序只需将软件链接到 bin 目录下即可。这个过程相当于 windows 系统的创建桌面快捷方式。
  1. 创建软件安装目录与快捷方式目录
  2. mkdir ~/biosoft ~/bin
  3. 将 bin 目录添加到.bashrc 文件的 PATH 变量中
  4. export PATH="$PATH:~/bin/:$PATH"
  5. 将可执行程序链接到 bin 目录中
  6. ln -s biosoft/ont-guppy-cpu/bin/guppy_basecaller ~/bin
  7. ln -s biosoft/ont-guppy-cpu/bin/guppy_barcoder ~/bin
  8. ln -s biosoft/ont-guppy-cpu/bin/guppy_aligner ~/bin
  9. 自动补齐运行 guppy_basecaller
  10. guppy_basecaller
复制代码

5 更新配置
      修改完配置,确认没有问题后,保存退出 vim,这些设置并不会立刻起作用,需要重新登录,或者刷新一次。
  1. 首先备份一下
  2. cp ~/.bashrc ~/.bashrc.bak
  3. 打开 vim 修改
  4. vim ~/.bashrc
  5. 保存退出,刷新设置
  6. source ~/.bashrc
复制代码

6 恢复初始配置
      如果 bashrc 修改错了,导致很多命令无法使用。这个时候就需要恢复到初始设置,可以恢复之前备份的,也可以拷贝系统的。因为这个时候找不到拷贝的 cp 命令,需要使用全路径。
  1. 恢复备份
  2. cp ~/.bashrc.bak ~/.bashrc
  3. 也可以恢复到系统初始化
  4. cp /etc/skel/.bashrc ~/.bashrc
  5. 选择覆盖原始文件
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人 ( 萌ICP备20244422号 )

GMT+8, 2024-11-22 02:14 , Processed in 0.069243 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表