什么是 Shell
Shell 是核心程序(Kernel,系统核心)之外(也即非系统核心)的指令解析器(解析指令)。
它是一个程序(比如登录系统之后,系统初始化程序init
为每一个用户运行了一个称为Shell
的程序,通过该shell程序可以解析用户输入的命令,比如ls
,shell解析ls
这个字符为命令,向内核发送请求,内核执行ls
这个命令之后,将返回的结果告诉Shell,Shell再将结果呈现在用户面前),所以,Shell是作为一个命令解析器,解析用户输入的命令,再将结果返回给用户,好比COMMAND.com(C:\Windows\System32,只有一个,Linux下的Shell 可以有多个)来解析dos下的命令 。
Shell同时是一种命令语言和程序设计语言。
Shell 的类型
# ls -l /etc/shells
-rw-r--r--. 1 root root 61 Mar 2 23:20 /etc/shells# 文件类型# cat /etc/shells# 会显示当前Linux系统所支持的所有shell
# echo $SHELL# 获取当前运行的Shell
程序在shell
中运行,Shell 中也可运行子shell:
# /bin/csh# 切换csh
# exit # 回到/bin/bash(Linux默认的shell)
上下键翻阅查找之前输入的命令即为bash(Linux默认shell)的特色
Linux 文件系统存取权限和安全
文件类型:
- -:普通文件
- l:链接文件(好比Windows下的快捷方式)
- b:块设备(一般位于/dev)
- c:字符设备文件(一般位于/dev)
- p:命名管道
- s:socket文件(ls -l /tmp/.X11-unix/X0)
Linux文件类型和Linux文件的文件名(拓展名)所代表的意义是两个不同的概念。
我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件,-
:为表示)。
# ls -l# 当前目录下的文件及目录详细信息
# ls -lh# 将文件大小一个合适的单位显示
# ls -Slhr# 按文件大小排序
root 用户 / 文件的所属者才有改变文件权限的权限;