假设有node1、node2、node3三台机器,在/opt/files文件夹下有a.txt、b.txt、c.txt三个文件
创新互联服务项目包括路桥网站建设、路桥网站制作、路桥网页制作以及路桥网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,路桥网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到路桥省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
1). 在node1上执行scp命令,将a.txt复制到node2的/opt/files目录下,命令格式如下:
spc /opt/files/a.txt root@node2:/opt/files
2). 在node2上执行scp命令,将b.txt复制到node2的/opt/files目录下,命令格式如下:
scp root@node1:/opt/files/b.txt /opt/files
3). 在node3上执行scp命令,将c.txt复制到node2的/opt/files目录下,命令格式如下:
scp root@node1:/opt/files/c.txt root@node2:/opt/files
basename命令
用于获取路径中的文件名或者路径名
1). 包含文件的路径
basename /opt/files/a.txt
返回a.txt
2). 不包含文件的路径
basename /opt/files
返回files
Grep 是一个强大的 UNIX 命令,可让您在文件内容中搜索各种参数。当您进行故障排除或调试时,它特别有用。
grep 命令有大量的选项和用例。您可能永远不需要或使用所有这些。但是,您最终会在大多数情况下使用少数几个 grep 命令。
本文列出了最常见的 grep 命令和快速示例:
命令示例:
描述 :不区分大小写的搜索
命令示例:
描述 :匹配后显示 n 行
命令示例:
描述 :在匹配前显示 n 行
命令示例:
描述 :在匹配前后显示 n 行
命令示例:
描述 :显示不匹配的行
命令示例:
描述 :计算匹配行数
命令示例:
描述 :仅显示文件名
命令示例:
描述 :匹配确切的单词
命令示例:
描述 :匹配正则表达式模式
命令示例:
描述 :搜索二进制文件
命令示例:
描述 :递归搜索目录
您可能已经知道要在文件中搜索特定文本或模式,您必须像这样使用 grep:
让我们看看 grep 命令的几个常见用例。
默认情况下,使用 grep 进行的搜索区分大小写,-i您可以使用以下选项忽略大小写匹配:
这样,grep 将返回与 和 匹配的Holmes行holmes。
默认情况下,您只会看到匹配的行,但是,当您对某些问题进行故障排除时,在匹配行之前和/或之后查看几行会有所帮助。
您可以使用-A来显示匹配行之后的行。
下面的命令将显示匹配的行以及匹配后的 5 行。
同样,您可以使用该-B选项在匹配行之前显示行。
下面的命令将在匹配行之前显示 5 行以及匹配行。
我最喜欢的是该选项-C,因为它显示了匹配行之前和之后的行。
下面的命令将显示匹配行之前的 5 行、匹配行和 matchine 行之后的 5 行。
您可以使用 grep 显示与给定模式不匹配的所有行。此“反转匹配”与以下-v选项一起使用:
您可以组合-i和-v选项。
-c您可以使用选项获取与模式匹配的行数,而不是显示匹配的行。这是小写的c。
您可以结合-cand-v选项来获取与给定模式不匹配的行数。您当然可以使用不区分大小写的选项-i。
要显示匹配行的行号,您可以使用该-n选项。
您可以对反向搜索执行相同的操作。
您可以提供多个文件供 grep 搜索。
这可能有效,但更实际的示例是搜索特定类型的文件。例如,如果您只想在 shell 脚本中查找字符串(以 .sh 结尾的文件),您可以使用:
您可以使用 grep option执行递归搜索-r。它将在当前目录及其子目录中的所有文件中搜索给定的模式。
默认情况下,grep 显示匹配的行。如果您对多个文件运行了搜索,并且只想查看哪些文件包含该字符串,则可以使用该-l选项。
假设您想查看哪些 Markdown 文件包含“手册”一词,您可以使用:
默认情况下,grep 将显示包含给定字符串的所有行。你可能并不总是想要那个。如果您正在搜索单词“done”,它还会显示包含“doner”或“abandoned”字样的行。
要使 grep 仅搜索完整的单词,您可以使用以下选项-w:
这样,如果您搜索单词“done”,它只会显示包含“done”的行,而不是“doner”或“abandoned”。
您可以使用正则表达式模式为您的搜索提供超级动力。有一个允许使用正则表达式模式的专用选项-e和-E一个允许使用扩展正则表达式模式的选项。
您可以在同一个 grep 搜索中搜索多个模式。如果要查看包含一种模式或另一种模式的行,可以使用 OR 运算符|。
您可以将多个模式与 OR 运算符一起使用。
AND 运算符没有特定选项。为此,您可以多次使用 grep 和管道重定向。
Grep 默认忽略二进制文件。-a您可以使用该选项使其在二进制文件中搜索,就好像它是文本文件一样。
在Linux bash中可以使用命令行展开特性一步完成需要分开成多步完成的操作,达到事半功倍的效果。在Linux指令参数位置使用"{}" 将相应的参数括起来,括号中的参数以逗号分隔,然后bash在执行这一指令时会自动将括号中的内容进行展开。
示例1:
同时创建多个目录,在/tmp目录下创建a_c,a_d,b_c,b_d等目录,只需要在命令行中执行如下命令即可,无须单个创建:
执行结果如下:
示例2:
需要在/tmp/mylinux 目录下创建如下目录树。
创建命令如下:
执行结果如下:
在这里可以使用指令tree来查看目录的层级结构,以更直观的方式将目录树显示出来:
列出当前目录的文件
常用参数:
-a: 显示当前目录的所有文件,包含隐藏文件;
-l: 显示文件详情;
-Z: 显示文件的 SE Linux context。
示例:ls -laZ [if !vml] [endif] 以 acct 为例: drwxr-xr-x:其中 d 代表该文件为目录,若为 l 则为软链接,软连接后又箭头代表其实际指向的文件,如etc - /system/etc 则访问 etc 实际等同访问/system/etc,留空则代表该文件为一个文件;rwxr-xr-x 代表其权限为 755,具体算法为将上述字段每 3 个分为 1 组得 rwx,r-x,r-x,凡是有字母标记的皆计数 1,反之为 0,得二进制 111,101,101,转为 10 进制数字即得7, 5,5 ,即为该文件权限; root root :依次代表该文件的所有者(owner)为 root,用户组(group)为 root,上述属性可通过 chown 命令修改,日常替换文件需与原文件该属性维持一致; unlabeled:代表 SE Linux context。
前往指定目录
更改文件所有者和用户组 示例:chown root:root temfile 将 tmpfile文件 的所有者和用户组从 meidia:media 更改为 root:root
将文件内容显示出来。
注意不要随便去 cat 一个很大的文件或与 log 驱动节点无关的文件,否则将造成串口输出乱码或死机!!!示例:cat /proc/kmsg 将打印出所有 kernel log。
用于抓取 android logcat 打印。
常用参数:
-v : 设置打印格式,可用选项为 brief process tag thread raw time threadtime long,我们比较常用 logcat -v time,此时抓的 log 将在每一行开头添加时间信息;
-s : 设置过滤器,过滤器的选择取决于软件中打印 log 时使用的 TAG ,如
ActivityManagerService.java 中的打印使用的 TAG = ActivityManager,则抓相关打印方法为 logcat -s ActivityManager;
-c : 清除 log 缓存,常用于清除之前的打印缓存,如复现某个必现问题,则可先执行 logcat -c 再抓 logcat 重现必现手法以排除无关 log 冗余信息影响问题定位; pm
包管理命令,用于管理安卓 app 应用。
常用参数:
-l : 显示所有安装包应用,等同于 pm list packages
以 package:/system/priv-app/Launcher2.apk=com.android.launcher 为例:
Apk Launcher2 路径位于/system/priv-app/Launcher2.apk,其包名为 com.android.launcher
path : 根据报名返回所在 apk 路径
install : 安装 apk
-r :安装一个已经存在的 apk 并保留其数据;
-d : 允许降级安装
如:pm install -r xxx.apk
uninstall : 卸载 apk,命令仅支持卸载 data/app,后接包名;
如:pm uninstall com.sys.migusmartlink.ott.tv //卸载包名为 com.sys.migusmartlink.ott.tv 的 apk
随机测试指令,会自动模拟一些用户操作对 APP 进行压力测试。
常用参数:
-p :指定启动的 APK,我们比较常用的是 monkey -p com.xxx.yyy 1 来启动一个 apk 的随机页面。
用于启动和管理 activity 和 service
常用参数:
start : 后接 intent 启动一个页面;
startservice : 后接 intent 启动一个 service; stopservice :后接 intent 停止一个 service; broadcast :后接一个 intent 发送一个广播; kill :后接一个 app 包名,杀掉该 app 所有进程;在 shell 环境下用如下参数表述一个 intent:
[-a ACTION] [-d DATA_URI] [-t MIME_TYPE]
[-c CATEGORY [-c CATEGORY] ...]
[-e|--es EXTRA_KEY EXTRA_STRING_VALUE ...]
[--esn EXTRA_KEY ...]
[--ez EXTRA_KEY EXTRA_BOOLEAN_VALUE ...]
[--ei EXTRA_KEY EXTRA_INT_VALUE ...]
[--el EXTRA_KEY EXTRA_LONG_VALUE ...]
[--ef EXTRA_KEY EXTRA_FLOAT_VALUE ...]
[--eu EXTRA_KEY EXTRA_URI_VALUE ...]
[--ecn EXTRA_KEY EXTRA_COMPONENT_NAME_VALUE]
[--eia EXTRA_KEY EXTRA_INT_VALUE[,EXTRA_INT_VALUE...]]
[--ela EXTRA_KEY EXTRA_LONG_VALUE[,EXTRA_LONG_VALUE...]]
[--efa EXTRA_KEY EXTRA_FLOAT_VALUE[,EXTRA_FLOAT_VALUE...]]
[-n COMPONENT] [-f FLAGS]
示例:
如我们在 logcat 抓到如下打印启动了播放器:
START u0 {act=android.intent.action.VIEW dat=[4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 typ=video/* flg=0x13000000 cmp=com.meson.videoplayer/.VideoPlayer} from pid 15204
则我们可以使用如下 am 指令来启动它:
am start -a android.intent.action.VIEW -d [4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 -t video/* -f 0x13000000 -n com.meson.videoplayer/.VideoPlayer am start -n com.android.settings/.Settings //启动原生安卓设置主页
am broadcast -a com.chinamobile.action.KEY_PRESS_DOWN --ei keyCode 11 am broadcast -a com.chinamobile.action.IR_TEST --es irphycode "0x008EDD22" //发送广播
查找命令,查找文件中是否包含指定字符串并输出该行示例:
grep -rns "repeat" /system/etc/remote1.conf //找出/system/etc/remote1.conf 所有包含 repeat 的行并展示行号
参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
命令示例:cp -a a parentPath/sonPath/ a对应当前文件夹下目录或文件名 可替换为绝对路径
移动指令,等效于 windows 的移动和重命名。
示例:
mv /data/tmp1 /data/local/tmp2 //将 data/tmp1移动到/data/local/ 并重命名为 tmp2
删除指令,用于删除文件和文件夹,示例:
rm -rf tmp // 删除 tmp,建议加上-rf参数,其会删除 tmp 所有的目录和文件。
创建目录。常用参数:
-p :若 mkdir -p 后接路径包含不存在路径则一并创建。
同步命令,常用于 cp 替换文件或指令结束后同步状态,有益无害。
重定向,即将一个命令的输出指向另外路径的文件,使用覆盖模式,即重定向到的文件若存在将覆盖里面的内容。
示例:
logcat /data/xxx.log; //将 logcat输出到/data/xxx.log;
cat /proc/kmsg /data/kmsg.log; //将 kmsg 打印输出重定向到/data/kmsg.log
重定向,即将一个命令的输出指向另外路径的文件,使用拼接模式,即重定向到的文件若存在则将输出拼接到原文件的后面。
示例:
logcat /data/xxx.log; //例如我们做 netreboot的时候需要每一次开关机的 log,则会用拼接模式记录log。
将指令放至后台静默执行。
依次执行指令,若有指令执行失败,则后续指令不会执行。
示例:
logcat -c logcat //先清除 logcat 缓存再抓取 log