sheel命令

########################## SHEEL 命令 #######################

#查看
#查看目录 [DIR] 缺省默认为查看当前目录
ls [DTR] #查看目录中的内容简单列表
ll [DIR] #查看详情列表
ls -la [DIR] #查看所有内容
#查看文件 输出至控制台=>标准输出
cat FILE_PATH #查看文件中的所有内容
cat -n FILE_PATH #给内容加行号
head -n FILE_PATH #查看文件前n行的内容
tail -n FILE_PATH #查看文件后n行的内容
#查看/etc/profile文件的第6~10行的内容
head -10 /etc/profile>tmp.log
tail -5 tmp.log
rm -f tmp.log
grep ‘CONTENT’ FILE_PATH #查找指定内容
#管道符 【允许多重管道】
cat /etc/profile|grep usr
#重定向
STD_CONSOLE_OUT>FILE_PATH
# > 覆盖模式
# >> 追加模式
COMMAND 1>>info.log 2>>error.log #正常信息和异常信息分别输出到不同文件
COMMAND 1>>info.log 2>>&1 #正常信息和异常信息输出到相同文件
#权限

#权限		 目录层级	所有者		所属组		资源大小	创建时间		资源名称
-rw-r--r--.	  1 		root 		root     	16 			May 24 15:58 	adjtime

- --- --- ---
#第一部分
	# -	文件
	# d	目录
	# l	链接	类似于windows快捷方式
#后三个部分分别代表三个身份用户对该资源的权限
	# 所有者
	# 组内用户
	# 组外用户
#权限构成	r=>read读	w=>write写	x=>execute执行
	权限类型	二进制		十进制
	---			000			0
	r---		100			4
	-w-			010			2
	--x 		001			1
	rw-			110			6
	r-x			101			5
	-wx			011			3
	rwx			111			7

#修改操作权限和所有权
chmod (U/G/O)(=/+/-)(rwx) SOURCE
chmod 777 SOURCE
chown USER_NAME:GROUP_NAME SOURCE

#目录 默认权限:755
#绝对与相对路径
#相对路径
./
PATH
#绝对路径
/PATH/…
#创建目录【支持多并列】
mkdir DIR_NAME[ DIR_NAME2 …]
#创建多级目录
mkdir -p PATH/SUB_PATH/…
#删除目录
rm -d PATH #删除空目录
rm -rf PATH #递归删除目录指向的所有资源(包括目录)
#查看当前目录
pwd
#目录切换
cd PATH
cd …/ #返回上一级
cd ~ #退回当前目录的主目录
cd / #直接返回当前虚拟机的根目录

#文件 默认权限:644
#创建
touch FILE_PATH #创建空文件
vi[m] FILE_PATH #创建并操作、编辑文件
#默认进入命令行模式
shift+g #跳至最后一行
/FIND_CNT #在当前文件中检索包含FIND_CNT内容的所有行
#-> 通过o/i切换到编辑模式
#-> 通过esc返回命令行模式
#退出
shift+z+z #快捷键:保存并退出
:x #快捷键:保存并退出
:wq! #:w 保存不退出 :q 退出不保存 !强制执行
#编辑
#删除
rm -f FILE_PATH
#移动
mv FILE_PATH DEST_DIR #移动
mv FILE_PATH DEST_FILE_PATH # [移动且]重命名
#拷贝
cp FILE_PATH DEST_DIR
#文件统计:行数,单词数,字符数
wc FILE_PATH

#用户
vim /etc/passwd
用户名 密码 用户ID 分组ID 组名 当前用户组目录 当前用户的shell命令集类型
renfeifan : x : 1000 : 1000 : renfeifan : /home/renfeifan : /bin/bash
mysql : x : 27 : 27 : MySQL Server: /var/lib/mysql : /bin/false
#创建用户
useradd USER_NAME -g PRIMARY_GROUP -G SECONDARY_GROUP -d USER_PATH -p USER_PASSWORD
#删除组内用户
gpasswd -d USER_NAME GROUP_NAME
#删除用户【自动级联删除已绑定的分组用户列表中的用户】
userdel USER_NAME
#修改用户信息
usermod USER_NAME -G GROUP_NAME #追加次分组
#分组
vim /etc/group
组名 密码 组ID 组内用户
renfeifan : x : 1000 : renfeifan
mysql : x : 27 :

#添加分组
groupadd GROUP_NAME
#删除分组
groupdel GROUP_NAME

#进程操作
kill -9 PROCESS_ID

#执行命令
#原始命令
ls -la /etc/profile/d|grep vim
#特殊方式
#将命令执行的结果传入文件
ls -la /etc/profile/d|grep vim>
#编程
#设置shell制表位:
vim /etc/vimrc
----------------
set tabstop=4
----------------
#保存退出后重启连接客户端即可
#可执行文件
#创建并编辑脚本
touch cha01.sh
chmod u+x cha01.sh
vim cha01.sh
--------------------
#!/bin/bash

		...
		--------------------
	#执行脚本并根据需要传参
		./PATH/cha01.sh PARAM1 [PARAM2 ... PARAMN]
	#脚本中如何解析参数
		$# #表示参数的数量
		$n #表示第n个参数的值
#变量
	VAR_NAME=VALUE	#声明并赋值,等号右边的值决定了左边变量的数据类型
	unset VAR_NAME	#取消变量
	echo $VAR_NAME	#使用变量需要用$
	#将命令执行结果存入变量
		RST=`ls /etc/profile.d`				#反引号执行命令有阻塞功能
		RST=$(ls /etc/profile.d)
		#当命令中出现变量导致不能正常执行执行
			#解决方案一:先将命令字符串拼接完成,再以命令的方式执行
			RST="mv $SOFTWARE_DIR$RST $SOFTWARE_DIR$jdk"
			RST=$RST
			#解决方案二:用eval表达式完成拼接和命令转换执行的过程
			eval mv $SOFTWARE_DIR$RST $SOFTWARE_DIR$jdk
	#算术表达式	((ARITHMETIC_EXPRESSION))
		VAR=$((NUM+NUM2))
		((VAR++))			#自增
#分支
	#单分支
	if [ ]
	then
		...
	fi
	
	#双分支
	if [ ]
	then
		...
	else
		...
	fi
	
	#多分支
	if [  ]
	then
		...
	else if [  ]
	then
		...
	else
		...
	fi
	
#条件表达式的书写规范
	if [ $VAR -gt/ge/lt/le/eq/ne $VAR2/CONST -a/-o/ CONDITION2 ]
	if (($VAR>=CONST && $VAR<TOP))
	if [[ $STR =~ REGEX ]]
	
	if [ $VAR ]		#是否存在变量 VAR	true->表示存在,
	false->不存在
	
[ ]在判断空字符串的时候需要加" "
[[ ]]在判断空字符串的时候不加" "也可以
	
用逻辑运算符&&或者|| 连接两个表达式的时候,一个[ ]不可以,但是[[ ]]就可以

#循环

#数组
ARR=(henry pola ariel) #创建数组
${ARR[@]} ${ARR[*]} #将数组转化为列表后返回,*整体,@个体
${ARR[INDEX]} #获取数组指定下标的元素
${#ARR[@]} #获取数组的长度,#取字符串长度

#grep [文本查找]
#获取文件路径
dirname FILE_PATH
#获取文件名
basename FILE_PATH
#资源检索
find PATH [option] SOURCE_NAME
find / -name mysql
-----------------------------
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql
-----------------------------

#sed
#非交互流式文本【编辑】器
#对文本文件进行增删改查等操作
#支持按行、字段、正则匹配文本内容
#基本语法
sed [-opts] ‘COMMAND’ FILE_PATH

	#删除文件内容
	sed -in '1,$d' start.cnf

#选项参数
	-n	#编辑结果不做输出
	-r	#支持正则匹配
	-e	#支持多条有分号隔开的sed命令
		sed -n -r -e 's/usrUSER/g;s/profile/PROFILE/g' profile
	
	-f	#将命令封装在文件中使用
		vim opr.sed
		-----------------------
		s/usr/USER/g;
		s/profile/PROFILE/g;
		-----------------------
		sed -f opr.sed profile
	
	-i	#无-i只输出预览,可以重定向到新文件或覆盖原文件,有-i直接修改原文件
		sed -i -f opr.sed profile
		
	

#动作说明
	i	#插入
			#"unset i"上一行插入AABBCC
				sed -i '/unset i/i AABBCC' profile
	a	#新增
			#"unset i"下一行插入AABBCC
				sed -i '/unset i/a AABBCC' profile
			#最后一行后插入AABBCC
				sed -i '$a AABBCC' profile
	d	#删除
			#删除所有内容为AABBCC行
				sed -i '/AABBCC/d' profile
			#删除以# 开始的行或空白行
				sed -i -e '/^# /d;/^ *$/d' profile
	p	#输出
			#从第30行输出到最后一行
				sed -n '30,$p' profile
	s	#替换
				sed -n -r -e 's/usr/USER/g;s/profile/PROFILE/g' profile

#常用字符串
#字符串函数 str=“aa,bb,cc,dd”
#非空
[[ s t r ] ] [ − n " str ]] [ -n " str]][n"str" ] #true if not empty
[ -z “$str” ] #true if empty

#自定义函数
[function] funcName[()]{

echo “RETURN_VALUES”
}

rst=`funcName arg1 arg2 ... argn`
echo $rst

#数学函数
#生成序列
seq -s ‘SEPERATOR’ -w|-f ‘B%0NgE’ [begin] step [end]
-s ‘,’ #指定分隔符
-w #高位自动补零
-f ‘B%0NgE’ #B 常量前缀字符串【可选】
#%0Ng
#% 左边界
#0 意味着
#N 表示宽度(数值位数)
#g 右边界
#进制转换
$[10#VALUE] 08

#查看历史记录
history

#查看当前目录
pwd

#回到上一次目录
cd ./

#回到上一级目录
cd …/

cd / 根目录,root的上一层目录
cd ~ /root,root目录

#word count 统计单词,字母
wc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在AutoJS,可以使用`shell()`函数来执行shell命令。该函数的语法如下: ``` shell(cmd, root) ``` 其,`cmd`是要执行的shell命令,`root`可选,如果设置为true,则以root权限执行命令。 示例1:执行简单的shell命令 ``` shell("ls"); ``` 示例2:执行带参数的shell命令 ``` shell("pm list packages -f com.tencent.mm"); ``` 示例3:以root权限执行命令 ``` shell("reboot", true); ``` 注意:在执行shell命令时,需要注意权限问题。某些命令可能需要root权限才能执行,此时需要在设备上先获取root权限。另外,某些命令可能会导致设备出现异常,需要谨慎使用。 ### 回答2: Autojs是一款用于Android设备的JavaScript自动化工具,其包含了一个强大的shell命令功能,可以通过在脚本调用shell命令来实现更复杂的操作。 Autojs的shell命令可以用于执行Android系统支持的所有shell命令。例如,我们可以使用shell命令来执行一些常见的操作,比如安装应用程序、卸载应用程序、运行应用程序、发送广播等。 另外,我们还可以使用shell命令来获取设备的一些基本信息,比如Android版本、设备名称、屏幕分辨率等。这些信息对于编写自动化脚本非常有用,可以根据不同的设备情况来调整脚本的逻辑。 除了执行单个的shell命令之外,Autojs还提供了一些方法来执行一组shell命令,比如使用shell方法执行脚本文件、使用su方法执行需要root权限的命令等。 总结来说,Autojs的shell命令功能提供了一种强大的方式来与Android系统进行交互,可以通过执行shell命令来实现更复杂、更灵活的自动化操作。这使得Autojs成为一款非常实用的自动化工具,可以帮助我们简化Android设备上的一些操作,并提高工作效率。 ### 回答3: 在Auto.js,通过Shell命令可以执行一些与系统交互的操作。Auto.jsShell类提供了以下几个方法来执行Shell命令: 1. Shell.read(cmd, timeout):执行指定的Shell命令,并返回命令执行结果。cmd是要执行的命令字符串,timeout是超时时间,单位是毫秒。该方法会返回一个Shell.Result对象,可以通过getResult()方法获取命令执行结果的输出内容。 2. Shell.write(cmd):执行Shell命令,无需返回结果。cmd是要执行的命令字符串。这个方法一般用于执行一些不需要获取结果的命令。 3. Shell.exec(cmd, timeout):执行指定的Shell命令,并返回命令执行结果。cmd是要执行的命令字符串,timeout是超时时间,单位是毫秒。该方法会返回一个对象,包含命令执行结果的输出内容、错误信息以及执行命令的状态码。 使用Shell命令可以实现一些常见的操作,比如运行其他应用、安装/卸载应用、发送广播、模拟按键等。通过执行Shell命令,可以与系统进行交互,实现更多自动化的功能。 需要注意的是,使用Shell命令需要具有Root权限或者在Auto.js的沙盒模式运行时,需要App的Shell权限。同时,执行一些危险的Shell命令需要谨慎操作,避免对系统产生不可逆的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值