fuzidage
专注嵌入式、linux驱动 、arm裸机研究

导航

 

参考资料

正点原子:http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html

1 linux 命令

1.1 fdisk命令

1.1.1 查看分区

fdisk -l显示磁盘分区使用情况
image

1.1.2 删除分区

fdisk /dev/sdb1 用来对sdb1进行分区:
image

输入m表示获取帮助,默认有分区sdb1, 然后输入d删除分区1,p打印出分区表,i表示打印出详细分区信息,n表示新增分区信息,w表示保存,q表示退出。
image
来看dev/sd*信息,发现已经没有了sdb1
image

1.1.3 创建分区

再来看如何建立分区1:
先建立一个1GB的分区,1GB= 1024 * 1024 * 1024=1073741824 B = 2097152 个sector,一个sector有512 byte,再加上2048 个sector,那么等于2099200个sector。
image
再来何建立分区2:
image
这里First sector使用默认值2101248,Last sector使用4198400(1G是2097152, 2101248 + 2097152 = 4198400),分区2也是1GB
再来何建立分区3:
image
First sector和Last sector使用默认,那么最终分区3有26.8GiB。
最后输入w保存退出,来看下分区:
image
image
image

1.2 磁盘格式化命令

mkfs命令用来对磁盘分区格式化,将格式化好的sd卡放入windows系统查看,可以看到3个盘。
image
image

1.3 du命令

image

1.4 df命令

image

1.5 xargs命令

find -name *.sh |xargs grep -rn "build_all"
image

1.6 grep命令

find /path/to/directory -type f -name "*.txt" | grep "keyword"

-w 全词匹配。
-v 反向搜索
-i 不区分大小写

$匹配以字符串结尾的行
^ 匹配以字符串开头的行

找出空行 grep "^$" test.txt -n
找出unix开头的行grep "^unix" geekfile.txt
找出.结尾的行 grep "\.$" test.txt -n -o
找出os.结尾的行,grep "os.$" geekfile.txt

[abc]中括号
匹配abc字符中的任意一个
image
匹配a-z
image

下面一个脚本用grep -v排除掉不需要的行,也就是删除包含指定字符的行从一个文件。

#!/bin/bash
# 定义要删除的特定字符
pattern="特定字符"
# 定义要处理的文件名
filename="文件名"
# 使用grep命令找到含有特定字符的行,并将结果输出到一个临时文件中
grep -v "$pattern" "$filename" > temp.txt
# 将临时文件的内容复制回原始文件
cat temp.txt > "$filename"
# 删除临时文件
rm temp.txt

1.7 网络命令

ifconfig eth0 up/down
udhcpc -i eth0 //通过路由器分配 IP 地址
ifconfig eth0 192.168.1.251 netmask 255.255.255.0 //设置 IP 地址和子网掩码
route add default gw 192.168.1.1 //添加默认网关

shell命令

解释器

  1. sh解释器
  2. bash解释器
    脚本开头用#!用来申明用什么解释器,如:

image

段代码注释

<<EOF
...
EOF

image

read命令

image

test命令

测试文件,数值,权限,字符串等参数。
image
image
中括号也能表示测试,里面只能用==或!=
image

命令行参数

$0, $1, $2, $3...
$0表示脚本文件名
$1表示第一个参数
$n表示第n个参数
$#表示一共有多少个命令行参数
$@表示所有的命令行参数集合,$0 $1 $2 ... $n
$*表示等价$@
$?表示上一条命令是否返回成功,成功为0,错误非0
$$表示当前脚本的进程号

image

条件语句

image

case语句

image

函数

image
image
image

循环

image
image
image

typeset或者declare

sh脚本默认所有变量都是字符串,比如val=1,也表示val是一个字符串“1”。那么需要如何声明一个变量类型,用typeset或者declare。

typeset -i data=1

unset

清除变量值

readonly

只读变量

sed

find /path/to/dir -type f -name "*.[c-h]" -exec sed -i 's/oldstring/newstring/g' {} +

find /path/to/dir:找到指定目录/path/to/dir下的所有文件。
-type f:仅查找文件。
-name "*.txt":限制文件名以.txt结尾。
-exec:对找到的每个文件执行后面的命令。
sed -i:使用sed进行替换,-i表示直接修改文件内容。
's/oldstring/newstring/g':sed的替换表达式,g表示全局替换。
{}:表示find找到的文件名。
+:结束-exec命令,批量处理匹配到的文件。
posted on 2024-03-02 17:27  fuzidage  阅读(24)  评论(0编辑  收藏  举报