什么是 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 用户 / 文件的所属者才有改变文件权限的权限;