Shell使用与语法规则

简介: Shell使用与语法规则

1.Shell 操作
1.1 Shell 简介
学习 linux 的时候会频繁的看到 Shell 这个词语?那么什么是 Shell 呢?网上搜索一下,各

种专业的解释一堆,但是对于第一次接触 Linux 的人来说这些专业的词语只会让人更晕。简单

的说 Shell 就是敲命令。国内把 Linux 下通过命令行输入命令叫做“敲命令”,国外人玩的比较

洋气,人家叫做“Shell”。因此以后看到 Shell 这个词语第一反应就是在终端中敲命令,将多个

Shell 命令按照一定的格式放到一个文本中,那么这个文本就叫做 Shell 脚本。

严格意义上来讲, Shell 是一个应用程序,它负责接收用户输入的命令,然后根据命令做出

相应的动作, Shell 负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成

相应的工作,然后将结果反馈给应用层或者用户。

1.2 Shell 基本操作
前面我们说 Shell 就是“敲命令”,那么既然是命令,那肯定是有格式的, Shell 命令的格式

如下:

command -options [argument]

command: Shell 命令名称。

options:选项,同一种命令可能有不同的选项,不同的选项其实现的功能不同。

argument: Shell 命令是可以带参数的,也可以不带参数运行。

同样以命令“ls”为例,下面“ls”命令的三种不同格式其结果也不同:

ls

ls – l

ls /usr

这三种命令的运行结果如图1.2.1 所示:

图 1.2.1 ls 命令

在图 1.2.1 中“ls”命令用来打印出当前目录下的所有文件和文件夹,而“ls -l”同样是

打印出当前目录下的所有文件和文件夹,但是此命令会列出所有文件和文件夹的详细信息,比

如文件大小、拥有者、创建日期等等。最有一个“ls /usr”是用来打印出目录“/usr”下的所有

文件和文件夹。

Shell 命令是支持自动补全功能的,因为 Shell 命令非常多,如果不作自动补全的话就需要

用户去记忆这些命令的全部字母。使用自动补全功能以后我们只需要输入命令的前面一部分字

母,然后按下 TAB 键,如果只有一个命令匹配的话就会自动补全这个命令剩下的字母。如果有

多个命令匹配的话系统就会发出报警声音,此时在按下一次 TAB 键就会列出所有匹配的命令,

比如我们输入字母“if”,然后按下 TAB 键,结果如图1.2.2 所示:

图1.2.2 “if”开始的命令

从图 1.2.2 可以看出,以“if”开头的命令有 5 个,我们以“ifconfig”为例,此命令是用

来查看网卡信息的,我们重新输入“ifc”然后在按一下 TAB 键,就会自动补全出“ifconfig”命

令,因为以“ifc”开头的命令只有一个,结果如图 1.2.3 所示:

图 1.2.3 ifconfig 命令结果

1.3 常用 Shell 命令
我们做嵌入式开发用的最多就是 Shell 命令, Shell 命令是所有的 Linux 系统发行版所通用

的,并不是说我在 Ubuntu 下学会了 Shell 命令,换另外一个 Linux 发行版操作系统以后就没用

了(不同的发行版 Linux 系统可能会自定义一些命令)。本节我们先来介绍一些 Shell 下常用的命

令:

1.3.1 目录信息查看命令 ls
文件浏览是最基本的操作了, Shell 下文件浏览命令为 ls,格式如下:

ls [选项] [路径]

ls 命令主要用于显示指定目录下的内容,列出指定目录下包含的所有的文件以及子目录,

它的主要参数有:

-a 显示所有的文件以及子目录,包括以“.”开头的隐藏文件。

-l 显示文件的详细信息,比如文件的形态、权限、所有者、大小等信息。

-t 将文件按照创建时间排序列出。

-A 和-a 一样,但是不列出“.” (当前目录)和“..” (父目录)。

-R 递归列出所有文件,包括子目录中的文件。

Shell 命令里面的参数是可以组合在一起用的,比如组合“-al”就是显示所有文件的详细信

息,包括以“.”开头的隐藏文件, ls 命令使用如图 1.3.1 所示:

图1.3.1 ls 命令演示

注意图 2.2.4.1 中 tmp 文件夹是我为了演示方便,自己创建的,里面的文件 a, b 和 c 也是

我创建的,关于文件夹和文件的创建后面会详细的讲解。

1.3.2目录切换命令 cd
要想在 Shell 中切换到其它的目录,使用的命令是 cd,命令格式如下:

cd [路径]

路径就是我们要进入的目录路径,比如下面所示操作:

cd / //进入到根目录“/”下, Linux 系统的根目录为“/” ,

cd /usr //进入到目录“/usr”里面。

cd .. //进入到上一级目录。

cd ~ //切换到当前用户主目录

比如我们要进入到目录“/usr”下去,并且查看“/usr”下有什么文件,操作如图 1.3.2 所

示:

图 1.3.2 cd 命令演示

在图 1.3.2 中,我们先使用命令“cd /usr”进入到“/usr”目录下,然后使用“ls”命令

显示“/usr”目录下的所有文件。仔细观察图 1.3.2 可以看到,当我们切换到其它目录以后在

符号“$”前面就会以蓝色的字体显示出当前目录名字,如图 1.3.3 所示:

图 1.3.3 目录路径显示

1.3.3 当前路径显示命令 pwd
pwd 命令用来显示当前工作目录的绝对路径,不需要任何的参数,使用如图 1.3.4 所示:

1.3.4系统信息查看命令 uname
要查看当前系统信息,可以使用命令 uname,命令格式如下:

uname [选项]

可选的选项参数如下:

-r 列出当前系统的具体内核版本号。

-s 列出系统内核名称。

-o 列出系统信息。

使用如图 1.3.5 所示:

图 1.3.5 uanme 命令操作

1.3.5清屏命令 clear
clear 命令用于清除终端上的所有内容,只留下一行提示符。

1.3.6切换用户执行身份命令 sudo
Ubuntu(Linux)是一个允许多用户的操作系统,其中权限最大的就是超级用户 root,有时候

我们执行一些操作的时候是需要用 root 用户身份才能执行,比如安装软件。通过 sudo 命令可以

使我们暂时将身份切换到 root 用户。当使用 sudo 命令的时候是需要输入密码的,这里要注意输

入密码的时候是没有任何提示的!命令格式如下:

sudo [选项] [命令]

选项主要参数如下:

-h 显示帮助信息。

-l 列出当前用户可执行与不可执行的命令

-p 改变询问密码的提示符。

假如我们现在要创建一个新的用户 test,创建新用户的命令为“adduser”,创建新用户的权

限只有 root 用户才有,我们在装系统的时候创建的那个用户是没有这个权限的,比如我的

“ubuntu”用户。所以创建新用户的话需要使用“sudo”命令以 root 用户执行“adduser”

这个命令,如图 1.3.6 所示:

图 1.3.6 sudo 命令演示

在图 1.3.6 中,我们一开始直接使用“adduser test”命令添加用户的时候提示我们“adduser:

只有 root 才能将用户或组添加到系统。”所以我们要在前面加上“sudo”命令,表示以 root 用

户执行 adduser 操作。

1.3.7添加用户命令 adduser
在讲解 sudo 命令的时候我们已经用过命令“adduser”,此命令需要 root 身份去运行。命令

格式如下:

adduser [参数] [用户名]

常用的参数如下:

-system 添加一个系统用户

-home DIR DIR 表示用户的主目录路径

-uid ID ID 表示用户的 uid。

-ingroup GRP 表示用户所属的组名。

adduser 的使用我们前面已经演示过了,大家可以试着再添加一个用户。

1.3.8删除用户命令 deluser
前面讲了添加用户的命令,那肯定也有删除用户的命令,删除用户使用命令“deluser”,命

令参数如下:

deluser [参数] [用户名]

主要参数有:

-system 当用户是一个系统用户的时候才能删除。

-remove-home 删除用户的主目录

-remove-all-files 删除与用户有关的所有文件。

-backup 备份用户信息

同样的,命令“deluser”也要使用“sudo”来以 root 用户运行,以删除我们前面创建的用

户 test 为例, deluser 使用如图 1.3.7 所示:

图 1.3.7 命令 deluser 演示

1.3.9切换用户命令 su
前面在讲解命令“sudo”的时候说过,“sudo”是以 root 用户身份执行一个命令,并没有更

改当前的用户身份,所有需要 root 身份执行的命令都必须在前面加上“sudo”。命令“su”可以

直接将当前用户切换为 root 用户,切换到 root 用户以后就可以尽情的进行任何操作了!因为你

已经获得了系统最高权限,在 root 用户下,所有的命令都可以无障碍执行,不需要在前面加上

“sudo”,“su”命令格式如下:

su [选项] [用户名]

常用选项参数如下:

-c –command 执行指定的命令,执行完毕以后恢复原用户身份。

-login 改变用户身份,同时改变工作目录和 PATH 环境变量。

-m 改变用户身份的时候不改变环境变量

-h 显示帮助信息

以切换到 root 用户为例,使用如图 1.3.8 所示:

图 1.3.8 su 命令演示

在图 1.3.8 中,先使用命令“sudo su”切换到 root 用户, su 命令不写明用户名的话默认切

换到 root 用户。然后输入密码,密码正确的话就会切换到 root 用户,可以看到切换到 root 用户

以后提示符的“@”符号前面的用户名变成了“root”,表示当前的用户是 root 用户。并且以“#”

结束。

注意!!由于 root 用户权限太大,稍微不注意就可能删除掉系统文件,导致系统奔溃,因此

强烈建议大家,不要以 root 用户运行 Ubuntu。当要用到 root 身份执行某些命令的时候使用“sudo”

命令即可。

要切换回原来的用户,使用命令“sudo su 用户名”即可,比如我要从 root 切换回 zuozhongkai

这个用户,操作如图 1.3.9 所示:

图 1.3.9 切换回原来用户

1.3.10 显示文件内容命令 cat
查看文件内容是最常见的操作了,在 windows 下可以直接使用记事本查看一个文本文件内

容, linux 下也有类似记事本的软件,叫做 gedit,找到一个文本文件,双击打开,默认使用的就

是 gedit,如图1.3.10 所示:

图 1.3.10 gedit 打开文档

我们现在讲解的是 Shell 命令,那么 Shell 下有没有办法读取文件的内容呢?肯定有的,那

就是命令“cat”,命令格式如下:

cat [选项] [文件]

选项主要参数如下:

-n 由 1 开始对所有输出的行进行编号。

-b 和-n 类似,但是不对空白行编号。

-s 当遇到连续两个行以上空白行的话就合并为一个行空白行。

比如我们以查看文件“/etc/environment”的内容为例,结果如图 1.3.11 所示:

图 1.3.11 命令 cat 演示

1.3.11 显示和配置网络属性命令 ifconfig
ifconfig 是一个跟网络属性配置和显示密切相关的命令,通过此命令我们可以查看当前网络

属性,也可以通过此命令配置网络属性,比如设置网络 IP 地址等等,此命令格式如下:

ifconfig interface options | address

主要参数如下:

interface 网络接口名称,比如 eth0 等。

up 开启网络设备。

down 关闭网络设备。

add IP 地址,设置网络 IP 地址。

netmask add 子网掩码。

命令 ifconfig 的使用如图 1.3.12 所示:

图 1.3.12 ifconfig 命令演示

在图 1.3.12 中有两个网卡: ens33 和 lo, ens33 是我的电脑实际使用的网卡, lo 是回测网
卡。可以看出网卡 ens33 的 IP 地址为 192.168.31.235,我们使用命令“ifconfig”将网卡 ens33 的
IP 地址改为 192.168.31.20,操作如图1.3.13 所示:

图 1.3.12 ifconfig 命令演示

从图 1.3.13 可以看出,我在使用命令“ifconfig”修改网卡 ens33 的 IP 地址的时候使用了

“sudo”,说明在 Ubuntu 下修改网卡 IP 地址是需要 root 用户权限的。当修改完以后使用命令

“ifconfig ens33”再次查看网卡 ens33,发现网卡 ens33 的 IP 地址变成了 192.168.31.20

1.3.12系统帮助命令 man
Ubuntu 系统中有很多命令,这些命令都有不同的格式,不同的格式对应不同的功能,要完

全记住这些命令和格式几乎是不可能的,必须有一个帮助手册,当我们需要了解一个命令的详

细信息的时候查阅这个帮助手册就行了。 Ubuntu 提供了一个命令来帮助用户完成这个功能,那

就是“man”命令,通过“man”命令可以查看其它命令的语法格式、主要功能、主要参数说明

等, “man”命令格式如下:

man [命令名]

比如我们要查看命令“ifconfig”的说明,输入“man ifconfig”即可,如图 2.2.4.14 所示:

图 21.3.14 man 命令演示

在终端中输入图 1.3.14 所示的命令,然后点击回车键就会打开“ifconfig”这个命令的详

细说明,如图1.3.15 所示:

图 1.3.15 命令“ifconfig”详细介绍信息

图1.3.15 就是命令“ifconfig”的详细介绍信息,按“q”键退出到终端。

1.3.13 系统重启命令 reboot
通过点击 Ubuntu 主界面右上角的齿轮按钮来选择关机或者重启系统,同样的我们也可以

使用 Shell 命令“reboot”来重启系统,直接输入命令“reboot”然后点击回车键即可。

1.3.14系统关闭命令 poweroff
使用命令“reboot”可以重启系统,使用命令“poweroff”就可以关闭系统,在终端中输入

命令“poweroff”然后按下回车键即可关闭 Ubuntu 系统。

1.3.15 软件安装命令 install
截至目前,我们都没有讲过 Ubuntu 下如何安装软件,因为 Ubuntu 安装软件不像 Windows

下那样,直接双击.exe 文件就开始安装了。 Ubuntu 下很多软件是需要先自行下载源码,下载源

码以后自行编译,编译完成以后使用命令“intsall”来安装。当然 Ubuntu 下也有其它的软件安

装方法,但是用的最多的就是自行编译源码然后安装,尤其是嵌入式 Linux 开发。命令“install”

格式如下:

install [选项]... [-T] 源文件 目标文件

或: install [选项]... 源文件... 目录

或: install [选项]... -t 目录 源文件...

或: install [选项]... -d 目录...

“install”命令是将文件(通常是编译后的文件)复制到目的位置,在前三种形式中,将源文

件复制到目标文件或将多个源文件复制到一个已存在的目录中同时设置其所有权和权限模式。

在第四种形式会创建指定的目录。命令“install”通常和命令“apt-get”组合在一起使用的,关

于“apt-get”命令我们稍后会讲解。

以上就是 Shell 最基本一些命令,还有一些其它的命令我们在后面在讲解,循序渐进嘛。

目录
相关文章
|
3月前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
85 18
|
人工智能 Shell Linux
shell基础语法
shell基础语法
89 1
|
7月前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
107 1
|
6月前
|
Shell Linux
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
57 0
|
7月前
|
存储 Unix Shell
shell语法总结
以上是Shell脚本语言的基本要点,它可以帮助你在命令行中自动化执行任务和操作系统。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
41 3
|
7月前
|
Shell Perl
shell学习(十) 【shell awk基本语法】
shell学习(十) 【shell awk基本语法】
42 1
|
7月前
|
监控 Shell
shell学习(五) 【循环控制continue,break、while 语法】
shell学习(五) 【循环控制continue,break、while 语法】
42 0
|
7月前
|
Shell 应用服务中间件 开发工具
shell 学习(二) shell语法【特殊字符、转义字符、shell 字体颜色和字体背景】
shell 学习(二) shell语法【特殊字符、转义字符、shell 字体颜色和字体背景】
40 0
|
7月前
|
Shell
shell 学习(四)【if语法 for循环控制】
shell 学习(四)【if语法 for循环控制】
49 0
|
Shell
Shell while 语法(: 死循环)
Shell while 语法(: 死循环)
306 0