目录
1、查看文件和遍历目录
1.1 查看文件
1.1.1 file命令
file命令查看文件类型,能确定文件的文本信息和字符编码。
1.1.2 cat命令
cat命令查看 整个文件
1.1.3 tail命令
tail命令显示文本最后几行内容,默认十行。-n修改行数,-f实时查看文件内容。CTRL+C退出。
1.1.4 head命令
head命令显示文件开头的内容,默认为前十行,-n改变行数。
1.2 遍历目录
1.2.1 pwd
pwd 访问当前目录路径。
cd切换虚拟目录,单点符(.)表当前目录,双点符(..)表当前目录的父目录。
1.2.2 ls(list)命令
ls(list)显示当前目录下的文件和目录,带-F参数的ls命令轻松区分文件和目录,ls -a把隐藏文件和普通文件及目录一起显示。ls -R列出当前目录下的子目录中的文件。-l参数列出目录中文件的更多信息。
1.2.3 过滤输出列表
ls命令能够识别标准通配符, ? * [] ! 等符号称为元字符通配符。?代表一个字符;*代表零个或多个字符;[]代表字符范围;!代表排除不需要的内容。
2、更多bash shell 命令
2.1 监测程序
2.1.1 ps 命令
2.1.2 top命令
top命令能够显示进程信息,但它是实时显示的。按q退出
2.1.2 kill命令
2.2 监测磁盘空间
2.2.1 mount命令
Linux文件系统将所有的磁盘都并入一个虚拟目录下。在使用新的存储媒体之前,需要把它放到虚拟目录下。这项工作称为挂载(mounting)。mount命令会输出当前系统上挂载的设备列表。
2.2.2 umount 命令移除设备
2.2.3 df 命令
df命令可以查看已挂载磁盘的使用情况。
-h参数它会把输出中的磁盘空间按照用户易读的形式显示,通常用M来替代兆字节,用G替代吉字节。
2.2.4 du 命令
du命令可以显示某个特定目录(默认当前目录)的磁盘使用情况。-c:显示所有已列出文件总的大小。-h:按用户易读的格式输出大小,即用K替代千字节,用M替代兆字节,用G替代吉字 节。-s:显示每个输出参数的总计
2.3 处理数据文件
2.3.1 sort命令
sort命令是对数据进行排序
2.3.2 grep命令
grep命令在输入或指定的文件中查找包含匹配指定模式的字符的行。-v参数,反向搜索(输出不匹配该模式的行);-n参数,显示匹配模式的行所在的行号;-c参数,有多少行含有匹配的模式;-e参数,指定多个匹配模式。
2.3.3 gzip 命令
gzip命令会压缩你在命令行指定的文件。
2.3.4 tar 命令
tar命令将文件写到磁带设备上归档
3、父shell子shell
在CLI提示符后输入/bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序。这个shell程序被称为子shell(child shell)。输入exit退出。
在父Shell下建立一个子shell,在子shell中执行脚本里面的语句,该子Shell继承父Shell的环境变量,但子shell新建的坏境变量不会带回父shell,除非使用export,可以无执行权限。
3.1 ps -forest命令
Ps -forest命令展示shell间的嵌套结构。Exit命令退出子shell。输入man bash或bash --help获得关于bash命令的更多帮助信息。
3.1.2 进程列表
进程列表是一种命令分组(command grouping)。命令列表:在命令之间加入分号(;)可以在一行中指定要依次运行的一系列命令。进程列表:将命令列表命令包含在括号里,生成一个子shell来执行对应的命令。可以借助一个使用了环境变量的命令echo $BASH_SUBSHELL知道是否生成了子shell。如果该命令返回0,就表明没有子shell。如果返命令返回0,就表明没有子shell。如果返回1或者其他更大的数字,就表明存在子shell.
3.1.3 后台模式
运行命令可以在处理命令的同时让出CLI,以供他用。要想将命令置入后台模式,可以在命令末尾加上字符&。将sleep放入后台后,可以使用ps命令用来显示各种进程,也可以使用jobs命令来显示后台作业信息。一旦后台作业完成,就会显示出结束状态。
3.1.4协程
协程命令coproc可以同时做两件事。它在后台生成一个子shell,并在这个子shell中执行命令。coproc命令给进程起的默认名字为COPROC通过使用扩展语法,可以修改协程的名字。coprocMy_Job{ sleep 10; }但扩展语法必须确保在第一个花括号({)和命令名之间有一个空格。还必须保证命令以分号(;)结尾。另外,分号和闭花括号(})之间也得有一个空格。
3.2shell的 内建命令
命令分为内建命令和外部命令。
3.2.1 非内建命令
3.2.2 内建命令
内建命令不需要子进程来执行,执行速度更快更高。
1、cd命令和exit命令都建于bash shell。
2、echo和pwd既有内建命令又有外部命令。which只显示外部命令,type -a能显示命令的不同实现。
3.2.3 history命令
内建命令history会跟踪你使用过的命令,保存在用户主目录隐藏文件.bash_history中。
输入!命令编号,按回车键就能够唤出history中对应编号的命令,输入!!,然后按回车键就能够唤出刚刚用过的那条命令来使用。
3.2.4 alias
alias命令允许为常用的命令(及其参数)创建另一个名称,从而将输入量减少到最低。alias –p 命令可以查看你所使用的Linux发行版已经为你设置好的一些常用命令的别名,--color 选项,表明终端支持彩色模式的列表。用alias命令创建属于自己的别名。alias li='ls -li’命令别名属于内部命令。
4、环境变量的创建和使用
4.1 什么是环境变量
环境变量(environment variable)是其值在程序外部设置.变量,通常通过操作系统或微服务内置的功能设置。环境变量由名称/值对组成(VARIABLE_NAME=value)。Bsah shell用环境变量的特性来存储有关shell会话和工作环境的信息。
系统环境变量字母大写,以区别普通用户的环境变量。
4.1.1全局环境变量
全局环境变量对于shell会话和所有生成的子shell都是可见的。
1、查看全局变量,可以使用env或printenv命令。
2、显示个别环境变量的值,可以使用printenv命令,但是不能用env命令。也可以使用echo显示变量的值。在这种情况下引用某个环境变量的时候,必须在变量前面加上一个美元符($)在echo命令中,可以显示变量当前的值,能够让变量作为命令行参数。
4.1.2局部环境变量
局部环境变量只能在定义它们的进程中可见。Set命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户定义变量。set还会按照字母顺序对结果进行排序。
4.2设置用户定义变量
通过等号给环境变量赋值,值可以是数值或字符串。给变量赋一个含有空格的字符串值,必须用单引号来界定字符串的首和尾。且变量名、等号和值之间没有空格。
4.2.1设定局部用户变量
局部变量则只对创建它们的shell可见。在父shell中设置局部变量,子shell不能查看。在子shell中设置局部变量,退出后父shell不能查看。
4.2.2设置全局环境变量
先创建一个局部环境变量,再通过export命令把它导出到全局环境中。修改子shell中环境变量并不会影响到父shell中该变量的值。子shell可以父shell中该变量的值。
4.3删除用户定义变量
unset命令+变量名可删除已经存在的环境变量。在unset命令中引用环境变量时,记住不要使用$。
4.4定位系统环境变量
除了默认的Bourne的环境变量,bash shell还提供一些自有的变量,例如
PATH 环境变量定义了用于进行命令和程序查找的目录。PATH中的目录使用冒号分隔。
4.6 定位系统环境变量
在你登入Linux系统启动一个bash shell时,默认情况下bash会在启动文件(或环境文件)中查找命令。
4.6.1启动文件
/etc/profile文件是系统上默认的bash shell的主启动文件。系统上的每个用户登录时都会执行这个启动文件。/etc/bash.bashrc文件包含了系统环境变量。for语句用来迭代/etc/profile.d目录下的所有文件。
4.7 数组变量
数组是能够存储多个值的变量。环境变量可作为数组使用。这些值可以单独引用,也可以作为整个数组来引用。
- 要引用一个单独的数组元素,就必须用它在数组中位置的数值索引值。索引值要用方括号括起来。(环境变量数组的索引值都是从零开始。)
- 要显示整个数组变量,可用星号作为通配符放在索引值的位置。
5、管理用户、管理组、修改文件权限
5.1 理解Linux的安全性
1、 /etc/passwd
/etc/passwd 文件将用户登录名匹配到对应的UID值。
2、 /etc/shadow用于保存用户密码。只有主用户才能访问。
5.1.1 添加新用户
1、useradd命令使用系统的默认值以及命令行参数来设置用户账户,创建新用户账户,及设置用户home目录结构。系统默认值被设置在/etc/default/useradd文件中,usradd –D选项查看所用Linux系统中useradd默认值。
2、 useradd -m username能自动在每个新用户的HOME目录里放置默认的系统文件。
3、userdel 可以从系统中删除用户,userdel命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。-r参数,userdel会删除用户的HOME目录以及邮件目录。然而,系统上仍可能存有已删除用户的其他文件。
4、usermod可以从系统中修改用户,-c修改备注字段,-e修改过期日期,-g修改默认的登录组)。-l修改用户账户的登录名。-L锁定账户,使用户无法登录。-p修改账户的密码。-U解除锁定,使用户能够登录。
5、 passwd可以改当前登录用户的密码,使用sudo passwd username 修改任意用户密码。-e 选项能强制用户下次登录时修改密码。
6、chsh、chfn和chage工具专门用来修改特定的账户信息 ,chsh命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作 为参数,不能只用shell名。
5.2 使用Linux组
5.3 理解文件权限
5.3.1 ls -l 命令
5.3.2 umask命令
umask命令用来显示和设置所创建文件和目录的默认权限。umask值通常会设置在/etc/profile启动文件中,有一些是设置在/etc/login.defs文件中的(如Ubuntu)。可以用umask命令为默认umask设置指定一个新值。
5.4 改变文件权限
6、使用vim编辑器
Vim编辑器是Unix系统最初的编辑器。能查看文件,能编辑文件。查看linux系统vim软件包类型。ls -l /usr/bin/vim。
6.1 操作模式
6.1.1 普通模式
刚打开vim编辑器新建文件时进入普通模式。点击i或insert进入插入模式。
1、Vim中移动光标的命令
h:左移一个字符。j:下移一行。k:上移一行。l:右移一行。PageDown(或Ctrl+F):下翻一屏。PageUp(或Ctrl+B):上翻一屏。G:移到缓冲区的最后一行。num G:移动到缓冲区中的第num行。gg:移到缓冲区的第一行。
2、命令行模式
在普通模式下按冒号键,然后输入命令。
6.1.2 插入模式
7、构建基本Shell脚本
7.1 使用多个命令
使用多个命令,用分号隔开。
7.2 脚本文件
创建脚本文件时,第一行指定要使用的shell。将命令输入到文件中。
7.2 显示信息
为脚本文件添加输出前提示。
7.3 使用变量
1 环境变量
变量允许你临时性地将信息存储在shell脚本中,以便和脚本中的其他命令一起使用。
2 用户变量
Shell 脚本允许在脚本中定义和使用自己的变量。用户变量可以是任何由字母、数字或下划线组成的文本字符串,长度不超过20个。用户变量区分大小写。使用等号将值赋给用户变量。在变量、等号和值之间不能出现空格。定义变量允许临时存储数据并在整个脚本中使用。与系统变量类似,用户变量可通过美元符引用。
3 赋给变量
从命令输出中提取信息,并将其赋给变量。用反引号字符(`)或$()格式将命令输出赋给变量。
7.4 重定向输入和输出
将命令重定向到另一位置
1 输出重定向
Bash shell用大于(>)符号将命令的输出发送到一个文件中。(>>)双大于号追加数据。
2 输入重定向
将文件的内容重定向到命令。小于符号(<)。(<<)是内联输入重定向符号。
7.5 管道
管道符号(|)直接重定向到另一个命令。
7.6 执行数学运算
1 exper命令,部分字符需要转义字符。
2使用方括号。
3 bc允许在命令行中输入浮点表达式,然后解释并计算该表达式,最后返回结果。
7.7 退出脚本
默认情况下,shell脚本会以脚本中的最后一个命令的退出状态码退出。变量$来保存上个已执行命令的退出状态码。
8、使用if,for,while等结构化命令
8.1 if-then 语句
if-then语句中,不管命令是否成功执行,你都只有一种选择。命令返回一个非零退出状态码,if-then-else语句能够执行另一组命令
8.2 嵌套if语句
8.3 for循环语句
C语言风格的for命令
8.4 while语句