在学习Ubuntu系统时,Shell操作是必不可少的知识。本篇文章是记录我学习Linux系统时,Ubutu下的Shell操作,希望我的分享对大家有所帮助!
目录
在我学习Linux的时候,经常会看到Shell这种操作,为了弄明白它到底是什么,我上网查阅了很多资料,但是得到的都是各种高深的专业解释。一时半会儿搞得头晕。慢慢地我于是有了自己的理解——
所谓的Shell操作,其实就是敲命令!国外人才会洋里洋气地叫其Shell。所以,当我再次看到Shell操作时,我头脑李想起来的就是:在终端敲命令!净多个Shell命令按照一定的格式放在一个文本里,那么这个文本就是所谓的Shell脚本!
从一些资料里得知:严格来讲,Shell是一个应用程序,它负责接受用户输入的命令。然后根据用户的命令做出相应的动作。
更重要的是,Shell负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成相应的工作。最后将结果反馈给应用层或者用户。
上面这段话很重要,希望读者仔细揣摩!!!
Shell既然是敲命令,那敲出的命令肯定是有一定的格式的。Shell命令的格式如下:
comand? ? ? ? ?-options? ? ? ? ?[ argument ]
我对上面的命令格式解释一下:
1、comand:Shell命令名称;
2、options:选项,同一种命令可能有不同的选项,不同的选项对应着不同的功能;
3、argument:Shell命令是可以带参数的,也可以不带参数运行;
举个简单的例子:
同样以命令“ls”为例,下面“ls”命令的三种不同格式其结果也不同:
这三种命令的运行结果是不同的:
在图中“ls”命令用来打印出当前目录下的所有文件和文件夹,而“ls -l”同样是打印出当前目录下的所有文件和文件夹,但是此命令会列出所有文件和文件夹的详细信息,比如文件大小、拥有者、创建日期等等。最有一个“ls /usr”是用来打印出目录“/usr”下的所有文件和文件夹。
Shell 命令是支持自动补全功能的,因为 Shell 命令非常多,如果不作自动补全的话就需要
用户去记忆这些命令的全部字母。使用自动补全功能以后我们只需要输入命令的前面一部分字母,然后按下 TAB 键,如果只有一个命令匹配的话就会自动补全这个命令剩下的字母。如果有多个命令匹配的话系统就会发出报警声音,此时在按下一次 TAB 键就会列出所有匹配的命令,比如我们输入字母“if”,然后按下 TAB 键,结果如图所示:从图中可以看出,以“if”开头的命令有 5 个,我们以“ifconfig”为例,此命令是用来查看网卡信息的,我们重新输入“ifc”然后在按一下 TAB 键,就会自动补全出“ifconfig”命令,因为以“ifc”开头的命令只有一个,结果如图所示:
我们做嵌入式开发用的最多就是 Shell 命令, Shell 命令是所有的 Linux 系统发行版所通用
的,并不是说我在 Ubuntu 下学会了 Shell 命令,换另外一个 Linux 发行版操作系统以后就没用了(不同的发行版 Linux 系统可能会自定义一些命令)。下面我先来介绍一些 Shell 下常用的命令:
文件浏览时Linux终端下的最基本的操作了。Shell下的文件浏览命令格式如下:
ls? ? [ 选项 ]? ? [ 路径?]
ls命令主要用于显示指定目录下的内容,列出指定目录下包含的所有文件及子目录,它的主要参数有:
-a? ? 显示所有文件以及子目录,包括以“ . ”开头的隐藏文件。
-l? ? ?显示文件的详细信息,你如文件的形态、权限、所有者、大小等信息。
-t? ? ?将文件的创建信息排序列出。
-A? ? 和-a 一样,但是不列出“.” (当前目录)和“..” (父目录)。
-R? ? 递归列出所有文件,包括子目录中的文件。
Shell 命令里面的参数是可以组合在一起用的,比如组合“-al”就是显示所有文件的详细信息,包括以“.”开头的隐藏文件, ls 命令使用如图所示:
?
要想在 Shell 中切换到其它的目录,使用的命令是 cd,命令格式如下:
cd? ? ?[ 路径 ]
路径就是我们要进入的目录路径,比如下面所示操作:
举个简单的例子:?比如我们要进入到目录“/usr”下去,并且查看“/usr”下有什么文件,操作如图所示:
我们先使用命令“cd /usr”进入到“/usr”目录下,然后使用“ls”命令显示“/usr”目录下的所有文件。仔细观察图可以看到,当我们切换到其它目录以后在符号“$”前面就会以蓝色的字体显示出当前目录名字,如图所示:
pwd 命令用来显示当前工作目录的绝对路径,不需要任何的参数,使用如图所示:
要查看当前系统信息,可以使用命令 uname,命令格式如下:
uname? ? ?[ 选项 ]
[ 选项 ]的参数可以是:?
-r? ? ? 列出当前系统的具体内核版本号
-s? ? ?列出系统内核名称
-o? ? ?列出系统信息
使用实列:?
clear 命令用于清除终端上的所有内容,只留下一行提示符。
Ubuntu(Linux)是一个允许多用户的操作系统,其中权限最大的就是超级用户 root,有时候
我们执行一些操作的时候是需要用 root 用户身份才能执行,比如安装软件。通过 sudo 命令可以使我们暂时将身份切换到 root 用户。当使用 sudo 命令的时候是需要输入密码的,这里要注意输入密码的时候是没有任何提示的!命令格式如下:
sudo? ? ?[ 选项 ]? ? ? [?命令 ]
选项的主要参数是:?
-h? ? ? ? 显示帮助信息
-l? ? ? ? ?列出当前用户可执行与不可执行的命令
-p? ? ? ? 改变询问密码的提示符
假如我们现在要创建一个新的用户 test,创建新用户的命令为“adduser”,创建新用户的权
限只有 root 用户才有,我们在装系统的时候创建的那个用户是没有这个权限的,比如我的
“zxf”用户。所以创建新用户的话需要使用“sudo”命令以 root 用户执行“adduser”这个命令,如图所示:
?
上面使用sudo命令时已经了解过“adduser”指令,此命令需要用户使用root身份去进行。命令格式如下:
adduser? ? [ 参数?]? ?[ 用户名 ]
常用的参数如下:
-system? ? ? ? ? ? ? ? ? ? ? ? ? ?添加一个系统用户
-hme DIR? ? ? ? ? ? ? ? ? ? ? ? ?DIR表示用户的主目录路径
-uid ID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ID表示用户的uid
-ingroup GRP? ? ? ? ? ? ? ? ? 表示用户所属的组名
前面讲了添加用户的命令,那肯定也有删除用户的命令,删除用户使用命令“deluser”,命
令参数如下:
geluser? ? ?[ 参数 ]? ?[ 用户名 ]
主要参数有:?
-system? ? ? ? ? ? ? ? ? ?当删除用户时一个系统用户时才能删除
-remove-home? ? ? ? 删除用户的主目录
-remove-all-files? ? ?删除与用户有关的所有文件? ? ??
-backup? ? ? ? ? ? ? ? ? ?备份用户信息
命令“deluser”也需要使用“sudo”来以 “root” 用户运行,这里删除之前创建的用户test为例:
前面在讲解命令“sudo”的时候说过,“sudo”是以 root 用户身份执行一个命令,并没有更改当前的用户身份,所有需要 root 身份执行的命令都必须在前面加上“sudo”。命令“su”可以直接将当前用户切换为 root 用户,切换到 root 用户以后就可以尽情的进行任何操作了!因为你已经获得了系统最高权限,在 root 用户下,所有的命令都可以无障碍执行,不需要在前面加上“sudo”,“su”命令格式如下:
su? ? ? ? [ 选项 ]? ?[ 用户名?]
常用参数如下:
-c -command? ? ? ? ? ? ? ? ?执行指定的命令,执行完毕以后恢复原用户身份。
-login? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 改变用户身份,同时改变工作目录和PATH环境变量。
-m? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?改变用户身份的时候不改变环境变量
-h? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?显示帮助信息
以切换到root用户为例,使用如图所示:在图中,先使用命令“sudo su”切换到 root 用户, su 命令不写明用户名的话默认切换到 root 用户。然后输入密码,密码正确的话就会切换到 root 用户,可以看到切换到 root 用户以后提示符的“@”符号前面的用户名变成了“root”,表示当前的用户是 root 用户。并且以“#”结束。
注意!!由于 root 用户权限太大,稍微不注意就可能删除掉系统文件,导致系统奔溃,因此
强烈建议大家,不要以root 用户运行 Ubuntu。当要用到root 身份执行某些命令的时候使用“sudo”命令即可。
要切换回原来的用户,使用命令“sudo su 用户名”即可。
查看文件内容是最常见的操作了,在 windows 下可以直接使用记事本查看一个文本文件内
容, linux 下也有类似记事本的软件,叫做 gedit,找到一个文本文件,双击打开,默认使用的就是 gedit,如图所示:
我们现在讲解的是 Shell 命令,那么 Shell 下有没有办法读取文件的内容呢?肯定有的,那
就是命令“cat”,命令格式如下:cat? ? ? ? ? [ 选项?]? ? ? ? ? ?[ 文件?]?
主要参数如下:?
-n? ? ? ? ? ? ? ? ? ? ? ?由1开始对所有输出的行进行编号。
-b? ? ? ? ? ? ? ? ? ? ? ?和-n类似,但是不对空白行编号。
-S? ? ? ? ? ? ? ? ? ? ? ?当遇到连续两个行以上空白行的话就合并为一个行空白行。
比如我们以查看文件“/etc/environment”的内容为例,结果如图所示:
ifconfig 是一个跟网络属性配置和显示密切相关的命令,通过此命令我们可以查看当前网络属性,也可以通过此命令配置网络属性,比如设置网络 IP 地址等等,此命令格式如下:
ifconfig? ? ? interface? ? options | address
主要的参数如下:?
interface? ? ? ? ? ? ? ?网络接口名称,比如eth0等。
up? ? ? ? ? ? ? ? ? ? ? ? ? 开启网络设备。
down? ? ? ? ? ? ? ? ? ? ?关闭网络设备。
add? ? ? ? ? ? ? ? ? ? ? ? IP地址,设置网络IP地址。netmask add? ? ? ? ?子网掩码。
Ubuntu 系统中有很多命令,这些命令都有不同的格式,不同的格式对应不同的功能,要完
全记住这些命令和格式几乎是不可能的,必须有一个帮助手册,当我们需要了解一个命令的详细信息的时候查阅这个帮助手册就行了。 Ubuntu 提供了一个命令来帮助用户完成这个功能,那就是“man”命令,通过“man”命令可以查看其它命令的语法格式、主要功能、主要参数说明等。“man”的命令格式如下:
man? [ 命令名?]打开“ifconfig”这个命令的详细说明
通过点击 Ubuntu 主界面右上角的齿轮按钮来选择关机或者重启系统,同样的我们也可以
使用 Shell 命令“reboot”来重启系统,直接输入命令“reboot”然后点击回车键即可,如图所示:
使用命令“reboot”可以重启系统,使用命令“poweroff”就可以关闭系统,在终端中输入命令“poweroff”然后按下回车键即可关闭 Ubuntu 系统,如图所示:
截至目前,我们都没有讲过 Ubuntu 下如何安装软件,因为 Ubuntu 安装软件不像 Windows下那样,直接双击.exe 文件就开始安装了。 Ubuntu 下很多软件是需要先自行下载源码,下载源码以后自行编译,编译完成以后使用命令“intsall”来安装。当然 Ubuntu下也有其它的软件安装方法,但是用的最多的就是自行编译源码然后安装,尤其是嵌入式Linux开发。命令"install”格式如下:
“install”命令是将文件(通常是编译后的文件)复制到目的位置,在前三种形式中,将源文件复制到目标文件或将多个源文件复制到一个已存在的目录中同时设置其所有权和权限模式。在第四种形式会创建指定的目录。命令“install”通常和命令“apt-get”组合在一起使用的,关于“apt-get”命令大家可以看我后面更新的内容。
以上就是 Shell 最基本一些命令,记录至此,相信我的分享会给你带来帮助!
?