Shell 在计算机科学中是指”提供用户使用界面”的软件, 通常指的是命令行界面的解析器, 一般来说, 这个词指的是操作系统中提供访问内核所提供服务的程序. Shell 也用于泛指为所有用户提供操作界面的程序, 也就是程序和用户交互的层面. 因此与之相对的是程序内核(Core), 内核不提供和用户的交互功能.
bash (Bourne Again Shell) 是 Linux 标准的默认 shell, 支持 POSIX 标准, 完全兼容 sh.
进入 shell: 一般 Linux 系统中, 桌面(GUI)状态下使用快捷键 Ctrl+Alt+T 能打开一个虚拟终端, 输入 shell 命令并执行.
退出 shell: 在 shell 中输入 exit 然后回车
默认提示符: 普通用户$, 根用户#
查看 shell 版本: echo $SHELL
查看命令的辅助信息:--help
, --version
目录文件指令
pwd: 查看当前目录
echo $HOME 或者 echo ~: 查看主目录
ls: 列出文件或目录下的文件名
- -a(all): 显示所有文件, 包括隐藏文件
- -l(long): 显示详细信息(long 表示长格式显示)
- -d(detail): 显示目录属性
- -h(human): 人性化显示文件大小
- -i(inode): 显示 inode
- -ll(ls -l): 显示目录下文件的长信息
cd: 改变目录
- ~ 进入当前用户的根目录
- 同上
- -进入上次目录
- .. 进入上一级目录
- . 进入当前目录
mkdir: 创建目录(文件夹)
- -p 递归创建
e.g. mkdir b/a =>fail, mkdir不能创建多级目录
mkdir -p b/a 同时创建 b 和 a
rmdir: 删除空目录
rm: 删除目录及文件
- -r强制删除目录
- -f强制
- 一般用 rm -rf ..
touch: 修改文件时间或者创建文件
chmod: 设置目录或文件的访问权限
- chmod[选项][操作对象][操作符][权限][文件名]
- 操作符号
- 添加某个权限
- -取消某个权限
- =赋予给定权限并取消其他权限
- 数字设定法
- chmod abc 文件名
- 其中 abc 各为一个数字, 分别表示 user, group, other 的权限
- r为4, w为2, x为1, -为0(二进制位)
- rwx = 7; rw- = 6; r-x = 5
- 访问权限组(每一个文件或目录的访问权限都有三组)
在 Linux 中是按照用户和组来设定权限的- 所有者权限: 就是文件或者目录的创建者, 一般来说和 root 用户权限相当. 文件被创建时, 文件所有者自动拥有对该文件的读写和可执行权限.
- 同组权限: 就是所有者所在的用户组的其他成员的权限
- 其他用户权限
- 访问权限(读取, 写入, 执行)
- r: 读取文件内容的权限, 或者浏览目录的权限
- w: 新增,修改文件内容的权限, 或者删除, 移动目录内文件的权限
- x: 执行文件的权限, 或者进入目录的权限
- 用 -ll 也就是 -ls l显示文件或目录的详细信息, 最左的一列为文件的访问权限, 例如:
-rw-r--r-- 1 root root 483997 Jul 15 18:31 sobsrc.tgz
这里有10个位置, 第一个制定文件的类型, 通常意义上, 一个目录也是一个文件, 如果第一个字符是-, 表示是一个非目录文件, 如果是 d, 表示是一个目录
- | rw- | r-- | r-- |
---|---|---|---|
非目录的文件 | 所有者权限 | 组用户 | 其他用户 |
普通文件 | 可读写 | 只读 | 只读 |
chown: 改变目录的所有者
cp: 复制目录或文件
- -r 复制目录
- -p 连带文件属性复制
- -d 若源文件是链接文件, 则复制链接属性
- -a 相当于 -pdr
- cp[现象][原文件或目录][目标目录]
mv: 剪切或改名(move)
- mv a ../a 将当前目录下的 a 复制剪切到上一级的 a 目录中
- mv abc.txt de.txt 如果原文件和目标文件在同一目录下, 则为改名, 否则是剪切
文件内容命令
diff: 比较两个文件的差异
patch: 修补文件(给文件打补丁)
cat: 输出文件内容
more: 逐屏显示文件内容
less: 逐页显示文件内容
head: 显示文件开头若干行内容
tail: 显示文件最后若干行内容
od: 查看特殊格式的文件内容
常见目录
/ 根目录
/bin 存放必要的命令
/boot 存放内核以及启动所需要的文件
/dev 存放设备文件
/etc 存放系统的配置文件
/home 用户文件的主目录
/lib 存放必要的运行库
/mnt 存放临时的映射文件系统
/proc 存放存储进程和系统信息
/root 超级用户的主目录
/sbin 存放系统管理程序
/tmp 存放临时文件
/usr 包含了一般不需要修改的应用程序, 命令程序文件, 程序库,手册等
/usr/bin 系统命令(普通用户 home)
/usr/sbin 系统命令(超级用户 root)
/var 包含系统产生的经常变化的文件