常见的shell 有哪些
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
最常用的shell是Bash,也就是Bourne Again Shell。Bash由于易用和免费,在日常工作中被广泛使用,也是大多数Linux操作系统默认的Shell环境。
基础
# 清屏
clear
# 查看系统资源
top
# 当前主机名
hostname
# 临时修改
hostname <hostname>
# 永久修改(写入配置文件/etc/hostname)
hostnamectl set-hostname <hostname>
# 当前会话 正在使用用户 的 用户名
whoami
# 当前主机 所有登录用户 的 信息
who
# 当前主机 所有登录用户 的 详细信息
w
# 命令位置(例如which vim返回/usr/bin/vim)
which <cmd>
文件
# 切换目录
# 可选 . .. ~
cd <path>
# 复制文件/目录
cp <src> <tgt>
# 移动文件/目录
mv <stc> <tgt>
# 创建文件
touch <path>
# 创建目录
mkdir <path>
# 删除文件/目录
rm [OPTIONS] <path>
-r 递归删除
-f 强制删除(忽略不存在提示,忽略确认提示)
# 修改 文件/目录 权限
# 权限:3位8进制数字,例如0777。每位数字:{owner}{group}{others}。数字内每个bit:{r}{w}{x}。
chmod [OPTIONS] <权限> <path>
-R 递归修改
# 修改 文件/目录 归属
chown [OPTIONS] <username>[:<group_name>] <path>
-R 递归修改
# 当前目录
pwd
# 显示文件/目录
# -l 以行为单位显示详细信息
# -d 仅显示目录
# -a 显示隐藏文件/目录(以.开始的文件/目录)
#
# ls -la缩写为ll
ls [-l] [-d] [-a]
# 查看文件内容
cat [OPTIONS] <path>
-n 显示行号
# 查看文件前N行(默认10)
head [-<N>] <path>
# 查看文件尾N行(默认10)
tail [-<N>] <path>
# 打印字符
# 打印环境变量
echo %<evb>
# 常和管道符搭配,> 覆盖,>> 追加
echo xxx >> tmp.txt
# 查找(默认显示 匹配成功串所在行(整行显示且匹配成功串高亮))
# 常和管道符搭配 <CMD> | grep [OPTIONS] <pattern>
# 与文件搭配 grep [OPTIONS] <pattern> <path>
grep [OPTIONS] <pattern> [<path>]
-i 【忽略大小写】
-o 【仅显示匹配成功串,不显示整行】
-v 【反转,即显示没有匹配成功的行】
# 处理行的内容sed
# 取出指定的列
# <split_char>行分隔符,例如';'、;、' '
# <column_num>列号,从1开始
# 例如:head -5 /etc/passwd | cut -d: -f6
cut -d<split_char> -f<column_num>
# 处理列的内容
# <split_char>行分隔符,例如';'、;、' ',省略则默认为空格
# 同样 与管道符|搭配可以省略<path>,与文件搭配不能省略<path>
awk [-F<split_char>] '{print $<column_num>}' [<path>] # 打印指定列
awk [-F<split_char>] 'NR==<row_num>{print $<column_num>}' [<path>] # 打印指定行指定列
用户
# 切换到root用户
sudo su
# 切换到普通用户
su <username>
# 返回之前的用户
exit
# 修改当前用户密码
passwd
# 修改指定用户密码(需要root)
passwd <username>
# 添加用户
useradd [OPTIONS] <username>
-m 【用户目录不存在 自动创建,默认 不自动创建】
-d <home_directory> 【指定用户目录,默认为/home/<username>】
-g <group_name> 【指定用户组,默认创建与<username>同名用户组】
-s <shell> 【指定Shell类型,默认/bin/sh】
# 删除用户
# 删除前停止用户相关进程 / 删除时指定-f
userdel [OPTIONS] <username>
-r 【删除用户主目录及其中的任何文件,默认不删除】
-f 【强制删除用户账号(停止用户相关进程)】
# 修改用户
usermod [OPTIONS] <username>
-g <group_name> 【修改用户组】
-s <shell> 【修改Shell类型】
# 查看用户
# 查看所有用户
# username-用户名 fullname-用户全名
# username:password:UID:GID:fullname:home_directory:shell
# shell:
# /bin/sh(Bourne Shell,默认)
# /bin/bash(Bourne Again Shell,最常用)
# /usr/sbin/nologin(禁止登录)
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
用户组
# 添加用户组
groupadd <group_name>
# 删除用户组
groupdel <group_name>
# 查看所有用户组
# group_name:password:GID:usernames
cat /etc/group
root:x:0:
adm:x:4:syslog