Linux操作系统的基本命令和Shell编程

目录

1、查看文件和遍历目录

1.1 查看文件

1.1.1 file命令

1.1.2 cat命令

1.1.3 tail命令

 1.1.4 head命令

 1.2  遍历目录

1.2.1 pwd

 1.2.2 ls(list)命令

1.2.3  过滤输出列表

 2、更多bash shell 命令

2.1 监测程序

2.1.1 ps 命令

2.1.2 top命令

 2.1.2 kill命令

 2.2 监测磁盘空间

2.2.1 mount命令

2.2.2 umount 命令移除设备

2.2.3 df 命令

2.2.4 du 命令

 2.3 处理数据文件

2.3.1 sort命令

 2.3.2 grep命令

 2.3.3 gzip 命令

 2.3.4 tar 命令

3、父shell子shell

3.1  ps -forest命令

3.1.2 进程列表

3.1.3 后台模式

3.1.4协程

3.2shell的 内建命令

3.2.1 非内建命令

 3.2.2 内建命令

 3.2.3 history命令

3.2.4 alias

4、环境变量的创建和使用

4.1 什么是环境变量

4.1.1全局环境变量

4.1.2局部环境变量

4.2设置用户定义变量

4.2.1设定局部用户变量

4.2.2设置全局环境变量

4.3删除用户定义变量

4.4定位系统环境变量

4.6 定位系统环境变量

4.6.1启动文件

4.7 数组变量

5、管理用户、管理组、修改文件权限

5.1 理解Linux的安全性

 5.1.1 添加新用户

5.2 使用Linux组

 5.3 理解文件权限

5.3.1 ls -l 命令

5.3.2  umask命令 

 5.4 改变文件权限

6、使用vim编辑器 

 6.1 操作模式

6.1.1 普通模式

 6.1.2  插入模式

7、构建基本Shell脚本

7.1 使用多个命令

 7.2 脚本文件

7.2 显示信息

7.3 使用变量

 7.4 重定向输入和输出

 7.5 管道

7.6 执行数学运算

 7.7 退出脚本

 8、使用if,for,while等结构化命令

8.1 if-then 语句

8.2 嵌套if语句

8.3  for循环语句

 8.4 while语句


1、查看文件和遍历目录

1.1 查看文件

1.1.1 file命令

file命令查看文件类型,能确定文件的文本信息和字符编码。

1.1.2 cat命令

cat命令查看 整个文件

-n 参数会给所有的行加上行号。

-b 给有文本的行加上行号。

-T 参数会用 ^I字符组合去替换文中的所有制表符,more命令是分页工具,查看大型文件,q键退出。less为more命令升级版。

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 命令

ps命令能输出运行在系统上的所有程序的许多信息。
-e 参数指定显示所有运行在系统上的进程;
-f 参数则扩展了输出,这些扩展的列包含了有用的信息。

2.1.2 top命令

top命令能够显示进程信息,但它是实时显示的。按q退出

 2.1.2 kill命令

kill 命令通过进程ID PID )给进程发信号。
killall 命令支持通过进程名而不是PID 来结束进程。

 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命令是对数据进行排序

-n 参数, sort 命令把数字识别成数字而不是字符,并且按值排序 用 -M 参数, sort 命令就能识别三字符的月份名,并相应地排序 -r 参数将结果按降序输出

 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 bashbash --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 非内建命令

文件系统命令 ,是存在于 bash shell 之外的程序。 外部命令程序通常位于 /bin /usr/bin /sbin /usr/sbin 中。ps 就是一个外部命令。你可以使用which和type 命令找到它。

 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 数组变量

数组是能够存储多个值的变量。环境变量可作为数组使用。这些值可以单独引用,也可以作为整个数组来引用。

  1. 要引用一个单独的数组元素,就必须用它在数组中位置的数值索引值。索引值要用方括号括起来。(环境变量数组的索引值都是从零开始。)
  2. 要显示整个数组变量,可用星号作为通配符放在索引值的位置。

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组

groupadd命令可在系统上创建新组。 用usermod -G会把这个新组 添加到指定用户账户的组列表里。 -g选项,指定的组名会替换掉该账户的默认组。 -G选项则将该组添加到用户的属组的列表里,不会影响默认组。

 5.3 理解文件权限

5.3.1 ls -l 命令

ls –l 命令可以用来查看Linux系统上的文件、目录和设备的权限。 -代表文件d代表目录l代表链接c代表字符型设备b代表块设备代表网络设备r代表对象是可读的w代表对象是可写的x代表对象是可执行的-代表没有某种权限

5.3.2  umask命令 

umask命令用来显示和设置所创建文件和目录的默认权限。umask值通常会设置在/etc/profile启动文件中,有一些是设置在/etc/login.defs文件中的(如Ubuntu)。可以用umask命令为默认umask设置指定一个新值。

 5.4 改变文件权限

chmod命令用来改变文件和目录的安全性设置。格式如下: chmodoptions mode file mode参数可以使用八进制模式或符号模式进行安全性设置。

 

 

6、使用vim编辑器 

Vim编辑器是Unix系统最初的编辑器。能查看文件,能编辑文件。查看linux系统vim软件包类型。ls -l /usr/bin/vim。

 6.1 操作模式

6.1.1 普通模式

刚打开vim编辑器新建文件时进入普通模式。点击i或insert进入插入模式。

1Vim中移动光标的命令

h:左移一个字符。j:下移一行。k:上移一行。l:右移一行。PageDown(或Ctrl+F):下翻一屏。PageUp(或Ctrl+B):上翻一屏。G:移到缓冲区的最后一行。num G:移动到缓冲区中的第num行。gg:移到缓冲区的第一行。

2、命令行模式

在普通模式下按冒号键,然后输入命令。

 

 6.1.2  插入模式

:s/old/new/g :一行命令替换所有 old
:n,ms/old/new/g :替换行号 n m 之间所有 old
:%s/old/new/g :替换整个文件中的所有 old
:%s/old/new/gc :替换整个文件中的所有 old ,但在每次出现时提示。

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 语句

结构化命令( structured command : 程序要求对 shell 脚本中的命令施加一些逻辑
流程控制或根据条件使脚本跳过某些命令。
if command
then
      commands
fi

 

if-then语句中,不管命令是否成功执行,你都只有一种选择。命令返回一个非零退出状态码,if-then-else语句能够执行另一组命令

 

8.2 嵌套if语句

可以使用 else 部分的另一种形式: elif 。这样就不用再书写多个 if-then 语句了。 elif 使
用另一个 if-then 语句延续 else 部分。

8.3  for循环语句

for 命令,允许你创建一个遍历一系列值的循环。
基本格式:
for var in list
do
        commands
done

 

 C语言风格的for命令

 8.4 while语句

while 命令某种意义上是 if-then 语句和 for 循环的混杂体。 while 命令允许定义一个要测试的命令,然后循环执行一组命令,只要定义的测试命令返回的是退出状态码 0 。它会在每次迭代的一开始测试 test 命令。 在 test 命令返回非零退出状态码时, while 命令会停止执行那组命令。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值