1 常⻅系统服务命令
| 常⽤命令 | 作⽤ |
|---|---|
| chkconfig —list | 列出系统服务 |
| service <服务名> status | 查看某个服务 |
| service <服务名> start | 启动某个服务 |
| service <服务名> stop | 终⽌某个服务 |
| service <服务名> restart | 重启某个服务 |
| systemctl status <服务名> | 查看某个服务 |
| systemctl start <服务名> | 启动某个服务 |
| systemctl stop <服务名> | 终⽌某个服务 |
| systemctl restart <服务名> | 重启某个服务 |
| systemctl enable <服务名> | 开启⾃启动 |
| systemctl disable <服务名> | 关闭⾃启动 |
2 权限管理
| 常⽤命令 | 作⽤ |
|---|---|
| chmod ugo+rwx dir1 | 设置⽬录所有者(u)、群组(g)及其他⼈(o)的读(r)写(w)执⾏(x)权限 |
| chmod go-rwx dir1 | 移除群组(g)与其他⼈(o)对⽬录的读写执⾏权限 |
| chown user1 file1 | 改变⽂件的所有者属性 |
| chown -R user1 dir1 | 改变⽬录的所有者属性 |
| chgrp group1 file1 | 改变⽂件群组 |
| chown user1:group1 file1 | 改变⽂件的所有⼈和群组 |
3 用户和用户组
| 常⽤命令 | 作⽤ |
|---|---|
| useradd codesheep | 创建⽤户 |
| userdel -r codesheep | 删除⽤户 |
| usermod -g group_name user_name | 修改⽤户的组 |
| usermod -aG group_name user_name | 将⽤户添加到组 |
| usermod -s /bin/ksh -d /home/codepig –g dev codesheep | 修改⽤户 codesheep 的登录 Shell、主⽬录以及⽤户组 |
| groups test | 查看 test ⽤户所在的组 |
| groupadd group_name | 创建⽤户组 |
| groupdel group_name | 删除⽤户组 |
| groupmod -n new_name old_name | 重命名⽤户组 |
| su - user_name | 完整切换到⼀个⽤户环境 |
| passwd | 修改⼝令 |
| passwd codesheep | 修改某⽤户的⼝令 |
| w | 查看活动⽤户 |
| id codesheep | 查看指定⽤户 codesheep 信息 |
| last | 查看⽤户登录⽇志 |
| crontab -l | 查看当前⽤户的计划任务 |
| cut -d: -f1 /etc/passwd | 查看系统所有⽤户 |
| cut -d: -f1 /etc/group | 查看系统所有组 |
4 其他命令
sudo !!:root 下执行刚刚的命令sudo su:以 root 形式进入新 shell
5 元字符,通配符及 shell 中的各种扩展
创建 100 个文件夹
mkdir -p dir{1..1000}shell 扩展有以下几种,并按以下顺序处理,当然如果没找到匹配的扩展格式,那就不处理
- brace expansion 大括号({})扩展
- tilde expansion
~字符扩展 - parameter and variable expansion 参数和变量扩展
- arithmetic expansion 算术扩展
- command substitution 命令替换
- process substitution 过程替换
- word splitting
- Filename Expansion 通配符扩展
shell 常见通配符不多,如下图:

shell 元字符啦,还有一系列其它 shell 元字符,如下表:

6 高级目录管理
主要是理解软硬链接,绝对路径和相对路径,环境变量这些概念,以前你在 Windows 或者 MacOS 这样的桌面操作系统里面是接触不到这些概念的,因为那些电脑是需要卖给千家万户,各个阶层的普通人,要足够傻瓜化的操作才符合大众的定位和认知。但是我们生信工程师作为某种程度的专业人士,要学的更深入,看的更远。
比如,你可以在视窗操作系统打开 QQ 或者微信这样的界面版软件,在上面谈天说地,打开网络浏览器畅游知识的海洋,你肯定不会去思考,为什么我点击桌面的 QQ 图表,电脑就自动打开了 QQ 这个软件呢?同样的,你也不会想到,为什么我是 linux 的命令行交互界面输入 ls 就能列出我当前文件夹里面的内容呢?
用type 命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。主要的命令类型:
- alias:别名。
- keyword:关键字,Shell 保留字。
- function:函数,Shell 函数。
- builtin:内建命令,Shell 内建命令。
- file:文件,磁盘文件,外部命令。
- unfound:没有找到。
你会发现很多命令,都存在于下面的目录:
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin复制
这难道是一种巧合吗?当然不是啦, 如果你 echo $PATH 就能发现这些目录都是存储在 PATH 这个变量,在 shell 里面的变量需要使用 这个美元符合来进行标识。这个 PATH 变量就是我们的环境变量啦,掌握它是 linux 的一个分水岭,我们生物信息学领域大名鼎鼎的 conda 软件,就是通过修改你的环境变量 PATH 值来进行软件管理。
不仅仅是 PATH,linux 系统还预设了大量的变量,大全如下:
$SHELL 默认Shell
$HOME 当前用户家目录
$IFS 内部字段分隔符
$LANG 默认语言
$PATH 默认可执行程序路径
$PWD 当前目录
$UID 当前用户ID
$USER 当前用户
$HISTSIZE 历史命令大小,可通过HISTTIMEFORMAT变量设置命令执行时间
$RANDOM 随机生成一个0至32767的整数
$HOSTNAME 主机名
$0:保存当前程序或脚本的名称
$*:保存传递给脚本或进程的所有参数
$$:当前进程给脚本的PID号
$!:后台运行的最后一个进程的PID号
$?:用于返回上一条命令是否成功执行。如果成功执行,将返回数字0,否则返回非零数字(通常情况下都返回数字1)。
$#:用于保存脚本的参数个数复制
其实归根结底,是对 shell 的变量这个概念的掌握。
