一、Shell的基础的命令
- Cd;在虚拟目录里切换目录
- Ls:列出目录中的文件与子目录
- Touch:创建文件和变更已有文件的访问时间或修改时间
- Cp:将已有文件复制到其他位置
- Mv:重命名文件
- Rm:删除文件
- Cat ,more,less,tail ,head查看文件中内容
- man man:访问linux系统的手册相关命令
- 理解shell
- 在用户登录到某个虚拟控制台终端或在GUI中启动终端仿真器,默认的shell程序就会开始运行。
- 输入命令/bin/dash启动dash shell;输入exit退出dash shell
- 用于登录某个虚拟控制器终端或在GUI中运行终端仿真器时所启动的默认的交互shell,是一个父shell。在CLI提示符后输入/bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序。这个shell程序被称为子shell(child shell)。
- Ps -forst命令展示这些子shell间的嵌套结构
- man bash或bash --help可以获取相关命令的更多帮助信息
- 命令列表:分号(;)指定可依次运行的一系列命令
- 进程列表:将命令列表包含在括号里,生成一个子shell来执行对应的命令。使用了环境变量的命令echo $BASH_SUBSHELL知道是否生成了子shell。如果该命令返回0,就表明没有子shell。如果返回1或者其他更大的数字,就表明存在子shell
- 后台模式:运行命令可以在处理命令的同时让出CLI,以供他用。要想将命令置入后台模式,可以在命令末尾加上字符&
- 非内建(外部)命令:有时候也被称为文件系统命令,是存在于bash shell之外的程序。
10.内建命令:已经和shell编译成了一体,作为shell工具的组
成部分存在。cd和exit命令都内建于bash shell。echo和pwd既有内建命令也有外部命令。使用type -a。which命令只显示出了外部命令文件
11.输入!!,然后按回车键就能够唤出刚刚用过的那条命令来使用。输入!命令编号,然后按回车键就能够唤出history中对应编号的命令
12.命令别名alias允许你为常用的命令(及其参数)创建另一个名称,从而将输入量减少到最低。
- 环境变量
- 全局变量全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量局部变量则只对创建它们的shell可见
- 查看全局变量可用env或printenv(个别环境变量)
- 也可以使用echo显示变量的值。在这种情况下引用某个环境变量的时候,必须在变量前面加上一个美元符($)在echo命令中,在变量名前加上$可不仅仅是要显示变量当前的值。它能够让变量作为命令行参数
- 用bash命令生成一个子shell后,echo $HOME显示环境变量的当前值,与父shell中的相同
- 局部环境变量只能在定义它们的进程中可见
- 可以通过等号给环境变量赋值,值可以是数值或字符串。如果要给变量赋一个含有空格的字符串值,必须用单引号来界定字符串的首和尾。变量名区分大小写
- 设置全局环境变量方法:先创建一个局部环境变量,再通过export命令把它导出到全局环境中。修改子shell中环境变量并不会影响到父shell中该变量的值
- unset命令+变量名可删除已经存在的环境变量。在unset命令中引用环境变量时,记住不要使用$
- 在shell命令行界面中输入一个外部命令时,shell必须搜索系统来找到对应的程序。PATH中的目录使用冒号分隔
10.当你登录linux系统启动bash shell时,默认情况下bash会在启动文件中查找命令
11.数组变量:数组是能够存储多个值的变量。要引用一个单独的数组元素,就必须用它在数组中位置的数值索引值。索引值要用方括号括起来。用=改变某个索引值位置的值;unset命令删除数组中的某个值或整个数组,但若删除索引上的值会保留索引位置。
四、linux文件权限
1.linux沿用了Unix文件权限的方法,允许用户和组根据每个文件和目录的安全性设置来访问,安全系统的核心为用户账户用户
2.系统账户:Linux系统会为各种各样的功能创建不同的用户账户,是系统上运行的各种服务进程访问资源用的特殊账户。
3.普通用户创建账户时,大多数linux系统从500开始/etc/passwd文件包含了登陆用户名,用户密码,账户的UID,组ID,文本描述,用户HOME目录的位置,用户默认shell
4.只有root用户才能访问/etc/shadow文件。
5.添加新用户:useradd命令使用系统的默认值以及命令行参数来设置用户账户。可以一次性创建新用户账户及设置用户HOME目录结构。系统默认值被设置在/etc/default/useradd文件中。
6.useradd-m username 能自动在每个新用户的HOME目录里放置默认的系统文件
7.删除用户userdel:userdel默认只删除/etc/passwd文件中用户信息,-r参数,userdel会删除用户的HOME目录以及邮件目录。然而,系统上仍可能存有已删除用户的其他文件
8.usermod可以从系统中删除用户。chpasswd命令能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置。
9.chsh、chfn和chage工具专门用来修改特定的账户信息。chsh命令用来快速修改默认的用户登录shell。
10.chfn命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法。chage命令用来帮助管理用户账户的有效期:YYYY-MM-DD格式的日期;从1970年1月1日起到该日期天数的数值。
11.组:/etc/group文件包含系统上用到的每个组的信息。可以使用grep USERNAME /etc/group或tail /etc/group查看用户组信息
12.创建组:groupadd命令可在系统上创建新组,默认没有用户被分配到该组。
13.修改组:groupmod–g 命令可以修改已有组的GID;groupmod–n命令可以修改已有组的组名。
14.理解文件权限:ls –l 命令可以用来查看Linux系统上的文件、目录和设备的权限。第一字段的第一个字符代表了对象的类型:-代表文件;d代表目录;l代表链接;c代表字符型设备;b代表块设备;n代表网络设备。之后有3组三字符的编码。每一组定义了3种访问权限:r代表对象是可读的;w代表对象是可写的;x代表对象是可执行的;-代表没有某种权限这3组权限。分别对应对象的3个安全级别:对象的属主;对象的属组;系统其他用户。
- 使用编辑器
- vi编辑器(包括vim)是Unix系统最初的编辑器。 vi编辑器是Unix系统最初的编辑器。
- 普通模式当你刚打开要编辑的文件时(或新建一个文件时),vim编辑器会进入普通模式。在普通模式中,vim编辑器会将按键解释成命令
- 插入模式在插入模式下,vim会将你在当前光标位置输入的每个键都插入到缓冲区。按下i键就可以进入插入模式。
- 进入命令行模式,在普通模式下按下冒号键。q:如果未修改缓冲区数据,退出。q!:取消所有对缓冲区数据的修改并强制退出。w filename:将文件保存到另一个文件中。wq:将缓冲区数据保存到文件中并退出。wq! :将缓冲区数据保存到文件中并强制退出
- vim和nano作为控制台模式文本编辑器无法提供图形化编辑功能。emacs编辑器一开始也是作为控制台编辑器,但如今已经迁移到了图形化世界
- 构建基本脚本
- 使用多个命令(可用;将其分开)
例子:date
还可尝试(date;who)
- 创建shell脚本
使用文件编辑器来创建一个文件,然后将命令输入到文件中。
我使用的是vim
例如:
创建一个文件
添加执行限权
必要格式和输入命令
查看运行命令
- 显示消息
使用echo
- 使用变量
$加环境变量,若要显示$,则在前面加上\
例如:
$HOME $UID
- 重定向输入和输出
>会覆盖已有的文件
>>用来追加数据
<将文件内容重定向到命令
<<内联输入重定向
- 管道
将命令产生的大量输出通过管道传送给more命令
- 执行数学运算
三种方式:expr 方括号 bc
expr
方括号
bc
- 退出脚本
使用echo $ ?
0
则成功
七、使用结构化命令
1.使用if-then语句
结构化命令:程序要求对shell脚本中的命令施加一些逻辑流程控制或根据条件脚本跳过某些脚本。
格式如下:
If if-then
格式如下:If-then-else
使用 ./else.sh
2.嵌套if语句
3.Test命令
输入 ./test.sh
test命令可以判断三类条件: 数值比较;字符串比较;文件比较
- 数值比较
输入./numeric_test.sh
- 字符串比较
输入:./string_test.sh
- 文件比较
4.复合条件测试
布尔逻辑:是一种能够将可能的返回值简化为TRUE或者FALSE的方法。有两种方法:
5.使用双括号或者双方括号
双括号命令允许你在比较过程中使用高级数学表达式
输入:./more.sh
6.case命令
case命令采用列表格式来检查单个变量的多个值。需要再写出所有的elif语句来不 停地检查同一个变量的值了
练习题:
输入./class schedule.sh
今天是周末,没有课程安排