shell 订阅
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。 展开全文
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
信息
性    质
命令解析器
外文名
shell
用    途
接收用户命令
中文名
shell术语
同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。在排序算法中,Shell是希尔排序的名称。基本上shell分两大类:一:图形界面shell(Graphical User Interface shell 即 GUI shell)例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。二:命令行式shell(Command Line Interface shell ,即CLI shell)例如:bash / sh / ksh / csh / zsh(Unix/linux 系统)(MS-DOS系统)cmd.exe/ 命令提示字符(Windows NT 系统)Windows PowerShell(支持 .NET Framework 技术的 Windows NT 系统)传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。交互式shell和非交互式shell交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。shell的类型在UNIX中主要有:Bourne shell (包括 sh,ksh,and bash)Bourne shell ( sh)Korn shell ( ksh)Bourne Again shell ( bash)POSIX shell ( sh)C shell (包括 csh and tcsh)C shell ( csh)TENEX/TOPS C shell ( tcsh)Bourne Shell  首个重要的标准Unix Shell是1979年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。C Shell Bill Joy于20世纪80年代早期,在伯克利的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。Korn Shell 有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。Bourne Again Shell (bash) bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。POSIX Shell POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.各主要操作系统下缺省的shell:AIX下是Korn Shell.Solaris缺省的是Bourne shell.FreeBSD缺省的是C shellHP-UX缺省的是POSIX shell.Linux是Bourne Again shell.Windows PowerShell是一种新的交互式的命令行和基于任务脚本编写技术,它使信息技术(IT) 管理员能够全面地自动操作和控制系统管理任务,从而提高了管理员的生产力。Windows PowerShell 包括多个系统管理实用工具、一致的语法和命名惯例、及对普通管理数据更好地导航,如登记、证书存储 或 Windows Management Instrumentation (WMI)。Windows PowerShell 还专门针对 IT 管理,提供直观的脚本编写语言。Shell也是一个VB函数,它的作用是运行程序,语法是Shell(命令字符串[,窗口类型])
收起全文
精华内容
下载资源
问答
  • shell

    万次阅读 多人点赞 2019-09-16 20:00:00
    shell 什么是shell: 现在我们使用的操作系统(Windows、Mac OS、Android、iOS等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员、网管等)和普通用户(家庭主妇、老年人等)都非常适用;计算机的普及...

    shell

    什么是shell:

    现在我们使用的操作系统(Windows、Mac OS、Android、iOS等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员、网管等)和普通用户(家庭主妇、老年人等)都非常适用;计算机的普及离不开图形界面。
    然而在计算机的早期并没有图形界面,我们只能通过一个一个地命令来控制计算机,这些命令有成百上千之多,且不说记住这些命令非常困难,每天面对没有任何色彩的“黑屏”本身就是一件枯燥的事情;这个时候的计算机还远远谈不上炫酷和普及,只有专业人员才能使用。
    对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。换句话说,图形界面和命令行要达到的目的是一样的,都是让用户控制计算机。然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。
    由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核。如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。
    用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell。

    2.shell 作用详析:

    Shell 除了能解释用户输入的命令,将它传递给内核,还可以:
    调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果;
    在多个程序之间传递数据,把一个程序的输出作为另一个程序的输入;
    Shell 本身也可以被其他程序调用。
    由此可见,Shell 是将内核、程序和用户连接了起来。
    Shell 本身支持的命令并不多,但是它可以调用其他的程序,每个程序就是一个命令,这使得 Shell 命令的数量可以无限扩展,其结果就是 Shell 的功能非常强大,完全能够胜任 Linux 的日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件等。
    Shell 并不是简单的堆砌命令,我们还可以在 Shell 中编程,这和使用 C/C++、Java、Python 等常见的编程语言并没有什么两样。
    Shell 虽然没有 C/C++、Java、Python 等强大,但也支持了基本的编程元素,例如:
    if…else 选择结构,switch…case 开关语句,for、while、until 循环;
    变量、数组、字符串、注释、加减乘除、逻辑运算等概念;
    函数,包括用户自定义的函数和内置函数(例如 printf、export、eval 等)。
    站在这个角度讲,Shell 也是一种编程语言,它的编译器(解释器)是 Shell 这个程序。我们平时所说的 Shell,有时候是指连接用户和内核的这个程序,有时候又是指 Shell 编程。
    Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件,例如检测计算机的硬件参数、一键搭建Web开发环境、日志分析等,Shell 都非常合适。

    3.3.常见的shell类型有 sh、bash、csh、tcsh、ash 等。

    常见的 Shell

    sh
    sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。
    sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

    csh
    sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。
    Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器,还是 Sun 公司的创始人之一。
    BSD 是 UNIX 的一个重要分支,后人在此基础上发展出了很多现代的操作系统,最著名的有 FreeBSD、OpenBSD 和 NetBSD,就连 Mac OS X 在很大程度上也基于BSD。

    tcsh
    tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。

    ash
    一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

    bash
    bash shell 是 Linux 的默认 shell,本教程也基于 bash 编写。
    bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。
    bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。
    尽管如此,bash 和 sh 还是有一些不同之处:
    一方面,bash 扩展了一些命令和参数;
    另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

    历史命令

    1.history 查询历史命令
    历史命令文件存放在 /root/.bash_history

    [root@localhost ~]# ls  /root/.bash_history  
    /root/.bash_history
    [root@localhost ~]# cat !$
    cat /root/.bash_history
    chmod ~/.ssh 700
    chmod /~.ssh 700
    iptable
    ipaddr
    ip addr
    dhclient
    ip addr
    ping www.baidu.com
    ip route
    vi /etc/sysconfig/network-scripts/ifcfg-ens33 
    ip addr
    ifconfig
    vi /etc/sysconfig/network-scripts/ifcfg-ens33 
    systemctl restart network
    ping www.baidu.com
    mkidr ~/.ssh/
    mkdir ~/.ssh/
    ls
    cd /
    cd 
    ls
    cd ..
    ls
    cd /.ssh
    cd
    ls
    cd ~/.ssh
    vi authorized_keys
    chmod 600authorized_keys
    chmod 600 authorized_keys
    ls
    cd ..
    ls
    cd ..
    cd ~
    ls
    cd ~/.ssh
    ls
    ll
    vi authorized_keys 
    chmod 600 authorized_keys 
    vi authorized_keys 
    chmod 600 authorized_keys 
    cd 
    ls
    cd ..
    ls
    chmod 700 home
    yum install -y lrzsz
    ls
    sz anaconda-ks.cfg 
    ls
    rz
    
    

    3.修改系统摩恩的存储历史命令的条数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    4.设定history命令显示时间

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    5.历史命令的调用

    使用上下箭头调用以前的历史命令
    使用 !n 重复执行第n条历史命令
    使用 !! , !-1 重复执行上一条命令 Ctrl+p+enter亦可
    使用 !ls 重复执行最后一条以ls开头的命令

    命令补全和别名

    tab键补全命令:在输入命令的时候,输入命令的一部分,可以按两下tab键补全命令

    centos6 可以使用tab键补全命令,不支持补全选项;
    centos7 也可以使用tab键补全命令,也支持补全选项,但是需要安装一个bash-completion的包,安装完成后需要重启。

    在这里插入图片描述

    自定义别名

    在这里插入图片描述

    别名的配置文件:~/bash.rc 和 /etc/profile.d/

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    取消别名

    在这里插入图片描述

    通配符、输出重定向

    通配符

    符号作用
    *匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个)
    匹配任何一个字符(不在括号内时)?代表任意1个字符
    [abcd]匹配abcd中任何一个字符
    [a-z]表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符
    {…}表示生成序列. 以逗号分隔,且不能有空格
    [!abcd]或[^abcd]表示非,表示不匹配括号里面的任何一个字符

    在这里插入图片描述

    在这里插入图片描述

    输出重定向

    符号作用
    >正确输出重定向
    >>正确追加输出重定向
    2>错误输出重定向
    2>>错误追加输出重定向
    &>不管正确与否,输出重定向
    &>>不管正确与否,追加输出重定向
    <输入重定向

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    管道符、作业控制

    符号作用
    |把前面命令的结果给后面的命令

    在这里插入图片描述

    作业控制

    命令作用
    ctrl+c发送SIGINT信号,终止一个进程。
    ctrl+z发送SIGSTOP信号,挂起一个进程,将作业放置到后台(暂停状态)。与此同时,可以通过fg重启前台被中断的任务,也可以通过bg把中断的任务放到后台执行。
    jobs查看当前有多少在后台运行的命令
    fg将后台中的命令调至前台继续运行,如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
    bg将一个在后台暂停的命令,变成继续执行,如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
    命令+&这个用在一个命令的最后,可以把这个命令放到后台执行

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Linux中编写Shell脚本

    万次阅读 多人点赞 2018-10-08 11:22:35
    Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (()) 数值运算命令的用法 let 运算命令的用法 expr 命令的用法 br 命令的用法 $[]符号的运算示例 Shell脚本的条件测试 ...
    展开全文
  • c01cpp$ echo $SHELL /bin/bash c01cpp$ echo \$SHELL $SHELL c01cpp$ echo \\ \
  • Java调用Shell命令和脚本

    万次阅读 多人点赞 2016-05-07 13:45:43
    1.介绍 有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本。而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且

    1.介绍

    有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本。而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法:

    Process exec(String command) 
    在单独的进程中执行指定的字符串命令。 
    
    Process exec(String[] cmdarray) 
    在单独的进程中执行指定命令和变量。 
    
    Process exec(String[] cmdarray, String[] envp) 
    在指定环境的独立进程中执行指定命令和变量。 
    
    Process exec(String[] cmdarray, String[] envp, File dir) 
    在指定环境和工作目录的独立进程中执行指定的命令和变量。 
    
    Process exec(String command, String[] envp) 
    在指定环境的单独进程中执行指定的字符串命令。 
    
    Process exec(String command, String[] envp, File dir) 
    在有指定环境和工作目录的独立进程中执行指定的字符串命令。 


    其中,其实cmdarray和command差不多,同时如果参数中如果没有envp参数或设为null,表示调用命令将在当前程序执行的环境中执行;如果没有dir参数或设为null,表示调用命令将在当前程序执行的目录中执行,因此调用到其他目录中的文件和脚本最好使用绝对路径。各个参数的含义:

    1. cmdarray: 包含所调用命令及其参数的数组。 
    2. command: 一条指定的系统命令。
    3. envp: 字符串数组,其中每个元素的环境变量的设置格式为name=value;如果子进程应该继承当前进程的环境,则该参数为 null。
    4. dir: 子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为 null。 

    细心的读者会发现,为了执行调用操作,JVM会启一个Process,所以我们可以通过调用Process类的以下方法,得知调用操作是否正确执行:

    abstract  int waitFor() 
    导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。 


    进程的出口值。根据惯例,0 表示正常终止;否则,就表示异常失败。

    另外,调用某些Shell命令或脚本时,会有返回值,那么我们如果捕获这些返回值或输出呢?为了解决这个问题,Process类提供了:

    abstract InputStream  getInputStream() 
    获取子进程的输入流。 最好对输入流进行缓冲。

    2.调用Shell命令

    这里为了说明问题,我仅用tar命令进行演示。tar命令是一个打包而不进行压缩的命令。同时,为了检查tar的调用是否被正常执行,我将调用waitFor()方法。

    private void callCMD(String tarName, String fileName, String... workspace){
    	try {
    		String cmd = "tar -cf" + tarName + " " + fileName;
    //            String[] cmd = {"tar", "-cf", tarName, fileName};
    		File dir = null;
    		if(workspace[0] != null){
    			dir = new File(workspace[0]);
    			System.out.println(workspace[0]);
    		}
    		process = Runtime.getRuntime().exec(cmd, null, dir);
    //          process = Runtime.getRuntime().exec(cmd);
    		int status = process.waitFor();
    		if(status != 0){
    			System.err.println("Failed to call shell's command and the return status's is: " + status);
    		}
    	}
    	catch (Exception e){
    		e.printStackTrace();
    	}
    }


    注意:如果把命令放到一个String[]中时,必须把命令中每个部分作为一个元素存在String[]中,或者是把命令按照空格符分割得到的String[]。

    String[] cmd = {"tar", "-cf", tarName, fileName};		//right
    String[] cmd = {"tar -cf", tarName, fileName};			//error

    为了说明dir参数的作用,我特地把该Java程序和要打包的目录hive/放在不同的目录:

    /root/workspace/eclipse/Test/src/edu/wzm/CallShell.java
    /root/experiment/hive
    


    如果我不设置dir或设dir为null,那么fileName不得不是相对路径,最好是绝对路径:

    call.callCMD("/root/experiment/hive.tar", "/root/experiment/hive", null);
    // OR
    call.callCMD("/root/experiment/hive.tar", "/root/experiment/hive");


    如果我设置了dir指向了hive所在的父目录就好办多了:

    call.callCMD("hive.tar", "hive", "/root/experiment/");

    3.调用Shell脚本

    Java调用Shell命令和调用Shell脚本的操作一模一样。我这里介绍另外几个方面:

    1. 给脚本传递参数;
    2. 捕获调用的输出结果;
    3. envp的使用。

    给脚本传递参数,这个操作很简单,无非是把参数加到调用命令后面组成String,或String[]。

    捕获调用输出信息,前面也提到过用Process.getInputStream()。不过,建议最好对输入流进行缓冲:

    BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));


    另外,envp是一个String[],并且String[]中的每一个元素的形式是:name=value。如:我的Linux系统中没有以下环境变量,但是我把它们写在Java代码中,作为envp:

    val=2
    call=Bash Shell


    我要调用的Shell脚本是:/root/experiment/test.sh。

    #!/usr/bin/env bash
    
    args=1
    if [ $# -eq 1 ];then
    	args=$1
    	echo "The argument is: $args"
    fi
    
    echo "This is a $call"
    start=`date +%s`
    sleep 3s
    end=`date +%s`
    cost=$((($end - $start) * $args * $val))
    echo "Cost Time: $cost"


    Java调用代码是:

    private void callScript(String script, String args, String... workspace){
    	try {
    		String cmd = "sh " + script + " " + args;
    //        	String[] cmd = {"sh", script, "4"};
    		File dir = null;
    		if(workspace[0] != null){
    			dir = new File(workspace[0]);
    			System.out.println(workspace[0]);
    		}
    		String[] evnp = {"val=2", "call=Bash Shell"};
    		process = Runtime.getRuntime().exec(cmd, evnp, dir);
    //            process = Runtime.getRuntime().exec(cmd);
    		BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
    		String line = "";
    		while ((line = input.readLine()) != null) {
    			System.out.println(line);
    		}
    		input.close();
    	}
    	catch (Exception e){
    		e.printStackTrace();
    	}
    }
    
    public static void main(String[] args) {
    	// TODO Auto-generated method stub
    	CallShell call = new CallShell();
    	call.callScript("test.sh", "4", "/root/experiment/");
    }


    输出:

    /root/experiment/
    The argument is: 4
    This is a Bash Shell
    Cost Time: 24

    展开全文
  • Android中常用的adb shell命令

    万次阅读 多人点赞 2015-11-10 18:42:59
    注意事项:这里写的命令,网页会...android 常用shell命令记录下来备忘设置adb环境变量其实就是将adb.exe的路径放到Path中,目的是cmd直接可以使用adb命令 比如我的adb.exe路径G:\tools\adt-bundle\sdk\platform-tools

    注意事项

    这里写的命令,网页可能会重新编辑格式,比如我写了两个减号,发布后变成了一个减号;
    如果这里的命令不能正确执行,请手动输入命令,切记切换英文状态。
    android 常用shell命令记录下来备忘
    \n 在shell命令中的作用是换行(而\r\n会将一个二进制文件格式从unicode变为混合格式)
    & 可以用来连接多个命令
    -help 可以快速知道一个命令怎么用的
    比如adb -help 可以知道adb的用法
    

    参考文章
    https://github.com/mzlogin/awesome-adb

    设置adb环境变量

    其实就是将adb.exe的路径放到Path中,目的是cmd直接可以使用adb命令
    比如我的adb.exe路径G:\tools\adt-bundle\sdk\platform-tools\adb.exe
    我的电脑》高级》设置》环境变量》Path》增加G:\tools\adt-bundle\sdk\platform-tools
    

    (注意不要adb.exe)
    ##检测环境变量

    打开cmd窗口,输入adb看效果
    如果出现一堆adb信息说明配置成功         
    如果出现'adb' is not recognized as an internal or external command
    

    进入shell
    adb shell
    如果有多个设备怎么办?
    adb devices查看你的设备;
    adb -s xiaomi shell:-s命令表示选择设备,这里是选择xiaomi设备进shell
    ls查看文件

     ls -l /system/app/Demo.apk
    rwxr-xr-x root     root        48550 2016-02-22 21:55 CertificateInstallerProviders.apk
    

    Linux的文件基本上分为三个属性:可读®,可写(w),可执行(x)。
    对rwxr-xr-x 的解读:
    rwx(Owner)r-x(Group)r-x(Other)
    这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。
    命令中r=4,w=2,x=1,比如

    chmod 644  system/app/Demo.apk命令执行以后,查看这个文件发现权限被修改了
     ls -l /system/app/Demo.apk
     -rw-r--r-- root     root        48550 2016-02-22 21:55 Demo.apk(将这个apk放在了system下面,而且还让它具有root权限了)
    

    ls -a 列出当前目录下的所有文件

    ##cd切换路径
    cd /mnt/sdcard 切换到内存卡
    mount挂载
    mount -o remount,rw /system 将/system目录挂载,设置为可以读写
    实例:

    127|shell@android:/mnt/sdcard $ mount -o remount,rw /system
    mount -o remount,rw /system
    mount: Operation not permitted
    

    如果出现mount: Operation not permitted说明没有root权限

    su获取ROOT权限
    前提是你的手机已经root了
    su命令表示切换ROOT用户下运行(就是说你有了root权限啦)
    下面先获取root,获取root成功的时候$变成了#

    255|shell@android:/mnt/sdcard $ su
    su
    root@android:/storage/sdcard0 # mount -o remount,rw /system 
    mount -o remount,rw /system
    

    此时在执行挂载就可以成功

    注意:$表示普通权限用户;#表示ROOT权限用户。

    cp复制文件

    cp -f /sdcard/SDKLongRrs.apk /system/app/SDKLongRrs.apk##
    

    如果 cp: not found,说明该手机中cp命令不存在,换cat复制试试

    127|root@android:/storage/sdcard0 # cat  /sdcard/SDKLongRrs.apk> /system/app/SDKLongRrs.apk
    

    右箭头>指明拷贝的方向哈

    获取md5值

     md5 /system/app/SDKLongRrs.apk
    

    获取一个目录下所有文件的md5

     md5 /system/app/*
    

    chmod修改文件权限
    让apk变成可以安装的

     chmod 644 /system/app/SDKLongRrs.apk
    

    pm安装apk卸载应用

    pm install -r /system/app/SDKLongRrs.apk
    pm uninstall com.baidu.map.location
    

    安装应用

    adb install  C:\Users\Administrator\Desktop\Root.apk
    

    这个将电脑桌面的Root.apk安装到手机上
    有可能不成功,直接看信息,对照英文找原因,比如小米的需要点击允许安装,在比如空间不足,在比如应用已经存在手机上。
    卸载应用

    adb uninstall com.baidu.map.location
    (你需要知道应用的包名哈、打开界面、执行如下操作就可以看到包名)

    adb shell dumpsys window | grep mCurrentFocus
    

    不用root手机也能够卸载系统应用
    这里 --user 0就是以root身份去执行命令

     adb shell pm uninstall -k --user 0 com.qihoo.browser
    

    启动应用
    (1)启动Activity
    am start -n com.googleplayapp.storerootsuaction/.MainActivity( 你得知道对应的界面的Activity路径以及包名哈)

    adb shell am start -n com.test.provider/.MainActivity
    
    

    (2)启动service

    	<service
            android:name=".MyService"
            android:description="@string/Desciption"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.nandhan.myservice" />
            </intent-filter>
        </service>     
    
    adb shell am startservice com.nandhan.myservice/.MyService
    

    查看正在运行的 Services

    adb shell dumpsys activity services [<packagename>]
    包名是必须的、不需要写完整的包名、支持模糊匹配
    例如adb shell dumpsys activity services com.linux.example
    

    查看正在运行的 activity

    adb shell dumpsys activity [<packagename>]
    包名是必须的、不需要写完整的包名、支持模糊匹配
    例如adb shell dumpsys activity com.linux.example
    

    clear 清除应用数据

    pm clear com.googleplayapp.storerootsuaction
    

    ##cmd下直接使用adb shell命令
    如果不进入shell的,如何执行以上命令
    cmd下面直接使用adb shell 后面跟上对应的命令就好
    比如清除应用数据

    adb shell pm clear com.googleplayapp.storerootsuaction
    

    ##电脑输入文字到手机
    比如手机要上百度,手机打开浏览器,点击地址栏,输入法切换到英文,cmd命令

    adb shell input text "www.baidu.com"
    

    你会看到手机浏览器的网址变成百度了
    文件传输
    电脑复制文件到手机
    方法1:cmd下面使用push命令

    adb push "C:\Users\Administrator\Downloads\Root.apk" /mnt/sdcard/goodRoot/
    

    将电脑下载里面的Root.apk复制到手机sdcard的goodRoot文件夹下面
    方法2:直接使用eclipse里面的File Explorer(对android程序员而言的哈)
    复制手机文件到电脑

    adb pull  /sdcard/packages.xml  C:\Users\linux\Desktop\packages.xml
    

    导出手机上的app到电脑上
    如何导出 一个apk?首先获取包名,然后找到它在手机上的安装路径,接下来拉取到电脑上.首先adb shell dumpsys activity | findstr ResumedActivity获取包名,然后adb shell pm path 包名获取安装路径,接下来adb pull app-path pc-path导出到电脑上。举例子:

    D:\Program Files\cmder_mini
    λ adb shell dumpsys activity | findstr ResumedActivity
    adb server version (39) doesn't match this client (41); killing...
    * daemon started successfully
        mResumedActivity: ActivityRecord{fa0a1d4 u0 com.samsung.android.app.dressroom/.settings.MyWallpapersActivity t2352}
     ResumedActivity:ActivityRecord{fa0a1d4 u0 com.samsung.android.app.dressroom/.settings.MyWallpapersActivity t2352}
      ResumedActivity: ActivityRecord{fa0a1d4 u0 com.samsung.android.app.dressroom/.settings.MyWallpapersActivity t2352}
    
    D:\Program Files\cmder_mini
    λ adb shell pm path com.samsung.android.app.dressroom
    package:/system/priv-app/DressRoom/DressRoom.apk
    
    D:\Program Files\cmder_mini
    λ adb pull /system/priv-app/DressRoom/DressRoom.apk  C:\Users\Administrator\Downloads\DressRoom.apk
    /system/priv-app/DressRoom/DressRoom.apk: 1 file pulled, 0 skipped. 31.6 MB/s (7197293 bytes in 0.217s)
    

    快速获取文件路径
    打开cmd,将文件拖进来,你就可以看到文件的路径哈
    ##eclipse中File Explorer的使用
    手机调试模式连接电脑,使用File Explorer可以查看手机文件;
    root以后的手机可以查看data下面的文件
    如果已经root,但是data打不开,使用以下命令
    cmd下面

    adb shell
    shell@android:/ $ su root
    chmod -R 755 /data    
    

    (R必须大写,linux命令区分大小写的,cmd命令不区分大小写,shell命令是一种linux命令)
    点击这里查看chmod 755的含义
    ##rm 删除命令

     rm -r  /mnt/sdcard/AppFolder/a.mp3  移除a.mp3文件
    

    删除文件夹的时候需要加上-r参数

     rm -r  /mnt/sdcard/AppFolder
    

    关闭程序

     adb shell am force-stop 包名
    

    一次卸载多个应用

    adb uninstall com.android.a
    adb uninstall com.android.b
    adb uninstall com.android.c
    adb uninstall com.android.d
    adb uninstall com.android.e
    

    将这多条命令写成一个.bat文件,直接点击bat就可以卸载多个应用了。
    reboot重启手机

    adb reboot  重启
    adb reboot recovery 重启进入recovery模式
    

    cat查看文件
    cat error.txt 这个命令可以查看error.txt文件的内容
    批量执行多条adb shell命令
    adb命令带参数,cmd下面带上参数,先获取su,然后做其他事
    演示在cmd下面可以直接使用su权限来删除/system/bin/testa文件和/system/xbin/testb

    adb shell "su -c 'rm -r -f /system/bin/testa'"
    adb shell "su -c 'rm -r -f /system/xbin/testb'"
    

    如果是直接一条条执行shell命令将是下面的4条命令

    adb shell
    su
    rm -r -f /system/bin/testa
    rm -r -f /system/xbin/testb
    

    如何批量执行多条命令呢
    写一个.bat文件,文件内容如下:

    adb shell "su -c 'rm -r -f /system/bin/testa'"
    adb shell "su -c 'rm -r -f /system/xbin/testb'"
    pause
    

    保存为bat文件,直接点击执行.(windows系统下)。
    (pause表示不关闭cmd窗口,这样就可以看到执行的结果了)
    查看进程加载的库
    可以根据进程id,查看进程加载了哪些库,cat /proc/pid/maps
    kill 干掉进程
    adb shell am force-stop
    作用:强制关闭一个应用程序
    举例:adb shell am force-stop com.lt.test
    adb shell am force-stop比使用 kill -9 要方便
    参考http://blog.sina.com.cn/s/blog_6294abe70101275q.html
    ps可以查看到进程的pid
    kill -s 9 pid干掉指定pid的进程
    批量干掉进程

    busybox pkill -9 父进程
    ps
    USER         PID     PPID  VSIZE  RSS     WCHAN    PC         NAME
    u0_a145   10608 134   292960 26816 ffffffff 4019ca70 S com.ex.thre
    u0_a146   10755 134   302420 32152 ffffffff 4019ca70 S com.ex.two
    

    使用kill -s 9 134,就可以干掉 PID =134. PID =10608. PID =10755三个进程

    查看内存信息
    看手机内存信息cat /proc/meminfo
    查看应用的内存信息 dumpsys meminfo 应用包名
    查看应用是否安装
    查看应用的安装路径 pm path 应用包名
    获取手机上已经安装的所有的程序 pm list packages
    过滤grep 和findstr
    在windows上直接使用findstr来过滤你想要的信息

    adb shell ps|findstr baidu
    

    这个命令找出手机上正在运行并且这个名字包含baidu的进程

    //下面的写法也对
    adb shell ps baidu
    adb shell ps|findstr -i baidu
    

    对应的android或者linux中的shell命令是grep

    ps|gerp  baidu
    

    提示 :有的手机上没有grep命令,这时候可以采用findstr;或者往手机里放一个busybox文件,然后使用busybox grep命令,效果一样
    查看运行的程序
    查看手机正在运行的程序 ps
    查看自己的程序是否在运行 ps | grep 应用包名
    如果没有grep命令,可以放置一个busybox工具到手机
    查看360对应的程序是否在运行 ps | busybox grep m.qihoo*
    删除多个文件
    cd dir
    rm * 删除dir中所有文件
    adb获取手机参数
    adb获取手机所有参数参考这个
    adb shell getprop
    adb获取iccid

    service call iphonesubinfo 4(需要权限android.permission.READ_PHONE_STATE)
    

    adb获取imei

    adb -d shell dumpsys iphonesubinfo
    

    adb获取androidid
    androidid藏在这里[net.hostname]: [android-b33f3ac550112627]
    命令:getprop net.hostname
    adb获取serialno

    命令:getprop ro.boot.serialno或者getprop ro.serialno
    

    adb获取imei

    service call iphonesubinfo 1
    

    更多信息参考这个
    http://stackoverflow.com/questions/27002663/adb-shell-dumpsys-iphonesubinfo-not-working-since-android-5-0-lollipop
    使用"读取proc的方式"获取正在运行的进程
    // 1,遍历"/proc"文件夹下面的文件夹,其中有些"文件夹名称"就是进程id(PID)
    ls /proc
    // 2,cat命令获取对应进程的名字(cat /proc/PID/cmdline)
    cat /proc/1/cmdline 得到结果/init
    查看进程具体的信息
    (实例:12073是要查看的进程的PID)

    cat /proc/12073/maps   查看进程的文件结构
    cat /proc/12073/status   查看进程的状态
    

    ##通过packages.xml文件查看app安装信息
    在/data/system/packages.xml文件中,找到你应用相关内容
    我在小米上使用cat /data/system/packages.xml命令得到以下数据

    <package name="com.trafficctr.miui" codePath="/system/app/TrafficControl" nativeLibraryPath="/system/app/TrafficControl/lib" flags="540229" ft="152fdda2cc0" it="152fdda2cc0" ut="152fdda2cc0" version="29" userId="10069">
           .....
        </package>
    

    显然name就是包名,codePath就是安装的路径
    使用shell启动和终止模拟器

    adb shell stop//停止
    adb shell start//启动
    

    ##多设备选择
    adb devices//显示处于调式模式的devices
    adb -s emulator-5554 shell//表示选择5554模拟器的进入shell
    42.busybox的安装
    buxybox
    查看进程优先级
    假设要查看程序com.test.app.a的进程优先级
    adb shell(进入shell)
    ps|grep com.test.app.a(列出这个进程)

    u0_a37    28155 164   909516 36900 ffffffff b75baa27 S com.test.app.a
    

    cat /proc/28155/oom_adj(获取这个进程的adj值)
    adj值则在ProcessList中定义,adj的取值范围[-17,16],取值越大说明优先级越低。adj取值说明参考这里
    dumpsys 查看内存,cpu,电量信息
    1)查看所有内存信息
    命令:dumpsys meminfo
    2)查看某个包的内存信息
    命令:dumpsys pkg_name
    3)查看CPU使用情况、查看你的应用占了多少CPU
    命令:adb shell dumpsys cpuinfo

    C:\Users\Administrator
    λ adb shell dumpsys cpuinfo
    Load: 6.48 / 5.54 / 5.02
    CPU usage from 688557ms to 354472ms ago with 99% awake:
      16% 11015/com.tencent.mm: 12% user + 3.6% kernel / faults: 106584 minor 3083 major
      6% 1645/system_server: 3.2% user + 2.8% kernel / faults: 50408 minor 244 major
      2.5% 350/surfaceflinger: 1.1% user + 1.4% kernel / faults: 729 minor 16 major
    

    4)如何查看android cpu是32位还是64位

    adb shell getprop ro.product.cpu.abi
    

    5)查看电量信息
    命令:dumpsys battery
    参考这里:Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息

    findstr 和grep过滤搜索
    1)cmd下搜索包名为com.linux.test的进程

    adb shell ps|findstr /i "com.linux.test"
    

    2)shell下面搜索
    先使用adb shell进去,然后使用grep命令过滤

    ps|grep "com.linux.test"
    

    ##查看最上层成activity名字

    adb shell dumpsys activity | findstr "mFocusedActivity"
    

    9.0以上高版本也可以

    adb shell dumpsys activity | findstr ResumedActivity
    
    //万能方法 
    adb shell dumpsys activity | findstr your.package.name
    

    ##栈顶Fragment:

    adb shell dumpsys activity your.package.name
    

    ##查看最上层窗口信息

     adb shell dumpsys window windows | findstr  mCurrent
    

    查看端口

    显示已连接的端口:netstat -ntup
    显示正监听的端口:netstat -ntupl
    查询端口进程应关系cat /proc/net/tcp6
    

    这里写图片描述
    这里写图片描述

    如果查询14752端口被那个进程占用?
    (1)16进制39A0=10进制14752;
    (2)39A0对应的进程ID(也叫uid)是10096
    sl local_address remote_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
    0: 00000000000000000000000000000000:39A0 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 10096 0 8887 1 00000000 100 0 0 2 -1
    (3)使用ps命令
    在android中,uid大于10000的是应用程序创建的用户。
    ps的第一列是uid,大于10000的uid会以u0_a开头,10096 显示为u0_a96,最后一列就是进程名。
    adb发送广播

    adb shell am broadcast -n com.lt.test/.MyBroadcast
    adb shell am broadcast -a "MyBroadcastAction"
    

    ##通过 ADB Shell 获取 Android ID
    https://cherysunzhang.com/2017/04/getting-android-id-from-adb-shell/

    adb shell settings get secure android_id
    
    adb shell content query --uri content://settings/secure/android_id --projection value
    

    清除数据和缓存

    adb shell pm clear <PACKAGE>
    

    屏幕截图

    adb shell /system/bin/screencap -p /sdcard/screenshot.png&adb pull /sdcard/screenshot.png D:\linux\sdk\test\screenshot.png&D:\linux\sdk\test\screenshot.png
    

    屏幕录制

    **录屏**
    adb shell screenrecord /sdcard/test.mp4
    #导出到电脑中(记得先在电脑建立一个文件)
    adb spull  /sdcard/test.mp4 D:\linux\sdk\test\test.mp4
    

    模拟点击

    #模拟滑动
    向左滑动
    adb shell input swipe 800 300 200 300
    向右滑动
    adb shell input swipe 200 300 800 300
    向上滑动
    adb shell input swipe 300 800 300 200
    向下滑动
    adb shell input swipe 300 200 300 800
    #模拟点击
    adb shell input tap 250 250
    #模拟点击home键
    adb shell input keyevent 3
    
    更多参考
    https://lavenderstream.github.io/2016/11/10/android-sendevent%E6%A8%A1%E6%8B%9F%E6%BB%91%E5%8A%A8%E7%82%B9%E5%87%BB%E4%BA%8B%E4%BB%B6/
    

    查看anr日志

    adb shell cat data/anr/traces.txt >C:\Users\Administrator\Desktop\traces.txt
    

    日志一般开头是这样的

    ----- pid 9830 at 2019-03-27 21:08:08 -----
        Cmd line: com.tencent.mm
    

    如果过滤你的应用日志?Cmd line: com.tencent.mm(记得换成你的包名)

    查看当前Activity是否销毁

    adb shell dumpsys activity>activity.txt
    

    将当前的四大组件(Activity,Service,BroadCase,ContentProvider)的存在情况打印到当前目录的activity.txt文件中。然后直接输入activity.txt就可以打开这个文件了。当然用pwd命令可以打印当前目录的路径。

    或者直接用下面的命令一步到位,导出到activity.txt文件,同时打开activity.txt文件(Windows系统)

    adb shell dumpsys activity>activity.txt&activity.txt
    

    查看过滤log
    显示所有优先级大于等于“warning”的日志

    adb logcat *:W
    

    批量获取包名、应用版本号

    linux

    adb shell  dumpsys package packages | grep -E 'Package \[|versionName'
    

    windows

    adb shell dumpsys package packages | findstr -E 'Package \[|versionName'
    
    查看某一个应用的版本号 比如gms
    adb shell pm dump com.google.android.gms | findstr “versionName” 
    

    aab安装
    Android App Bundle(aab)是一种分包技术、根据设备分发不同大代码片段、减少无用的代码下载和安装。aab安装到手机分两步、首先是转为apk、然后是安装。
    官网参考 https://developer.android.com/studio/command-line/bundletool
    工具下载https://github.com/google/bundletool/releases
    一条命令将aab安装到手机

    java -jar C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools\bundletool-all-1.0.0.jar build-apks --bundle=E:\gp\GirlyWallpapers\app105491\v1\app105491-release.aab --output=E:\gp\GirlyWallpapers\app105491\v1\app105491-release.apks&java -jar C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools\bundletool-all-1.0.0.jar install-apks --apks=E:\gp\GirlyWallpapers\app105491\v1\app105491-release.apks
    

    获取md5值

    certutil -hashfile E:\demo\music\build\outputs\apk\release\com.oztdemo.music-V2.0.0-1811.apk MD5
    

    wifi调式

    连接设备
    adb connect 10.223.161.1:23046
    断开连接
    adb disconnect 10.223.161.1:23046
    查询系统信息

    获取系统版本:

    adb shell getprop ro.build. version .release
    

    获取系统api版本:

    adb shell getprop ro.build.version.sdk
    

    网络控制

    打开WiFi

    adb shell svc wifi enable
    

    关闭WiFi

    adb shell svc wifi disable
    

    打开移动网络

    adb shell svc data enable
    

    关闭移动网络

    adb shell svc data disable
    

    查看tcp_keepalive_time

        adb shell cat /proc/sys/net/ipv4/tcp_keepalive_time
    

    APP安装位置

    查询三星相机安装位置(com.sec.android.app.camera可以换为你想找的app的包名)

    adb shell pm list packages -f |findstr com.sec.android.app.camera
    
    640?wx_fmt=gif
    展开全文
  • Shell脚本

    万次阅读 2020-10-04 20:29:52
    这里写目录标题Shell脚本1.Shell脚本简介2.Shell2.1 Shell 脚本的解释器2.2 脚本的编写规范2.3 执行脚本的三种方式2.4变量的声明2.5变量的引用2.6删除变量 只读变量2.7字符串使用2.8字符串长度及截取2.9脚本参数传递...
  • 最近在工作中遇到一个很奇葩的问题,就是一个嵌入式的SDK编译,它里面执行shell命令的时候,使用的dash shell来解析,而通常我们默认用的是bash shell来解析;我按照bash shell那样照常编写脚本,大部分的脚本是没有...
  • shell 参数换行 & shell 输出换行的方法

    万次阅读 多人点赞 2019-08-21 10:23:30
    1. shell 参数换行 Linux参数太长,一般可取续行符 "\"进行参数换行/续行。反斜杠\ 后面紧跟回车,表示下一行是当前行的续行. 如下的代码所示 python target_attack.py \ --input_dir="${INPUT_DIR}" \ --output_...
  • Shell编程--初识shell

    千次阅读 2020-12-16 22:24:43
    文章目录shell编程一、初识shellshell 定义shell的分类和切换使用场景shell 特性回顾bash 初始化二、shell 脚本规范三、变量的类型练习1练习2四、脚本运行创建bash脚本(shell脚本)bash脚本执行子shellbash 脚本...
  • IDEA中编写并运行shell脚本

    万次阅读 多人点赞 2018-07-31 09:25:37
    IEDA中的bashsupport插件支持在IDEA中编写shell脚本文件,有友好的代码格式,支持自动补全,检查错误,并且配置完之后,还可以在IEDA中直接运行shell脚本。下面将一步一步演示插件的安装和配置。 打开IEDA,安装...
  • Shell_Linux Shell 中实现字符串切割的几种方法

    万次阅读 多人点赞 2018-06-20 21:14:04
    我们在shell 脚本编程中,经常需要用到字符串切割,即将字符串切割为一个数组,类似java 中的split 函数,下面对几种常见的方式做一个总结。目录方法一: 利用shell 中 变量 的字符串替换 方法二: 设置分隔符,...
  • 什么是shellshell编程

    千次阅读 多人点赞 2018-04-10 22:58:02
    1.什么是shellshell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。 说到底,Shell是用户与内核进行交互操作的一种接口...
  • Linux Shell速成

    2020-07-22 20:30:59
    shell 是一门古老的胶水语言,虽然现在有python这样的跨平台胶水语言, 技术人员的惯性(项目组中的大牛精通shell, 生产系统,和编译部署系统中就存在很多shell脚本),如果我们能快速掌握shell, 那么能让我们在工作...
  • 文章目录Shell是乜鬼Shell变量定义变量使用变量Shell数组定义数组读取数组Shell多行注释Shell输入&&输出输入——read输出——echoShell函数函数参数总结代码 Shell是乜鬼 shell是一个用C语言编写的程序,它...
  • ShellShell入门解析

    千次阅读 2020-06-02 23:11:49
    一、Shell概述 为什么要学习Shell呢? 1)需要看懂运维人员编写的Shell程序 2)编写一些简单Shell程序来管理集群、提高开发效率 Shell解析器 1)Linux提供的Shell解析器有: cat /etc/shells /bin/sh /bin/bash ...
  • shell编程

    千次阅读 多人点赞 2019-08-05 21:06:35
    什么是shell编程 高大上的解释,往往让人摸不住头脑。一句话概括就是:shell编程就是对一堆Linux命令的逻辑化处理。 为什么要会shell编程 就是批处理动作,解放双手,避免重复性劳动。 第一个...
  • Shell - 传递参数到Shell 脚本

    千次阅读 2019-10-26 10:41:41
    文章目录Shell - 传递参数到Shell 脚本1、参数传递规则2、参数引用规则3、执行文件参数4、获得传递的参数个数5、其它特殊组合 Shell - 传递参数到Shell 脚本 1、参数传递规则 以空格分隔开 ./xxx.sh 1 2 3 2、参数...
  • Linux与Shell

    千人学习 2019-12-02 12:44:36
    本节为go linux与shell,主要讲解go语言在linux与shell中的应用,包括基本的概念、基本命令和一些实例等。 
  • shell,打通 Linux 任督二脉,任何武功都随你所用

    万次阅读 多人点赞 2021-06-13 16:22:35
    管理整个计算机硬件的其实是操作系统的内核(kernel),这个内核是需要被保护的! 所以我们一般使用者就只能通过 shell 来跟内核沟通,以让内核达到我们所想要达到的工作。
  • 冰蝎下的反弹shell连接msfconsole

    万次阅读 2021-01-07 18:48:20
    文章目录前言一、使用木马getshell1.搭建环境二、冰蝎配置三、kali监听总结 前言 好久没碰美少妇(MSF)了,恰巧昨天在群里水群,有个表哥问为什么msf监听不到数据。为此我带着表哥的疑问进行了简单的研究。大体的...
  • 什么是shellshell的用途是啥?

    万次阅读 2019-07-02 17:58:07
    场景:只知道写shell脚本,却不知道什么是shell?那shell是什么呢?找到了之前在腾讯课堂上看的视频,这是课件笔记 你学Linux的话,不懂shell等同于不懂linux shell是操作系统的最外层,shell可以合并编程语言以...
  • Shell 概述

    千次阅读 2016-08-26 00:29:57
    简介Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 ...
  • Shell脚本备忘录

    万次阅读 2021-08-16 23:29:00
    [root@localhost testShell]# x=1024 [root@localhost testShell]# echo "x=$x" x=1024 使用 ${ } 作为单词边界 [root@localhost testShell]# x=1024 [root@localhost testShell]# echo "x=${x}-123" x=1024-123 ...
  • shell编程进阶

    千次下载 热门讨论 2011-09-19 23:29:57
    shell编程进阶 shell脚本专家指南
  • shell脚本语言(超全超详细)

    万次阅读 多人点赞 2020-04-20 22:26:20
    shell脚本语言1、shell的概述2、脚本的调用形式打开终端时系统自动调用:/etc/profile 或 ~/.bashrc3、shell语法初识3.1、定义以开头:#!/bin/bash3.2、单个"#"号代表注释当前行第一步:编写脚本文件第二步:加上可...
  • [shell]shell简介

    万次阅读 2018-07-11 12:02:21
    一、简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核...
  • 曾经写过“交互式shell和非交互式shell、登录shell和非登录shell的区别”,但那时理解相对更浅一些,现在多了一点认识,把这篇文章稍微完善一下吧。 交互式shell和非交互式shell、登录shell和非登录shell的区别。...
  • 首先我们需要把bash理解为一种模式,我们不如把这种模式想象成类似于洋葱一样的结构,我们可以一层一层剥开,也就是说我们可以一层一层的进入子shell。就好比我们进入一栋楼,打开一个房间是一个环境,在当前这个...
  • Linux_Shell Shell编程简介

    千次阅读 多人点赞 2016-08-02 20:10:50
    这几天博主刻苦研究了下 Shell 编程,感觉 Shell 编程是一门非常强大的语言。 下面就Shell 编程的几个点进行下讲解: 0.Shell 编程的基本含义 (一个最简单的Shell 程序 / Shell 编程的注意点) 1.Shell 的内置...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,909,091
精华内容 2,363,636
关键字:

shell