1 前言-参考资料#
正点原子:http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html
2 linux 命令#
1.1 磁盘相关#
1.1.1 fdisk#
1.1.1.1 查看分区#
fdisk -l
显示磁盘分区使用情况
1.1.1.2 删除分区#
fdisk /dev/sdb1
用来对sdb1进行分区.
输入m表示获取帮助,默认有分区sdb1, 然后输入d删除分区1,p打印出分区表,i表示打印出详细分区信息,n表示新增分区信息,w表示保存,q表示退出。
来看dev/sd*信息,发现已经没有了sdb1.
1.1.1.3 创建分区#
再来看如何建立分区1:
先建立一个1GB的分区,1GB= 1024 * 1024 * 1024=1073741824 B = 2097152
个sector,一个sector有512 byte,再加上2048 个sector,那么等于2099200个sector。
再来何建立分区2:
这里First sector使用默认值2101248,Last sector使用4198400(1G是2097152, 2101248 + 2097152 = 4198400),分区2也是1GB
再来何建立分区3:
First sector和Last sector使用默认,那么最终分区3有26.8GiB。
最后输入w保存退出,来看下分区:
1.1.2 磁盘格式化命令-mkfs#
mkfs命令用来对磁盘分区格式化,将格式化好的sd卡放入windows系统查看,可以看到3个盘:
1.1.2.1 mount#
1.1.3 du#
1.1.4 df#
1.2 文件字符操作命令#
1.2.1 xargs#
find -name *.sh |xargs grep -rn "build_all"
1.2.1 find#
按时间搜索:
-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)
最近7天被访问过的所有文件:find . -atime 7 -type f -print
最近7天被修改的文件:find . -maxdepth 2 -mtime 7 -type f
通配符#
一版find命令还会伴随通配符使用:
1 | *:匹配任意多个字符 |
1 | $ find . -name *.txt |
伴随执行任务#
1 | # 找到后执行删除 |
1.2.2 grep#
find /path/to/directory -type f -name "*.txt" | grep "keyword"
-w 全词匹配。
-v 反向搜索
-i 不区分大小写
1 | $匹配以字符串结尾的行 |
[abc]中括号
匹配abc字符中的任意一个:
匹配a-z:
下面一个脚本用grep -v排除掉不需要的行,也就是删除包含指定字符的行从一个文件。
1 |
|
uniq 删除重复行#
tr字符串替换#
1.2 awk数据流处理#
常用的就是提取文件中的列字段,比如提取file中的第二个和第三个字段。awk '{print $2, $3}' file
1.3 网络命令#
1 | ifconfig eth0 up/down |
3 shell脚本命令#
3.1 解释器#
sh解释器
bash解释器
脚本开头用#!
用来申明用什么解释器,如:
3.2 段代码注释#
1 | <<EOF |
3.3 read命令#
3.4 test命令#
测试文件,数值,权限,字符串等参数。
中括号也能表示测试,里面只能用==或!=。
3.4.1 文件测试#
3.4.2 比较测试#
3.4.3 多重条件测试#
可以看到第一和第三条test都成立:
3.5 命令行参数#
1 | $0, $1, $2, $3... |
3.6 条件语句#
3.7 case语句#
3.8 函数#
3.9 循环语句#
3.9 数组#
用括号来表示数组,数组元素用“空格”符号分割开:
1 | array_name=(value0 value1 value2 value3) |
3.10 typeset或者declare#
sh脚本默认所有变量都是字符串,比如val=1,也表示val是一个字符串“1”。那么需要如何声明一个变量类型,用typeset或者declare。
1 | typeset -i data=1 |
3.11 unset#
清除变量值.
3.12 readonly#
只读变量.
3.13 sed#
3.13.1 目录递归替换字符#
find /path/to/dir -type f -name "*.[c-h]" -exec sed -i 's/oldstring/newstring/g' {} +
1 | find /path/to/dir:找到指定目录/path/to/dir下的所有文件。 |
3.13.2 去掉一行中多余的空格#
sed -i 's/[[:space:]]\+/ /g' array.sh
s/[[:space:]]\+/ /g
是替换命令,它会将一个或多个空白字符(包括空格、制表符等)替换为单个空格.
3.14 shell脚本如何查看将要执行的命令#
1 |
|
3.15 字符串中替换一个字符#
1 | string="123123" |
3.16 算数运算符#
3.17 重定向#
1 | $who |
3.17.1 保存log到文本#
make all > build_osdrv.log 2>&1