zoukankan      html  css  js  c++  java
  • linux基本命令3

    命令:
    1.shell 简介
        命令 :用户向内核发起的控制请求
            cd ; ls ;mkdir;rm;
        命令行解释器 用户命令与内核交互工具
            sh->csh->ksh->zsh->bash
        脚本: 
            超多命令有序地放在一个文件中,用来完成一定的功能。
        
        1.0shell执行过程:
            Step1: 用户输入shell命令
            Step2: shell去解释内核所能理解的二进制指令
            Step3: 内核响应(调用驱动代码),控制相关硬件
            Step4: 内核获取硬件的执行结果,交给shell
            Step5: Shell将内核返回的结果展示给用户。
    
        1.1关机命令:
            halt 关机
            reboot  重启
            shutdown -h now 关机
            shutdown -r now 重启
            shutdown -k 
            shutdown -c 
            init 0
    2.命令格式与编辑
        2.1终端:
            用户名@主机名:工作目录 提示符
            whoami 
                    hostname
                            pwd   
                                    $普通用户
                                    #超级用户
            echo $PS1
            PS1='u@h:w$'  提示符格式变量
            u  username
            h  hostname 
            w  绝对路径
            W  当前目录名
            $  用户提示符
            PS2  用户命令未写完提示符
            
        2.2命令格式:
            ls    [option]...   [file]...
            命令  [参数]   [目标]...
                    -a 短参
                    --all 长参
                    
            [ ]可选标志
                ls  -l  jielun  
                ls  
            ... 多参机制
                ls -la 
            ; 多个命令放在同一行输入
             表示命令没有输入完整,下一行继续输入,用来转义回车,所以后直接回车
            
            自动补全
                Tab      
                Tab Tab 补全提示
                Esc 
                
        2.3 history  查看当前终端缓存区中的历史命令
            每一个终端都有一个历史列表缓存区,(history可查看)
            每一个用户有一个历史命令文件.bash_history
            history -c 清空缓存区列表
            history -w 保存缓存区列表到文件中
            history -r 从历史文件读到缓存区
            帮助手册有两个man  history; help history
                
            !! 执行上一条命令
            !2010 执行history中编号为2010的命令
            !-2 执行列表中倒数第二个命令
            文件列表中历史命令的个数是由 HISTSIZE决定 echo $HISTSIZE
            历史文件.bash_history的个数由HISFILESIZE决定 echo $ISTFILESIZE     (~/.bashrc)
            
            内置命令:命令的二进制文件保存在内核中(history,cd).通常的命令保存在硬盘中 /bin/ls,执行时先从硬盘读到内存再交给内核执行.
                
            当一个用户开机登录系统后执行了哪些配置文件
            /etc/profile  为所有用户配置数据,eg:自启动软件 开机就执行的指令
            /etc/bash.bashrc  为所有打开bash的用户配置shell数据
            ~/.profile  为当前用户的配置数据
            ~/.bashrc   为当前用户配置shell的数据
            
            
    3.shell特殊字符
        * 任意长度的任意字符个数
            ls  file*.c 
        ? 单个任意字符
            ls file?.c  file??.c 
        [...] 指定匹配括号中的字符
            ls file[13579].c 
            ls file1[89].c  file2[012345].c 
        [-]  指定匹配括号区间中的字符
            ls file[1-9].c 
            ls file[a-z].c 
        [^...]  匹配除了括号中之外的字符
            ls file[^1357].c 
            scanf("%[^
    ]", buff);
                
        
        管道 |
            command1 | command2
            左输出 | 右输入
            command1 必须有标准输出数据;comman2必须能接收输入
            command1和command2同时运行,command2会阻塞等待输入数据
            dpkg -l | less 
            ls /usr/bin/ | wc -w 
        
        重定向 
        /***************************************************
        everthing is file     一切皆文件
        standard input  标准输入  <键盘>   0
        standard output 标准输出  <显示屏>  1  缓存区满或 程序结束或 调用刷新函数fflush(stdout)
        standard err      标准出错              2  出错就立刻打印
        *****************************************************/
        > == 1>  输出重定向,会覆盖之前内容 
            echo "hello  world" > jielun 
        >> == 1>> 追加,在文件尾添加数据
            echo "hello  echo" >>jielun
        < 输入重定向
            wc < jielun 
        2> 2>> 表示错误信息定位
            ls -l naying 2> log
        &> &>> 表示正确和错误都输出到指定文件
            ls -l naying jielun &> log 
            
        比较特殊的文件            
            /dev/null  无底洞文件,数据保存进去后会消逝.
                echo "hello" &> /dev/null 正确信息和错误信息全部丢弃到/dev/null中.
                cat /dev/null  > ~/.bash_history 清空 历史命令文件.
            /dev/zero 总是能产生'', 
                cat /dev/zero  一直读取到'',能一直从zero中读取出''/dev/random 产生随机数,数量有限.
            
        命令置换
            comman1  `command2`将第二个命令的输出作为前面命令的目标/参数
            ls  `pwd`   
            相当于:ls   /home/fs/Bangwanglong
        
    4.基本维护命令:
        ls -R  /tree 
        less 
        grep 
        head/tail 
        sort -t: -k 4 -n 
            cat /etc/passwd | sort -t:  -k 4 -n 
            
        cut -d: -f 4 
            cat /etc/passwd  | cut -d:  -f 4 
            
            cat /etc/passwd  | sort -t: -k 3 -n | cut -d : -f3 将文件的第3列排序并输出
            
        file 查看文件信息
            file  /bin/ls 查看二进制文件ls的文件信息
            
        grep
            grep -c 匹配到的次数
            grep -i 匹配时忽略大小写
            grep -n 匹配输出时显示行号
            grep -v 反向输出.
                cat /etc/passwd   | grep 'fs'     
        终端:    
            tty: 设备终端->显示屏
            pts: 虚拟终端->Terminal
            pty: 伪终端    ->远程连接
    
    帮助手册:
        man info  help 
            man  1   命令或程序
            man  2   系统调用函数
            man  3   库函数
            whatis  command  查看命令分类
            
        
        挂载命令:
            sudo mount  -t vfat  /dev/sdb2    /home/fs/Bangwanglong
                -t 指定U盘类型
                /dev/sdb2 指定文件的设备节点,可能是sdb3或其他。
                /home/fs/Bangwanglong 指定挂载位置,挂载成功通过此目录访问U盘
            sudo umount  /home/fs/Bangwanglong 
                卸载挂载点,成功后不可通过/home/fs/Bangwanglong访问U盘
                
                
                
        已知strcpy函数的原型是    char *strcpy(char *strDest, const char *strSrc);
    strDest是目的字符串,strSrc是源串。(不调用C的字符串库函数,编写函数 strcpy
        略头文件:#include <string.h> 和 #include <stdio.h>
    功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
    返回指向dest的指针。
    
            char * strcpy( cahr * strDest, const char * strSrc)
            {
                if ( ( strDest == NULL) || (strSrc == NULL) ) // 检查指针的有效性
                // (( !strDest) || (strSrc)或(! ( strDest && strSrc)) (忽略了类型转换, char* 转换为bool是 隐士转换)
                // (( strDest == 0) || ( strSrc == 0)) 维护性差。
                    throw “ Invalid argument(s)” ; //
                char * strDestCopy = strDest; //
                while(( *strDest++ = *strSrc++) != ‘0’); //
                    return strDestCopy;
        }
    /* 
    while(*srtDest ++ = *strSrc++)// 类型转换忽略
    */
    
    /*
    while(*strSrc != ‘’)
        *strDest++ = *strSrc++; //边界遗漏,没有在strDest字符串末尾正确加上’’.
    */
     
    最简单的实现
    char * strcpy( char *des, const char * source)
    {
        char *r = des;
    while( *dest ++ = *source++); //复制到NULL后,循环才停止
        return;
    }
  • 相关阅读:
    数据库事务隔离级别
    impala jdbc4的group by语句的bug,加上limit没错
    火狐不支持innerText属性,只支持innerHTML属性
    struts2.x + Tiles2.x读取多个xml 配置文件
    ids for this class must be manually assigned before calling save():Xxx
    整合ssh model $$_javassist_13 cannot be cast to javassist.util.proxy.Proxy
    火狐点击链接请求两次的问题
    C++——类和动态内存分配
    C++——使用类
    C++——对象和类
  • 原文地址:https://www.cnblogs.com/jxjl/p/8029718.html
Copyright © 2011-2022 走看看