嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二)linux常用命令(中)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二)linux常用命令

bzip2


bzip2的常用选项:

-k(keep)  在压缩或解压时,保留输入文件; 
-d(decompress)  将压缩文件进行解压缩;


1) 压缩文件

$ bzip2 -k mypwd.1 得到一个.bz2后缀的压缩文。


2) 解压文件

$ bzip2 -kd mypwd.1.bz2


注意:

1)如果bzip2不加任何选项,此时为压缩

压缩完该文件会生成后缀为.bz2的压缩文件, 并删除原来的文件。

所以说,推荐使用bzip2 -k 来压缩文件,这样可以保留原来的文件。


2)bzip2只能压缩单个文件,不能压缩目录。


单个文件的压缩使用gzip或bzip2, 压缩有两个参数:

1)压缩时间

2)压缩比。

一般情况下,小文件使用gzip来压缩,大文件使用bzip2来压缩。bzip2的的压缩率更高。


tar


tar常用选项:

-c(create):表示创建用来生成文件包 。
-x:表示提取,从文件包中提取文件。
-t:可以查看压缩的文件。
-z:使用gzip方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。
-j:使用bzip2方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。 
-v(verbose):详细报告tar处理的信息。
-f(file):表示文件,后面接着一个文件名。 -C <指定目录> 解压到指定目录。


例1:tar打包、gzip压缩

1)把目录dira压缩、打包为dira.tar.gz文件:

$ tar czvf 压缩文件名 目录名
$ tar czvf dira.tar.gz dira


注意:“tar –czvf”与“tar czvf”是一样的效果,所以说,后面统一取消“-”。


2)查看压缩文件:

$ tar tvf  dira.tar.gz


3) 解压文件,可以用-C 指定解压到哪个目录:

$ tar xzvf dira.tar.gz                 //解压到当前目录 
$ tar xzvf dira.tar.gz -C /home/book   //解压到/home/book。


例2:tar打包、bzip2压缩

1)把目录dira压缩、打包为dira.tar.bz2文件

$ tar cjvf dira.tar.bz2 dira


2)查看压缩文件

$ tar tvf dira.tar.bz2


3)解压文件,可以用-C 指定解压到哪个目录

$ tar xjvf dira.tar.bz2                   //解压到当前目录:  
$ tar xjvf dira.tar.bz2 -C /home/book     //解压到/home/book


3.3.6 网络命令


ifconfig


查看网络、设置IP。ifconfig常用选项:


-a :显示所有网卡接口

up:激活网卡接口

down:关闭网卡接口

address:xxx.xxx.xxx.xxx,IP地址


示例:

1)ifconfig:查看当前正在使用的网卡

$ ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.137  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::4f45:59fb:ddb7:c274  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:ab:1d:05  txqueuelen 1000  (Ethernet)
    RX packets 998794  bytes 176687882 (176.6 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 801210  bytes 138020387 (138.0 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


2)ifconfig -a:查看所有网卡

$ ifconfig -a
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.137  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::4f45:59fb:ddb7:c274  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:ab:1d:05  txqueuelen 1000  (Ethernet)
    RX packets 998889  bytes 176699569 (176.6 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 801287  bytes 138033739 (138.0 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=8<LOOPBACK>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 51460  bytes 3249553 (3.2 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 51460  bytes 3249553 (3.2 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


3)设置网IP:

$ sudo ifconfig ens160 192.168.1.137


route和DNS


确保Windows和Ubuntu的网络能互相ping通之后,如果Ubuntu无法上网,原因通常有2个:路由没设置好,DNS没设置好。


如果执行以下命令不成功,表示路由没设置好:

$ ping  8.8.8.8
connect: Network is unreachable


如果“ping 8.8.8.8”成功,但是“ping www.baidu.com”不成功,则是DNS没设置好:

$ ping www.baidu.com
ping: unknown host www.baidu.com


DNS的设置比较简单,8.8.8.8是好记好用的DNS服务器,修改Ubuntu中的/etc/resolv.conf文件,内容如下:

nameserver  8.8.8.8


路由信息使用route命令查看,其输出信息可以参考链接:

https://akaedu.github.io/book/ch36s05.html


摘录如下:

假设某主机上的网络接口配置和路由表如下:

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C2:8D:7E
      inet addr:192.168.10.223  Bcast:192.168.10.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:100
      RX bytes:0 (0.0 b)  TX bytes:420 (420.0 b)
      Interrupt:10 Base address:0x10a0
eth1      Link encap:Ethernet  HWaddr 00:0C:29:C2:8D:88
      inet addr:192.168.56.136  Bcast:192.168.56.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:603 errors:0 dropped:0 overruns:0 frame:0
      TX packets:110 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:100
      RX bytes:55551 (54.2 Kb)  TX bytes:7601 (7.4 Kb)
      Interrupt:9 Base address:0x10c0
lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:37 errors:0 dropped:0 overruns:0 frame:0
      TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:3020 (2.9 Kb)  TX bytes:3020 (2.9 Kb)
$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    *               255.255.255.0   U     0      0        0 eth0
192.168.56.0    *               255.255.255.0   U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         192.168.10.1     0.0.0.0         UG    0      0        0 eth0


上述route命令输出信息中各项的含义请看下表:

Destination 目标网段或者主机
Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码
Flags 标记。一些可能的标记如下:
  U - 路由是活动的
  H - 目标是一个主机
  G - 路由指向网关
  R - 恢复动态路由产生的表项
  D - 由路由的后台程序动态地安装
  M - 由路由的后台程序修改
  ! - 拒绝路由
Metric  路由距离,到达指定网络所需的中转数
Ref 路由项引用次数
Use 此路由项被路由软件查找的次数
Iface 该路由表项对应的输出接口


在上面的例子中,这台主机有两个网络接口:

① 一个网络接口连到192.168.10.0/24网络
② 另一个网络接口连到192.168.56.0/24网络。


如果要发送的数据包的目的地址是192.168.56.3,跟第一行的子网掩码做与运算得到192.168.56.0,与第一行的目的网络地址不符,再跟第二行的子网掩码做与运算得到192.168.56.0,正是第二行的目的网络地址,因此从eth1接口发送出去,由于192.168.56.0/24正是与eth1接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转发。


如果要发送的数据包的目的地址是202.10.1.2,跟前三行路由表条目都不匹配,那么就要按缺省路由条目,从eth0接口发出去,首先发往192.168.10.1路由器,再让路由器根据它的路由表决定下一跳地址。


可以使用route命令管理路由。

示例:

1)添加路由:首先得确定网关IP,假设为192.168.1.1

$ sudo  route  add  default  gw  192.168.1.1
$ ping 8.8.8.8   // 验证
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=19.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=19.8 ms


2)删除路由:

$ sudo  route  del  default  gw  192.168.1.1


3.3.7 vi编辑器


vi是一个命令,也是一个命令行下的编辑器,它有如下功能:

a. 打开文件、新建文件、保存文件

b. 光标移动

c. 文本编辑

d. (多行间|多列间)复制、粘贴、删除

e. 查找和替换


很多人不习惯在命令行下编辑文件,实际开发中也不会经常在命令行下编辑文件。但是在Linux系统中对文件做些简单修改时,使用vi命令的效率非常高。并且在很多时候,比如现场调试时,并没有GUI形式的编辑工具,vi是唯一选择。


模式


vi编辑器有三种模式,各个模式侧重点不一样:

a. 一般模式(光标移动、复制、粘贴、删除)

b. 编辑模式(编辑文本)

c. 命令行模式(查找和替换)

vi编辑器的三种模式间切换如下图所示


注意:

a. 当不知道处于何种模式时,按ESC键返回到一般模式。

b. wq(write quit)

c. i(insert)


1670749745204.jpg


文件的打开、新建、保存


打开文件、新建文件,命令如下(如果文件存在则打开文件,否则新建文件并打开):

$ vi  文件名


修改结束之后,输入“:” 进入命令行模式,再输入“wq”保存退出:

:wq  保存并退出文件


注意:如果文件不存在,也需要输入“:wq”才可以保存新文件,否则不会新建文件。


在编辑完成时,返回一般模式,方法如下:

a. 输入“:w”则保存文件,如果已经保存文件,输入“:q”则退出文件

b. 直接输入“:wq”保存并退出

c. 如果不想保存被修改的内容,则输入“:q!”强制退出。


这些命令列表如下:

命令 描述

x 保存当前文档并且退出。

q 退出。

w 保存文档 。

q! 退出 vi/vim,不保存文档。


编辑文件


打开文件后,默认处于“一般模式”,这时可以输入以下字母:

指令 描述

i 在当前光标所在字符的前面,转为编辑模式。

I 在当前光标所在行的行首转换为编辑模式。

a 在当前光标所在字符的后面,转为编辑模式。

A 在光标所在行的行尾,转换为编辑模式。

o 在当前光标所在行的下方,新建一行,并转为编辑模式。

O 在当前光标所在行的上方,新建一行,并转为编辑模式。

相关文章
|
7天前
|
Android开发
鸿蒙开发:自定义一个简单的标题栏
本身就是一个很简单的标题栏组件,没有什么过多的技术含量,有一点需要注意,当使用沉浸式的时候,注意标题栏的位置,需要避让状态栏。
鸿蒙开发:自定义一个简单的标题栏
|
7天前
|
API
鸿蒙开发:切换至基于rcp的网络请求
本文的内容主要是把之前基于http封装的库,修改为当前的Remote Communication Kit(远场通信服务),无非就是通信的方式变了,其他都大差不差。
鸿蒙开发:切换至基于rcp的网络请求
|
12天前
|
UED
鸿蒙next版开发:相机开发-适配不同折叠状态的摄像头变更(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了强大的相机开发能力,特别是针对折叠屏设备的摄像头适配。本文详细介绍了如何在ArkTS中检测和适配不同折叠状态下的摄像头变更,确保相机应用在不同设备状态下的稳定性和用户体验。通过代码示例展示了具体的实现步骤。
43 8
|
12天前
|
API 内存技术
鸿蒙next版开发:相机开发-拍照(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机功能,特别是拍照功能。本文详细介绍如何在ArkTS中实现拍照功能,包括导入接口、创建会话、配置会话、触发拍照及监听拍照输出流状态,并提供代码示例进行详细解读。通过本文,你将掌握如何在HarmonyOS 5.0中使用ArkTS实现高效的拍照功能。
33 7
|
12天前
|
前端开发 API
鸿蒙next版开发:相机开发-预览(ArkTS)
在HarmonyOS 5.0中,使用ArkTS进行相机预览是核心功能之一。本文详细介绍了如何使用ArkTS实现相机预览,包括导入相机接口、创建Surface、获取相机输出能力、创建会话并开始预览,以及监听预览输出状态等步骤,并提供了代码示例。通过本文,读者可以掌握在HarmonyOS 5.0中使用ArkTS进行相机预览的基本方法。
35 6
|
12天前
|
编解码 开发工具 计算机视觉
鸿蒙5.0版开发:命令行工具(mediatool工具)
在HarmonyOS 5.0的开发中,命令行工具mediatool基于FFmpeg库,提供了丰富的媒体处理功能,如视频和音频的转码、封装格式转换、提取媒体信息等。本文详细介绍mediatool的功能和使用方法,并提供代码示例。
34 6
|
12天前
|
前端开发 开发者
鸿蒙next版开发:相机开发-元数据(ArkTS)
在HarmonyOS 5.0中,ArkTS新增了对相机元数据的访问能力,帮助开发者获取图像的详细信息。本文介绍了如何在ArkTS中获取和使用相机元数据,包括导入接口、创建元数据输出流、开启和停止元数据输出、监听元数据对象可用事件等步骤,并提供了详细的代码示例。
41 5
|
12天前
|
前端开发 API 开发者
鸿蒙next版开发:相机开发-录像(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机录像功能。本文详细介绍了如何在ArkTS中实现录像功能,包括导入接口、创建Surface、获取相机输出能力、创建会话并开始录像以及监听录像输出流状态,并提供了代码示例进行解读。希望本文能帮助开发者更好地利用ArkTS的相机录像功能。
34 5
|
12天前
|
API 开发者 内存技术
鸿蒙next版开发:相机开发-会话管理(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了完整的API来管理相机会话,包括创建相机输入流、预览输出流、拍照输出流,配置和管理会话。本文详细介绍了相机会话管理的基础步骤和代码示例,涵盖会话创建、闪光灯和焦距配置及错误处理等内容,帮助开发者更好地利用ArkTS开发相机应用。
35 4
|
12天前
|
UED
鸿蒙next版开发:音频并发策略扩展(ArkTS)
在HarmonyOS 5.0中,音频并发策略通过ArkTS的AudioSessionManager接口管理多个音频流的交互和优先级。本文介绍了如何自定义音频焦点策略,包括激活、停用音频会话及注册回调函数,并提供了示例代码。适用于多媒体、通信和游戏应用。
40 4
下一篇
无影云桌面