目录
前言
嵌入式技术,是一种将软硬件结合的技术,它以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
基于以上嵌入式的特性,我们常用Linux作为嵌入式操作系统,因为其具有开源、免费的特点,并且Linux可移植性强,系统内核可裁剪,支持x86、ARM、MIPS等众多架构的处理器。
一、Shell是什么?
1.1 Shell的基本概念
- shell直译是外壳,linux shell 就是linux的外壳,为用户提供使用Linux操作系统的接口。
-
shell 本质上是一个 命令解释器 ,从标准输入接收用户的命令,将命令进行解析传递给内核,内核根据命令,做出相应的动作。
1.2 Shell命令基本格式
Command [-Options] Argument1 Argument2 ...
指令 选项 参数1 参数2 ...
- Command:命令名称,Shell命令或程序,严格区分大小写,例如设置日期指令为date等;
- Options:命令选项,用于改变命令执行动作的类型,由“-”引导,可以同时带有多个选项;
- Argument:命令参数,指出命令作用的对象或目标,有的命令允许带多个参数。
注意:
- 一条命令的三要素之间用空格隔开;
- 若将多个命令在一行书写,用分号(;)将各命令隔开; 如果一条命令不能在一行写完,在行尾使
- 用反斜杠(\)标明该条命令未结束。
- 命令不带选项或参数时,通常意为使用默认选项或参数。
二、常用的Shell命令
2.1 目录操作与文件管理
2.1.1 ls
ls命令用于列出用户有权访问的任何目录的内容。
主要选项:
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-A 显示指定目录下所有子目录与文件,包括隐藏文件,但不列出“.”、“..”
-l 以列表格式来显示文件的详细信息,如文件型态、权限、拥有者、文件大小等资讯
-t 将文件依建立时间之先后次序列出
2.1.2 pwd
pwd命令用于显示用户在文件系统中的当前位置(绝对路径)。
2.1.3 cd
cd命令用于切换当前工作目录。
常用路径:
" / " 根目录
" . " 当前目录
" .. " 当前目录的上一级目录
" ~ " 用户主目录
2.1.4 mkdir
mkdir命令用于创建目录。
mkdir [ -p ] directory_name
其中,directory_name为要创建的目录名,并且不能是已有的目录,通常不允许嵌套创建子目录。
2.1.5 rmdir
rmdir命令删除空的目录。
rmdir [ -p ] directory_name
其中,directory_name为要删除的一个或多个目录名。
使用选项“-p”表示可以递归删除子目录,即多层目录。
需要说明的是,删除的目录必须为空目录,并且必须具有对该目录有写入权限。
2.1.6 touch
touch命令用于创建一个新文件。
touch [ filename ]
其中filename是文件名。
如果这个文件是已有文件,就改变这个文件的最后修改日期。
2.1.7 rm
用于在用户授权情况下,完成一个或多个文件/目录删除。
rm命令可以将目录下的子目录、文件全部删除。
对于链接文件,只是删除链接,原有文件保持不变。
rm [ -选项 ] [ TARGET ]
选项:-i 交互模式的删除操作。在删除目标文件之前将给出提示,要求用户确认,回答“y”表 示目标文件将被删除
-f 非交互模式的删除操作,忽略不存在的文件
-r 若源文件是一个目录,rm命令将递归地删除该目录下的所有子目录和文件
-v 显示详细的删除过程
TARGET表示目标文件,既可以是普通文件,也可以是目录。
rm命令支持多文件/目录删除,删除操作需要具有必要的权限,通常至少要对目标文件/目录具有写入权限。
注意:由于rm命令执行物理删除,一旦一个文件被删除,就不能恢复。如果以超级用户身份登录的话,用户使用rm命令可以删除整个文件系统,因此使用rm命令要非常小心。
2.1.8 cp
cp命令用于将给出的文件或目录拷贝到另一个文件或目录中。
cp [ -选项 ] [ SOURCE ] [ TARGET ]
选项:-a 该选项通常在拷贝目录时使用,保留链接、文件属性,并递归地拷贝目录
-d 拷贝时保留链接
-f 非交互模式的复制操作。覆盖已经存在的目标文件而不提示
-i 交互模式的复制操作,与-f选项相反。在覆盖目标文件之前会向用户确认
-p 除复制源文件内容外,还将其修改时间和访问权限也同时复制
-r 若源文件是一个目录,cp命令将递归地复制该目录下的所有子目录和文件
SOURCE表示源文件,TARGET表示目标文件。无论是源文件还是目标文件,既可以是普通文件,也可以是目录。cp命令支持将多个源文件复制到目标目录中。当然,复制操作需要具有必要的权限,通常至少要对源文件具有读取权限,对目标目录或文件具有写入权限。
2.1.9 mv
mv命令用来为文件或目录改名,或将文件或目录移入其它位置。
mv [ -选项 ] [ SOURCE ] [ TARGET ]
选项:-f 非交互模式的移动操作。覆盖已经存在的目标文件而不提示
-i 交互模式的移动操作。在覆盖目标文件之前会向用户确认
-v 显示详细的移动过程
SOURCE表示源文件,TARGET表示目标文件。无论是源文件还是目标文件,既可以是普通文件,也可以是目录。
2.1.10 cat
cat命令用于依次读取指定文件的内容,并打印到标准输出设备上。
cat [ -选项 ] [ FILENAME ]
选项:-v 用一种特殊形式显示控制字符,LFD与TAB除外
-T 将TAB显示为“^I”,只与“-v”选项同时使用
-E 在每行的末尾显示一个“$”符,只与“-v”选项同时使用
-n 由 1 开始对所有输出的行数编号
注意:由于在vi编辑模式下不太方便复制代码到其他程序中,所以此命令通常用于查看并复制代码内容。
2.1.11 find
find命令用来在指定目录下查找文件,任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。
find [ PATH ] [ -选项 ] [ 查找条件 ]
选项:-name “name” 文件名为“name”的文件
-size n 文件大小为n的文件
-type c 文件类型为type的文件
2.1.12 less/more
less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
less [ -选项 ] [ FILENAME ]
选项:-e 当文件显示结束后,自动离开
-i 忽略搜索时的大小写
-N 显示每行的行号
-s 显示连续空行为一行
more [ -选项 ] [ FILENAME ]
选项:-num 一次显示的行数
+num 从第 num 行开始显示
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
2.1.13 diff
diff命令以逐行的方式,比较文本文件的异同处。
如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
diff [ -选项 ] [ FILENAME1 ] [ FILENAME2 ]
选项:-c 显示全部内文,并标出不同之处
-y 以并列的方式显示文件的异同之处
-v 显示版本信息
-q 仅显示有无差异,不显示详细的信息
-W<宽度> 在使用-y参数时,指定栏宽
2.1.14 grep
grep命令用于查找文件里符合条件的字符串。
若不指定任何文件名称,或是所给予的文件名 -,则 grep 指令会从标准输入设备读取数据。
grep [ -选项] [ 条件 ] [ FILENAME ]
选项:-b 在显示符合样式的那一行之前,标示出该行第一个字符的编号
-c 计算符合样式的列数
-l 列出文件内容符合指定的样式的文件名称
-L 列出文件内容不符合指定的样式的文件名称
-n 在显示符合样式的那一行之前,标示出该行的列数编号
2.1.15 file
file命令用于辨识文件类型,如二进制文件、文本文件、目录文件、设备文件,或Linux中其他类型的文件。
file [ FILENAME ]
选项:-b 列出辨识结果时,不显示文件名称
-c 详细显示指令执行过程,便于排错或分析程序执行的情形
-L 直接显示符号连接所指向的文件的类别
-v 显示版本信息
2.1.16 head/tail
head命令用于显示文件或标准输入的前几行。用户通过查看文件前几行,就可以大体知晓文件内容,不必浏览整个文件。
tail命令用于显示文件或标准输入的最后几行。
head [ -num ] [ FILENAME ]
选项“-num”表示显示指定文件的前num行内容。如果单独使用head命令,默认显示10行的内容。如果没有目标文件,head命令就从标准输入读取内容。
tail [ +/-num ] [ FILENAME ]
选项+num表示从第num行以后开始显示;-num表示从距文件尾num行处开始显示。如果单独tail命令的话,默认显示末尾的10行内容。
2.1.17 sort
sort 命令用于将文本文件内容加以排序。
sort [ -选项 ] [ FILENAME ]
选项:-b 忽略每行前面开始出的空格字符
-c 检查文件是否已经按照顺序排序
-n 依照数值的大小排序
-k [field] 按指定的列进行排序
2.1.18 uniq
uniq命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq [ -选项 ] [ FILENAME ]
选项:-c 在每列旁边显示该行重复出现的次数
-d 仅显示重复出现的行列
-u 仅显示出一次的行列
2.1.19 ln
ln命令可以用于创建文件的链接文件。
ln -s [ SOURCE ] [ LINKNAME ]
其中,选项“-s”表示为创建软链接。在缺省情况下,创建硬链接。
参数source为目标文件,linkname为链接文件名。如果链接文件名已经存在但不是目录,将不做链接。目标文件可以是任何一个文件名,也可以是一个目录。
2.2 用户权限与属性
2.2.1 chmod
chmod是控制用户对文件的权限的命令。
只有文件所有者和超级用户可以修改文件权限。
chmod [ -选项 ] [ FILENAME ]
选项:八进制数(用来表示文件权限)
2.2.2 chown
chown用于设置文件所有者和文件关联组。
chown [ -选项 ] [ USER/GROUP ] [ FILENAME ]
2.2.3 chgrp
chgrp用于变更文件或目录的所属群组。
chgrp [ -选项 ] [ 所属群组 ] [ FILENAME ]
2.2.4 sudo
sudo以系统管理者的身份执行指令。
若操作权限不够,终端会提示权限不够,这时需在指令前面加上sudo。
sudo [ -选项 ] [ 指令 ]
2.3 备份压缩
2.3.1 gzip
gzip用于压缩或解压缩文件。
经gzip压缩过后,其名称后面会多出".gz"的扩展名。
gzip [ -选项 ] [ FILENAME ]
选项:-l 列出压缩文件的内容
-k 在压缩或解压时,保留输入文件
-d 将压缩文件进行解压缩
2.3.2 gunzip
gunzip用于解压文件。
事实上 gunzip 就是 gzip 的硬连接,因此不论是压缩或解压缩,都可通过 gzip 指令单独完成。
2.3.3 unzip
unzip用于解压缩zip文件。
unzip [ -选项 ] [ zip文件 ]
选项:-l 显示压缩文件内所包含的文件
-n 解压缩时不要覆盖原有的文件
2.3.4 bzip2
bzip2是.bz2文件的压缩程序,压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。
bzip2 [ -选项 ] [ FILENAME ]
选项:-d 执行解压缩
-k 保留原始文件
-c 将压缩与解压缩的结果送到标准输出
2.3.5 tar
tar用于备份文件。
tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
tar [ -选项 ] [ FILENAME ]
选项:-c 表示创建用来生成文件包
-x 表示提取,从文件包中提取文件
-t 可以查看压缩的文件
-z 使用gzip方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩
-j 使用bzip2方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩
-k 解开备份文件时,不覆盖已有的文件
-m 还原文件时,不变更文件的更改时间
-r 新增文件到已存在的备份文件的结尾部分
注:-zcvf 表示打包并调用gzip压缩,-zxvf 表示调用gzip解压缩。
同理,也可调用bzip2处理。
2.4 网络通信
2.4.1 ifconfig
ifcofig用于显示或设置网络设备的状态。
常用来查看设置Ip地址。
ifconfig [ -选项 ]
选项:-a 显示所有网卡接口
-up 激活网卡接口
-down 关闭网卡接口
-add<ip> 设置网络设备IPv6的IP地址-del<ip> 删除网络设备IPv6的IP地址
2.4.2 ping
ping用于检测主机联网状态。
执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
ping [ -选项 ]
选项:-d 使用Socket的SO_DEBUG功能
-c<次数> 设置完成要求回应的次数
2.5 系统维护与磁盘管理
2.5.1 ps
ps用于显示当前进程的状态,类似于 windows 的任务管理器。
ps [ -选项 ]
选项:-A 列出所有的进程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
注:查看指定进程信息时,常用:ps -ef | 关键字
2.5.2 top
top用于动态实时显示各进程的信息。
top [ -选项 ]
选项:-d 改变显示的更新速度
-i 不显示任何闲置 (idle) 或无用 (zombie) 的进程
-n 更新的次数,完成后将会退出 top
2.5.3 kill
kill字面意思是终止执行中的程序或工作,实际上是向指定进程发送一个信号。
一般配合ps命令查看进程编号PID,然后发送信号到指定PID
kill [ -选项/信号 ] [ 进程 ]
选项:-l 列出全部的信号名称
常用信号:1 (HUP):重新加载进程。
9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。
2.5.4 df
df用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
df [ -选项 ]
选项:-a 包含所有的具有 0 Blocks 的文件系统
-h 使用常见可读的格式查看,如kb、mb等
2.5.5 du
du用于显示目录或文件的大小(默认显示当前目录文件)。
du [ -选项 ] [ 目录 ]
选项:-a 显示目录中个别文件的大小
-b 以byte为单位显示目录或文件大小
-k 以1024 bytes为单位显示目录或文件大小
-h 以常见的K,M,G为单位,提高信息的可读性