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 常见通配符不多,如下图:
Linux 命令-1.png

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

Linux 命令-2.png

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 的变量这个概念的掌握。

Linux 命令-3.png