精华内容
下载资源
问答
  • Linux一句命令判断大小端序

    千次阅读 2018-12-28 09:41:46
    笔者是比较懒的人,不想写那么多代码,想一句命令就解决端序判断的问题。 想了想,通过理解端序的背后原理,使用Shell命令判断端序的问题。原来方法还是挺多的。笔者系统端序为小端序模式。 方法一 echo-nI|...

        笔者在开发Linux应用程序时,由于判断大小端序的问题,使用的方法是用C语言判断,方法是可以判断得到系统是什么端序,但是太麻烦了。笔者是比较懒的人,不想写那么多代码,想一句命令就解决端序判断的问题。

        想了想,通过理解端序的背后原理,使用Shell命令来判断端序的问题。原来方法还是挺多的。笔者系统端序为小端序模式。

     

    方法一

    echo -n I | od -o | head -n1 | cut -f2 -d" " | cut -c6
    
    • 输出:1为小端模式,0为大端模式;

    • 解析:od命令的作用为将指定内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示;

     

    方法二

    echo -n I | od -o | head -n1 | awk '{print $2}'| cut -c6
    
    • 输出:1为小端模式,0为大端模式;

    • 解析:awk命令为文本处理。

     

    方法三

    lscpu | grep -i byte
    
    • 输出:Byte Order:            Little Endian;

    • 解析:grep -i 为不区分大小写匹配;

    • 注意:在低版本的Linux可能不支持lscpu命令。

     

    方法四

    dpkg-architecture | grep -i end
    
    • 输出:

          DEB_BUILD_ARCH_ENDIAN=little

          DEB_HOST_ARCH_ENDIAN=little

          DEB_TARGET_ARCH_ENDIAN=little

    • 解析:dpkg-architecture命令是列出dpkg打包的一些环境参数;

     

    关于更多

    • 文章首发于微信公众号:Qt君
    展开全文
  • 文章目录一、Linux命令的普遍语法格式二、显示目录文件命令:ls 一、Linux命令的普遍语法格式 Linux命令格式(可修改): 命令 -选项 参数 例子: ls -la /etc 二、显示目录文件命令:ls 英文原意:list ...

    一、Linux命令的普遍语法格式

    • Linux命令格式(可修改):
    命令 -选项 参数
    
    • 例子:
    ls -la /etc
    

    在这里插入图片描述

    二、显示目录文件命令:ls

    • 英文原意:list
    • 命令所在路径:/bin/ls
      在这里插入图片描述
    • 执行权限:所有用户
    • 功能描述:显示目录文件
    • 语法:
      • -a 显示所有文件,包括隐藏文件
        在这里插入图片描述
      • -l 详细信息显示,包括文件的属性和权限等数据
        在这里插入图片描述
      • -d 仅显示目录名,而不显示目录下的内容列表
        在这里插入图片描述
      • -h人性化显示(hommization)
        在这里插入图片描述
      • -t 用文件和目录的更改时间排序;可以用第一个显示的文件判断最近修改的文件
        在这里插入图片描述
      • -r 按字母逆序或最早优先的顺序显示输出结果
        在这里插入图片描述
      • -R 连同子目录一同显示出来,也就所说该目录下所有文件都会显示出来(显示隐藏文件要加-a参数)
        在这里插入图片描述

    注意:.开头的文件除非是目录,否则就是隐藏文件

    最常用也是最好用的一个命令就是:

    ls -lrt
    

    在这里插入图片描述
    以其中一条信息为例子,解析每个字段都是什么。

    drwxrwxr-x 2 gxl gxl 4096 6月  26 12:01 linux
    

    在这里插入图片描述

    • 第一位 d 表示文件类型,-表示是二进制文件,d表示目录,l表示软连接文件。
    • 后面的九位,每三个为一组:rwxrwxr-x
      • u(user)所有者,g(group)所属组,o(other)其他人
      • r 读,w 写,x 执行,- 无权限
        在这里插入图片描述
    • 2 是引用计数,表示文件被引用过多少次
    • gxl 表示所有者,一般创建一个文件,所有者默认是创建者
    • gxl 表示所属组
    • 4096 表示文件字节大小,不带单位表示字节
    • 6月 26 12:01 表示文件的最后修改时间。

    注意;Linux没有明确的创建时间,只有最后一次访问时间、文件的状态修改时间、文件的数据修改时间

    • linux 表示文件名

    三、切换目录命令:cd

    • 英文原意:change directory
    • 命令所在路径:shell 内置命令
      在这里插入图片描述

    shell内置命令和外部命令的区别

    • 内部命令是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell 程序识别并在shell 程序内部完成运行,通常在linux系统加载运行时shell 就被加载并驻留在系统内存中。
    • 外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。
    • 内部命令和外部命令最大的区别之处就是 性能。内部命令由于构建在shell中而不必创建多余的进程,要比外部命令执行快得多,因此和执行更大的脚本是一个道理,执行包含很多外部命令的脚本会损害脚本的性能。
      • 内部命令是由Bash自身提供的命令,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:cd,echo等。
      • 外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……….等等。比如:ls、vi等。
    • 执行权限:所有用户
    • 功能描述:切换目录
    • 语法:
      • cd 目录名
      • 回到上一级目录:cd ..
      • 还是在当前目录:cd .
      • 返回上两级目录:cd ../..
      • 返回进入此目录之前所在的目录:cd -
        在这里插入图片描述

    四、创建目录命令:mkdir

    • 英文原意:make directories
    • 命令所在路径:/bin/mkdir
      在这里插入图片描述
    • 执行权限:所有用户
    • 功能描述:创建新目录
    • 语法:
      • mkdir -p 目录名(-p递归创建)

    例子:

    • 创建单个目录:
    mkdir -p ./txt/a.txt
    
    • 创建多个目录:
    mkdir -p ./txt/a.txt /tmp/b.txt
    

    在这里插入图片描述
    注意:

    1. 创建的目录如果已经存在,那么Linux会提示无法创建。
      在这里插入图片描述
    2. 不带任何参数地运行mkdir命令,会在当前目录下创建目录。
      在这里插入图片描述
    3. 加上-p,前面的目录没有的会依次创建;不加-p,需要权限。
      在这里插入图片描述

    五、删除空目录命令:mkdir

    • 英文原意:remove empty directories
    • 命令所在路径:/bin/rmdir
      在这里插入图片描述
    • 执行权限:所有用户
    • 功能描述:删除空目录(如果目录下存在文件,不能删除)
    • 语法:
      • rmdir 空目录名

    例子:删除指定目录
    在这里插入图片描述
    在这里插入图片描述

    六、删除文件或目录命令:rm

    • 英文原意:remove
    • 命令所在路径:/bin/rm
      在这里插入图片描述
    • 执行权限:所有用户
    • 功能描述:删除文件
    • 语法:
      • rm -rf 文件名或目录名

    例子:

    • 在 test2 目录下有一个目录 test 和一个文件 test.c,
      • rm -rf test2 是强制删除,不需要输入 y 来确认,容易误删文件。
        在这里插入图片描述
    • rm -rf a1.txt a2.txt 同时删除两个文件
      在这里插入图片描述
    • rm -ir test2 交互式删除文件
      在这里插入图片描述

    七、显示当前目录命令:pwd

    • 英文原意:print working directory
    • 命令所在路径:/bin/pwd
      在这里插入图片描述
    • 执行权限:所有用户
    • 功能描述:显示当前目录
    • 语法:
      • pwd

    例子:

    • 显示当前目录:pwd
      在这里插入图片描述

    八、复制文件或目录命令:cp

    • 英文原意:copy
    • 命令所在路径:/bin/cp
      在这里插入图片描述
    • 执行权限:所有用户
    • 功能描述:复制文件或目录
    • 语法:
      • cp -rp 原文件或目录 目标目录
      • -r 复制目录
      • -p 保留文件属性

    例子:

    • 将目录下的a.txt文件复制,同样可以用于复制后文件改名
      在这里插入图片描述
    • 加-p属性,会将原文件的一些属性比如修改时间等也原封不动的复制过去。如果不加-p属性,那么复制后的文件修改时间为当前系统时间。
      在这里插入图片描述

    九、剪切文件或目录命令:mv

    • 英文原意:move
    • 命令所在路径:/bin/mv
      在这里插入图片描述
    • 执行权限:所有用户
    • 功能描述:剪切文件、改名
    • 语法:
      • mv 原文件或目录 目标目录

    例子:

    • 在当前目录下将c.txt剪切到上一目录下
      在这里插入图片描述
    展开全文
  • 如何判断system命令执行结果

    千次阅读 2018-04-04 17:15:33
    判断system命令执行结果 * 参数: * int:system命令返回值 * 返回值: * bool */ bool Application::systemStatus(int status) { #ifndef WIN32  if (-1 == status)  {  qDebug() ("system execute ...

    1. 先来看一下system()函数的简单介绍:
    1#include <stdlib.h>
    2int system(const char *command);

    system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.

    system()函数调用/bin/sh来执行参数指定的命令,/bin/sh 一般是一个软连接,指向某个具体的shell,比如bash,-c选项是告诉shell从字符串command中读取命令;
    在该command执行期间,SIGCHLD是被阻塞的,好比在说:hi,内核,这会不要给我送SIGCHLD信号,等我忙完再说;
    在该command执行期间,SIGINT和SIGQUIT是被忽略的,意思是进程收到这两个信号后没有任何动作。
    2.   再来看一下system()函数返回值
    The value returned is -1 on error (e.g. fork(2) failed), and the return status of the command otherwise. This latter return status is in the format specified in wait(2). Thus, the exit code of the command will be WEXITSTATUS(status). In case /bin/sh could not be executed, the exit status will be that of a command that does exit(127).
    If the value of command is NULL, system() returns nonzero if the shell is available, and zero if not.
    为了更好的理解system()函数返回值,需要了解其执行过程,实际上system()函数执行了三步操作:
    1.fork一个子进程;
    2.在子进程中调用exec函数去执行command;
    3.在父进程中调用wait去等待子进程结束。
    返回-1的情况: 对于fork失败,system()函数返回-1。
    返回其他值的情况:  如果exec执行成功,也即command顺利执行完毕,则返回command通过exit或return返回的值。
    (注意,command顺利执行不代表执行成功,比如command:"rm debuglog.txt",不管文件存不存在该command都顺利执行了)
    返回127的情况: 如果exec执行失败,也即command没有顺利执行,比如被信号中断,或者command命令根本不存在,system()返回127.
    返回1的情况: 如果command为NULL,则system()函数返回非0值,一般为1.

    3. 看一下system()函数的源码

    看完这些,我想肯定有人对system()函数返回值还是不清楚,看源码最清楚,下面给出一个system()函数的实现:
    01int system(const char * cmdstring)
    02{
    03    pid_t pid;
    04    int status;
    05 
    06if(cmdstring == NULL)
    07{
    08    return (1); //如果cmdstring为空,返回非零值,一般为1
    09}
    10 
    11if((pid = fork())<0)
    12{
    13    status = -1; //fork失败,返回-1
    14}
    15else if(pid == 0)
    16{
    17    execl("/bin/sh""sh""-c", cmdstring, (char *)0);
    18    _exit(127); // exec执行失败返回127,注意exec只在失败时才返回现在的进程,成功的话现在的进程就不存在啦~~
    19}
    20else //父进程
    21{
    22    while(waitpid(pid, &status, 0) < 0)
    23    {
    24        if(errno != EINTR)
    25        {
    26            status = -1; //如果waitpid被信号中断,则返回-1
    27            break;
    28        }
    29    }
    30}
    31 
    32    return status; //如果waitpid成功,则返回子进程的返回状态
    33}

    仔细看完这个system()函数的简单实现,那么该函数的返回值就清晰了吧,那么什么时候system()函数返回0呢?只在command命令返回0时。
    4. 看一下该怎么监控system()函数执行状态
    01int status;
    02if(NULL == cmdstring) //如果cmdstring为空趁早闪退吧,尽管system()函数也能处理空指针
    03{
    04    return XXX;
    05}
    06status = system(cmdstring);
    07if(status < 0)
    08{
    09    printf("cmd: %s\t error: %s", cmdstring, strerror(errno)); // 这里务必要把errno信息输出或记入Log
    10    return XXX;
    11}
    12 
    13if(WIFEXITED(status))
    14{
    15    printf("normal termination, exit status = %d\n", WEXITSTATUS(status)); //取得cmdstring执行结果
    16}
    17else if(WIFSIGNALED(status))
    18{
    19    printf("abnormal termination,signal number =%d\n", WTERMSIG(status)); //如果cmdstring被信号中断,取得信号值
    20}
    21else if(WIFSTOPPED(status))
    22{
    23    printf("process stopped, signal number =%d\n", WSTOPSIG(status)); //如果cmdstring被信号暂停执行,取得信号值
    24}
    5.  这里给我出的做法:

    /*

    * 功能:
    *  判断system命令执行结果
    * 参数:
    *  int:system命令返回值
    * 返回值:
    *  bool
    */
    bool Application::systemStatus(int status)
    {
    #ifndef WIN32
        if (-1 == status)
        {
            qDebug() << QString("system execute failed");
            return false;
        }
        else
        {
            if (WIFEXITED(status))
            {
                if (0 != WEXITSTATUS(status))
                {
                    qDebug() << QString("run shell - failed;exit code:%1").arg(WEXITSTATUS(status));
                    return false;
                }
            }
            else
            {
                qDebug() << QString("system - failed;exit code:%1").arg(WIFEXITED(status));
                return false;
            }
        }
    #endif
        return true;
    }

     number =%d\n", WSTOPSIG(status)); //如果cmdstring被信号暂停执行,取得信号值
    24}
    展开全文
  • 单线程的redis如何处理阻塞命令

    千次阅读 2019-08-06 14:35:29
    这种的阻塞命令不会一直占用着线程,其他命令无法执行吗?然而事实上是可以执行的。 BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 而且...

    今天有个问题,既然redis是单线程的,那么像BLPOP这种的阻塞命令不会一直占用着线程,其他命令无法执行吗?然而事实上是可以执行的。

    这个文章通过redis的源码讲的很清楚了。我总结补充一下人家的东西。
    https://www.jianshu.com/p/xsMzfn

    BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素,
    如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

    redis的线程模型,是接收客户端命令的线程时 I/O 多路复用的,再通过文件事件分配器单线程执行的。如下图,程序总是会将所有产生事件的套接字都入队到一个队列里面, 然后通过这个队列, 以有序(sequentially)、同步(synchronously)、每次一个套接字的方式向文件事件分派器传送套接字: 当上一个套接字产生的事件被处理完毕之后(该套接字为事件所关联的事件处理器执行完毕), I/O 多路复用程序才会继续向文件事件分派器传送下一个套接字
    在这里插入图片描述

    那实际上我们关心的BLPOP 命令的执行就是在文件事件分派器分派后是怎么执行的了。

    对BLPOP命令的处理流程是这样的:

    1. redis先找到对应的key的list,如果list不为空则pop一个数据返回给客户端;
    2. 如果list为空,或者list不存在,就将该key添加到一个blockling_keys的字典中,value就是想订阅该key的client链表。此时对应的client的为block状态
    3. 当有PUSH 类型的命令进来的时候,先从blocking_keys中查找是否存在对应的key,如果存在就往ready_keys这个链表中添加该key;同时将value插入到对应的list中,并响应客户端。
    4. 每次处理完客户端命令后都会遍历ready_keys,并通过blocking_keys找到对应的client,依次将对应list的数据pop出来并响应对应的client;同时检查是否需要再次block。

    整个阻塞执行过程相当于是分散开的,每次请求结束后都判断之前的阻塞列表是否满足执行条件,类似我们用轮询来实现长连接的功能。所以看似阻塞的命令对其他命令的执行时不会有影响的,它们依然是单线程的。

    参考:https://www.cnblogs.com/barrywxx/p/8570821.html
    https://www.jianshu.com/p/xsMzfn

    展开全文
  • APDU命令的结构和处理

    万次阅读 2014-07-02 12:14:18
    10.3 命令的结构和处理 10.3.1 概述 首先,每一条命令均由IFD(接口设备)发起,它通过5字节的命令头告诉卡设备做什么。 然后,在卡发送的过程字节的控制下,该命令继续在某一个方向上传输一串数据字节。   ...
  • 最近在处理一个 `Python` 局部变量的作用域问题时发现有些奇怪,想起了之前常写的 `Lua` 脚本,于是想写个函数测试一下,结果发现短短的十几行代码出现了多个错误,这可是我写了近三年的代码啊,才放下半年就记不清...
  • windows常用命令行命令

    万次阅读 多人点赞 2017-08-31 11:16:21
    注:/c表示执行完命令后关闭cmd窗口;/k表示执行完命令后保留cmd窗口 # 控制台命令窗口中一些技巧 复制内容:右键弹出快捷菜单,选择“标记(K)”,然后选中所需复制的内容,然后右键即可 粘贴内容:右键弹出快...
  • (1)system返回值:指调用system函数的返回值,比如上例中status为system返回值 (2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。 2、如何正确判断test.sh...
  • apache压力测试ab命令使用及结果判断

    千次阅读 2016-07-09 17:58:29
    Failed requests 表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应超时的情况。如果接收到的HTTP响应数据的头信息中含有2XX以外的状态码,则会在测试结果中显示另一个名...
  • Ping 命令详解

    万次阅读 多人点赞 2017-02-10 13:28:08
    简述: ICMP协议是“Internet Control Message Ptotocol”(因特网控制消息协议)的缩写。它是TCP/IP协议族的一个子...它是用来检查网络是否通畅或者网络连接速度的命令 ping命令通常用来作为网络可用性的检查。ping命
  • cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。 (1)其语法格式为: cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] ...
  • Linux sed命令是利用script来处理文本文件。 sed可依照script的指令,来处理、编辑文本文件。 Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 2、sed语法 sed [-hnV][-e][-fscript...
  • Linux中的特殊字符的处理 1、windows和linux环境下的换行符号处理: Windows系统中有如下等价关系: 用enter换行 <====> 程序写\n <====> 真正朝文件中写\r\n(0x0d0x0a) <====>程序真正读取的是\...
  • linux命令:find命令

    千次阅读 2014-10-06 20:54:35
    linux find命令语法 find [起始目录] 寻找条件 操作 find PATH OPTION [-exec COMMAND { } \;] 因为find命令会根据我们给的option,也就是寻找条件从我们给出的目录开始对其中文件及其下子目录中的文件进行递归...
  • 1 找出选项  1.1 处理简单选项
  • Linux Shell环境下用jq命令处理json文件

    千次阅读 2019-07-11 15:00:27
    有时候需要在Shell环境下处理json文件,这时使用jq命令非常方便。 安装 CentOS下可以直接通过yum安装: yum install jq -y 使用方法 假设有一个名为test.json的文件,内容如下: { "Summary": { "Version":...
  • Linux字符串截取和处理命令 (cut、printf、awk、sed、sort、wc) 笔记 文章目录Linux字符串截取和处理命令 (cut、printf、awk、sed、sort、wc) 笔记1.cut 命令2. printf 命令3. awk 命令4. sed 命令5. sort 命令6...
  • APDU命令的结构、处理、常用指令

    千次阅读 2019-03-06 14:44:26
    APDU...a、首先,IFD发送5个字节的命令头给IC卡,这5个字节的内容告诉了IC卡要做什么操作; b、然后,IC卡回传一个过程字节给IFD,告诉IFD,IC卡是否支持该操作; c、如果返回的过程字节告诉IF...
  • linux最常用的20个命令

    万次阅读 多人点赞 2018-05-09 09:07:25
    玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决...
  • ping命令详解 ping命令入门详解

    万次阅读 多人点赞 2018-03-09 22:43:29
    今日小编就为大家介绍一个计算机的命令,它叫做Ping,这边介绍一下它的入 门 知识,主要是关于ping连接和命令方面的介绍。 1、Ping的基础知识 ping命令相信大家已经再熟悉不过了,但是能把ping的功能发...
  • 文件input.txt中有以下数据: line1\ line2 line3 cat input.txt | while read line do echo $line | awk '{print $1}' done 输出结果为: ...AWK如何处理字符串中包含转义字符的问题?
  • Bat文件批量处理----DOS命令

    千次阅读 2018-11-23 00:02:21
    (通常我们在编译完程序,无论是IAR、Keil或者其他编译器都会产生一些编译垃圾,所以当我们想把这些编译产生的垃圾给删除时,每次都要进入不同的文件夹删除这些东西,甚至有时候一不小心还会点错,删错东西,...
  • Dos命令,删除文件(del a.txt),怎样判断是否成功,……因为我要做错误处理
  • BAT命令大全

    万次阅读 多人点赞 2015-08-08 10:33:20
    批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你...
  • Android之——iptables常用命令

    万次阅读 2015-08-08 10:35:00
    iptables常用命令   常用命令列表: 命令 -A, --append 范例 iptables -A INPUT ... 说明 新增规则到某个规则炼中,该规则将会成为规则炼中的最后一条规则。 命令 -D, --delete 范例 iptables -D INPUT --dport 80...
  • mkdir命令的作用是建立名称为dirname的子目录,与MS DOS下的md命令类似,它的使用权限是所有用户。 2.格式 mkdir [options] 目录名 3.[options]主要参数 -m, --mode=模式:设定权限,与chmod类似。 ...
  • 我使用过的Linux命令之trap - 在脚本中处理信号 本文链接:http://codingstandards.iteye.com/blog/836588  (转载请注明出处)   用途说明 rap是一个shell内建命令,它用来在脚本中指定信号如何处理。比如,按...
  • 讯飞语音——离线命令词识别

    万次阅读 热门讨论 2015-08-19 14:41:19
    离线命令词识别 效果图示例源码 地址:http://download.csdn.net/detail/q4878802/9023825步骤:1. 下载SDK 前面文章有,就不在复述了。这里要选择离线命令词的服务以后,重新加载,因为需要下载离线命令词识别的...
  • 处理非定常流场文件时需要对大量数据快速处理,可以首先录制一段宏,然后对宏进行修改,在宏中加入循环结构,实现Tecplot的批处理功能。方法为: 在第三行后面插入: $!Varset |NumLoop|=100 $!Loop |NumLoop| $!...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 391,587
精华内容 156,634
关键字:

后处理判断命令