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

简介: 嵌入式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 在当前光标所在行的上方,新建一行,并转为编辑模式。

相关文章
|
1天前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
8 0
|
2天前
|
SQL 缓存 监控
|
2天前
|
前端开发 Linux Shell
|
2天前
|
网络协议 Linux Shell
|
2天前
|
前端开发 Linux iOS开发
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
【4月更文挑战第30天】Flutter扩展至桌面应用开发,允许开发者用同一代码库构建Windows、macOS和Linux应用,提高效率并保持平台一致性。创建桌面应用需指定目标平台,如`flutter create -t windows my_desktop_app`。开发中注意UI适配、性能优化、系统交互及测试部署。UI适配利用布局组件和`MediaQuery`,性能优化借助`PerformanceLogging`、`Isolate`和`compute`。
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
|
2天前
|
消息中间件 缓存 监控
Linux 常用命令汇总(八):系统管理 & 性能监视
Linux 常用命令汇总(八):系统管理 & 性能监视
|
2天前
|
Web App开发 监控 Unix
Linux 常用命令汇总(七):进程管理 & 系统权限 & 用户授权
Linux 常用命令汇总(七):进程管理 & 系统权限 & 用户授权
|
2天前
|
Unix Linux
Linux 常用命令汇总(六):磁盘与文件系统命令
Linux 常用命令汇总(六):磁盘与文件系统命令
|
5天前
|
XML 安全 Linux
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
|
5天前
|
编解码 Linux
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
在《FFmpeg开发实战》一书中,介绍了如何在Linux环境下为FFmpeg集成libopus和libvpx,以支持WebM格式的Opus和VP8/VP9编码。首先,下载并安装libopus。接着,下载并安装libvpx。最后,在FFmpeg源码目录下,重新配置FFmpeg,启用libopus和libvpx,编译并安装。通过`ffmpeg -version`检查版本信息,确认libopus和libvpx已启用。
16 1
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx