《Linux命令行》学习笔记

linux的内核主要由以下模块组成:
  • 进程管理
  • 定时器
  • 中断管理
  • 内存管理
  • 模块管理
  • 虚拟文件系统接口
  • 文件系统
  • 设备驱动程序
  • 进程间通信
  • 网络管理
  • 系统引导
总体的模型如图所示,Linux内核是计算机硬件和各种应用程序之间的媒介。
    Linux是类Unix系统,所以有一套基于Unix的准则和哲学:
  1. 小即是美
  2. 让程序只做好一件事
  3. 可移植性比效率更重要
  4. 一切皆文件:使用方便;把硬件当做文件处理是安全的。
  5. 使用shell脚本来提高效率和可移植性。
  6. 避免使用可定型地下的用户界面
  7. 所有程序都是数据的过滤器
    

                                                                   Linux Shell
Linux shell是用户和Linux内核之间的接口,为用户提供使用操作系统的接口,当Shell向Linux传递命令的时候,内核做出相应的反应。
  • shell 是一个用户程序,或者说是一个为用户和系统交互提供的环境
  • 从标准输入 设备读取命令的语言解释程序,拥有自己内建的shell命令集,当然shell可以被其他程序调用
  • 打开控制台,shell就会运行
  • shell不是内核一部分,但是它使用系统内核执行程序,创建文件

那使用方式打开shell呢?
  1. 终端。Linux提供基于GUI的登陆系统。形如XTerm、Gnome、KDE
  2. 安全shell连接(SSH),可以通过SSH远程登录服务器或工作站访问其shell
  3. 控制台,基于文本的登陆系统


    Shell执行命令的解析方式:
    首先shell执行命令时,shell首先检查命令是否是 内部命令,若不是检查是否是一个应用程序(Linux本身程序or商业程序or自由软件),shell在搜索路径里寻找这些程序。如果都没有找到,shell将会显示一条错误信息。如果找到,该命令将被分解为系统调用并传递给Linux内核。
     shell下的组合命令:(备注:自己不常用的)
  • ctrl + w :删除光标位置前的单词
  • ctrl + u :清空行
  • ctrl + r :搜索先前使用的命令
  • ctrl + c:中止当前指令
  • ctrl + d:退出登录shell
  • esc + t:调换光标前的两个单词
    Linux Shell 重要特性:其本身就是一个解释类型的程序设计语言。因此 shell职场绝大多数在高级语言中的元素:函数、变量、数组
程序控制结构等。

                                                     shell种类
    由此看到在Linux里面支持的shell很多。最常用的种类有 Bourne Shell(sh)、C Shell和Korn ShellBourne-Again Shell(bash)是 Linux系统中最常用的Shell。它是Bourne Shell的扩展,与Bourne Shell完全向后兼容,并且在Bourne Shell的基础上增加、增强了很多特性,具有很多特色,可以提供如命令补全、命令编辑和命令历史等功能。
     Korn Shell(ksh)集合了C Shell和Bourne Shell的优点,并和Bourne Shell完全兼容。Linux系统提供了ksh的扩展,它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。
     如此众多的shell,系统如何选择呢?
    答:用户登录到Linux系统时,由/etc/passwd这个文件决定用户将要使用哪种Shell。查看当前账户shell:echo  $SHELL

                                                                S hell脚本
    shell脚本就是早期dos的.bat文件。让使用者可以一个操作执行多条命令。提供了数组、循环、条件以及逻辑判断等重要功能,让使用者可以直接以Shell来写程序。
     Shell脚本是利用Shell的功能所写的一个程序,这个程序是 纯文本文件格式,将一些Shell的语法与指令写在里面,然后用 正则表达式管道命令以数据流重定向等功能,以实现我们所需要的功能。

     Shell脚本一般由以下几部分构成:   

  •     Shell关键字——例如if…else,for do…done。
  •     Shell命令——例如export,echo,exit,pwd,return。
  •     Linux命令——例如date,rm,mkdir。
  •     文本处理功能——例如awk,cut,sed,grep。
  •     函数——通过函数把一些常用的功能放在一起。例如,/etc/init.d目录中的大部分或全部系统Shell脚本所使用的函数都包含在文件/etc/init.d/functions中。
  •     控制流语句——例如if…then…else或执行重复操作的Shell循环。


                                                     为什么使用Shell脚本
    在Linux机器启动时,它执行/etc/rc.d目录中的Shell脚本来加载系统配置和运行服务。
  • 使用简单;
  • 节省时间。可以把冗长的重复的一连串命令合并成一条简单的命令;
  • 可以创建你自己的自动化工具和应用程序;
  • 使系统管理任务自动化;
  • 因为脚本经过很好的测试,所以使用脚本做类似配置服务或系统管理任务时,发生错误的机会将大大减少。

尝试写一个脚本:
    
#!/bin/bash
#My first script
ls -l .*
脚本的第一行:告诉shell使用什么程序解释脚本。 本例中是 /bin/bash。其他脚本语言中(perl,Python)也使用该机制。
脚本第二行:注释。每行出现“#”符号都被bash忽视。
脚本最后一行:ls命令。
注意:默认情况下,Linux不允许文件执行。因此需要chmod命令增加“x”属性。2个方式 数字和字符模式。(755  a+x)

                                        Shell在Linux环境的角色
Linux环境的构成部分
  • 内核——Linux操作系统的核心。
  • Shell——为用户和内核提供一个交互的接口。
  • 终端模拟器——它允许用户输入命令并在屏幕上回显命令的运行结果。
  • Linux桌面和窗口管理器——Linux桌面是各种软件应用程序的集合。它包括文件管理器、窗口管理器、终端模拟器等等

    当Linux系统的运行级别为3时,用户可以从本地登录到系统控制台,或在系统运行级别为5时,直接以图形界面方式登录。
用户登录时Bash将会使用以下初始化文件和启动脚本:
  • /etc/profile——系统级的初始化文件,定义了一些环境变量,由登录Shell调用执行。
  • /etc/bash.bashrc或/etc/bashrc——其文件名根据不同的Linux发行版而异,每个交互式Shell的系统级的启动脚本,定义了一些函数和别名。
  • /etc/bash.logout——系统级的登录Shell清理脚本,当登录Shell退出时执行。部分Linux发行版默认是没有此文件。
  • $HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile——用户个人初始化脚本,由登录Shell调用执行。这三个脚本只有一个会被执行,按照此顺序查找,第一个存在的将被执行。
  • $HOME/.bashrc——用户个人的每个交互式Shell的启动脚本。
  • $HOME/.bash_logout——用户个人的登录Shell清理脚本,当登录Shell退出时执行。
  • $HOME/.inputrc——用户个人的由readline使用的启动脚本,定义了处理某些情况下的键盘映射
具体细分的话,有两种情况:
  1. 当用户登录时,登录Shell会调用如下脚本:
    • /etc/profile——当用户在运行级别3登录系统时首先运行。
    • /etc/profile.d——当/etc/profile运行时,会调用该目录下的一些脚本。
    • $HOME/.bash_profile、$HOME/.bash_login和$HOME/.profile——在/etc/profile运行后,第一个存在的被运行。
    • $HOME/.bashrc——上述脚本的中一个运行后即调用此脚本。
    • /etc/bashrc或/etc/bash.bashrc——由$HOME/.bashrc调用运行
  2. 当一个交互式的非登录Shell启动时,Bash将读取并运行如下脚本:
    • $HOME/.bashrc——如果此文件存在即被运行。 
    • /etc/bashrc——将被$HOME/.bashrc调用运行。 
    • /etc/profile.d——此目录下的脚本将被/etc/bashrc或/etc/bash.bashrc调用运行。

Bash启动脚本主要设置的环境有:
  •     设置环境变量PATH和PS1(我们将在2.3.1小节中介绍这两个变量); 
  •     通过变量EDITOR设置默认的文本编辑器; 
  •     设置默认的umask(文件或目录的权限属性); 
  •     覆盖或移除不想要的变量或别名; 
  •     设置别名; 
  •     加载函数。
------------------------------------------------------
<未完>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值