ADB Shell 复制/移动文件时的转义字符
发布时间:2020-12-15 19:13:26 所属栏目:安全 来源:网络整理
导读:问题来源 有时候,我们调用Shell命令来完成一些操作会方便点。比如复制文件调用 cp 'src' 'dest' 命令。但是如果源路径或者目标路径中包含一些Linux Shell 中的一些特殊字符时,可能命令执行的结果并不是我们想要的。此时我们就需要对这些命令进行转义。 She
问题来源有时候,我们调用Shell命令来完成一些操作会方便点。比如复制文件调用 Shell中的文件操作# 复制文件
cp 'src' 'dest'
# 移动文件
mv 'src' 'dest'
# 创建文件
touch 'fileName'
# 创建文件夹
mkdir 'dirName'
如何处理路径特使字符Shell特殊字符
转义特殊字符的三种方式
怎么选择处理方式之前我不想匹配那么多特殊字符,使用的是单引号的方式来处理路径中的特殊字符,直到有用户反馈操作一直等待。检查半天发现是他的文件名中有单引号 所以:
单个字符全转义的Java实现/** * 将包含特殊Shell字符的字符串 转换成Shell可执行的字符串 * * @author yawei * zyawei@live.com * @date 18-6-26 * @see <a href="https://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html">Linux Shell 特殊字符</a> */
public class ShellCommandConversionUtils {
private static final char[] SPECIAL_CHARS = new char[]{'*','?','[',']','{','}',' ',0x0D,'=','&','>','<','|','(',')',';','!','',''','"'};
public static String convert(String line) {
char[] chars = line.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
for (int j = 0; j < SPECIAL_CHARS.length; j++) {
if (c == SPECIAL_CHARS[j]) {
chars = insert(chars,i);
i++;
}
}
}
return new String(chars);
}
private static char[] insert(char[] chars,int index) {
char[] nChars = new char[chars.length + 1];
System.arraycopy(chars,0,nChars,index + 1);
nChars[index] = '';
System.arraycopy(chars,index,index + 1,chars.length - index);
return nChars;
}
}
参考链接:Linux Shell 通配符、元字符、转义符使用实例介绍 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |