• Linux ls
    1. 为了便于测试,我们在tmp文件夹下建立一个test文件夹,在test文件夹中添加a.txt,b.txt还有文件夹test2,并在test2文件夹中添加a.txt文件。

    2. 首先,使用命令ls -l,结果如下:
      这里写图片描述

    3. 命令:ls -d (只显示当前文件夹)
      这里写图片描述
    4. 命令:ls -ld(只显示当前文件夹具体信息)
      这里写图片描述
    5. 命令:ls -l /tmp/test
      这里写图片描述
    6. 命令:ls -d /tmp/test
      这里写图片描述
    7. 命令:ls -ld /tmp/test
      这里写图片描述
    8. 命令:ls -l /tmp/test/*
      这里写图片描述
    9. 命令:ls -d /tmp/test/*
      这里写图片描述
    10. 命令:ls -ld /tmp/test/*
      这里写图片描述

    11. 5和6,7路径后面加上/结果是一样的,即/tmp/test/

    这样一来应该就比较清楚了,由于一开始没搞清路径后面*的作用所以总是对这个命令的结果难以接受。

    展开全文
  • gcc -l参数和-L参数 -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的...

    gcc -l参数和-L参数

    -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了

     

    好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件)

     

    放在/lib/usr/lib/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时另外一个参数-L就派上用场了,比如常用的X11的库,它在/usr/X11R6/lib目录下,我们编译时就要用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。再比如我们把libtest.so放在/aaa/bbb/ccc目录下,那链接参数就是-L/aaa/bbb/ccc -ltest

     

    另外,大部分libxxxx.so只是一个链接,以RH9为例,比如libm.so它链接到/lib/libm.so.x/lib/libm.so.6又链接到/lib/libm-2.3.2.so

     

    如果没有这样的链接,还是会出错,因为ld只会找libxxxx.so,所以如果你要用到xxxx库,而只有libxxxx.so.x或者libxxxx-x.x.x.so,做一个链接就可以了ln -s libxxxx-x.x.x.so libxxxx.so

     

    手工来写链接参数总是很麻烦的,还好很多库开发包提供了生成链接参数的程序,名字一般叫xxxx-config,一般放在/usr/bin目录下,比如

     

    gtk1.2的链接参数生成程序是gtk-config,执行gtk-config --libs就能得到以下输出"-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic

     

    -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm",这就是编译一个gtk1.2程序所需的gtk链接参数,xxx-config除了--libs参数外还有一个参数是--cflags用来生成头文件包含目录的,也就是-I参数,在下面我们将会讲到。你可以试试执行gtk-config --libs --cflags,看看输出结果

     

    现在的问题就是怎样用这些输出结果了,最笨的方法就是复制粘贴或者照抄,聪明的办法是在编译命令行里加入这个`xxxx-config --libs --cflags`,比如编译一个gtk程序:gcc gtktest.c `gtk-config --libs --cflags`这样就差不多了。注意`不是单引号,而是1键左边那个键。

     

    5-include-I参数

     

    -include用来包含头文件,但一般情况下包含头文件都在源码里用#include xxxxxx实现,-include参数很少用。-I参数是用来指定头文件目录,/usr/include目录一般是不用指定的,gcc知道去那里找,但是如果头文件不在/usr/include里我们就要用-I参数指定了,比如头文件放在/myinclude目录里,那编译命令行就要加上-I/myinclude参数了,如果不加你会得到一个"xxxx.h: No such file or directory"的错误。-I参数可以用相对路径,比如头文件在当前目录,可以用-I.来指定。

    展开全文
  • linux ls -l 详解

    2012-12-04 14:14:20
    可以看到,用ls -l命令查看某一个目录会得到一个7个字段的列表。 第1行:总计(total) Total后面的数字是指当前目录下所有文件所占用的空间总和。可以使用ls –lh查看,也可使用ls –alh查看。

    转自http://hi.baidu.com/yzzcheng/item/1a2141878447891dc31627f5

    以root的家目录为例:


    可以看到,用ls -l命令查看某一个目录会得到一个7个字段的列表。

    第1行:总计(total)

    Total后面的数字是指当前目录下所有文件所占用的空间总和。可以使用ls –lh查看,也可使用ls –alh查看。


    第1字段: 文件属性字段

    -rw-r--r-- 1 root root 762 07-29 18:19 exit

    文件属性字段总共有10个字母组成;第一个字符代表文件的类型

    字母“-”表示该文件是一个普通文件

    字母“d”表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写

    注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息

    字母“l”表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式

    字母“b”的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)

    字母为“c”表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节。

    字母为“p”表示该文件为命令管道文件。与shell编程有关的文件。

    字母“s”表示该文件为sock文件。与shell编程有关的文件。

    在此重申下文件链接这个重要概念

    链接文件的概念类似于windows里的快捷方式。多个链接文件同时指向一个“源文件”。链接文件分为硬链接或符号链接两种。

    在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode 。软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软连接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)

    硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反都是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除源文件的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收,因此文件的内容不会被删除,相当于删除了一个索引。

    硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。

    软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建软链接

    第1字符的后面9个字母表示该文件或目录的权限位。

    r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)

    其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。

    比如:

    -rw-r--r-- 1 root root 762 07-29 18:19 exit

    表示文件的拥有者root对文件有读写权限,其他人(同组用户和其他用户只有读的权限)

    另外,权限组还有一些特殊的表示法:

    [root@localhost ~]# ll /usr/X11R6/bin/XFree86

    -rws--x--x 1 root root 1960262 2003-02-28 /usr/X11R6/bin/XFree86

    s表示这个是网络接口程序"s"是socket的缩写。该程序在运行过程中会打开一个网络接口。

    其他UNIX类系统如FreeBSD中还有t权限,表示一个临时(temporary)文件

    #ls -l /tmp可以看到这样的权限:drwxrwxrwt 它的最后一位是字母"t"


    第2字段:文件硬链接数

    -rw-r--r-- 1 root root 762 07-29 18:19 exit

    如果一个文件不是目录,此时这一字段表示这个文件所具有的硬链接数,

    第2字段的值为1,说明这个文件只有exit这一个文件名。即只有一个指向该链接的硬链接。。

    如果使用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2


    此时exit 和aexit称为互为硬链接。他们指向同一个文件,无论是修改哪一个文件,另一个里也做相应的变化,因为实际上他们指向同一个文件(即同一文件的不同文件名)

    互为硬链接的文件具有相同的文件节点。


    可以看出,这两个文件具有相同的文件节点号:162302

    可以设置符号链接(软链接),格式如下

    Ln –s 源文件 目标链接文件


    注意:软链接时文件节点号不一样;


    如果知道一个文件有多个文件名(链接文件)如何查找他的其他文件名分布在什么地方呢?

    可以先用ls -i 获得它的节点号,然后用find查找,如/etc/sysconfig/networking/ifcfg-eth0就具有多个文件名,要查找与它互为硬链接的文件


    得到它的节点号为 452946

    再用find查找:


    这样就得到了同一个文件的不同文件名的位置。

    第2字段: 链接占用的节点

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    该字段文件占用一个节点,属于软链接(符号链接)

    如果是一个目录,则第2字段表示该目录所含子目录的个数。

    新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录。为什么新建的目录下面会有两个子目录呢?

    因为每一个目录都有一个指向它本身的子目录"。" 和指向它上级目录的子目录"。。",这两个默认子目录是隐藏的。ls -a可以看到

    每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加。


    第3字段:文件(目录)拥有者

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    该字段表示此文件是属于哪个用户。linux类系统都是多用户系统,每个文件都有它的拥有者。只有文件的拥有者才具有改动文件属性的权利。当然, root用户具有改动任何文件属性的权利。对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利

    如果某一个用户因为某种原因,被删除,而该用户的文件还存在,那么用ls -l 查看该文件将显示一个代表用户存在前ID号的数字。

    先创建一个用户test,将其加入wang用户组,并用su切换,使用ls –l查看文件拥有者,随即删除用户test,用root进入test家目录,查看刚刚创建的文件testing。


    可以看到,第三字段成了一个数字,这个数字是原test用户的ID号。因为文件系统对每个文件记录文件所有者的ID,而非用户名。


    第4字段:文件(目录)拥有者所在的组

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。

    可以在useradd的时候用-g指定该用户所在的主组,用-G指定其他组

    格式如下:Useradd –g 组名 用户名


    第5字段: 文件所占用的空间(以字节为单位)

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    第5字段表示文件大小,如果是一个文件夹(目录),则表示该文件夹的大小。请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小。

    很多人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了。


    第6字段:文件(目录)最近访问(修改)时间

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    文件创建的时间可以通过touch命令来修改。如:

    [root@localhost ~]# touch exit

    可以把exit的创建时间修改为当前时间,另外,一个文件还有最后访问时间,最后修改时间等属性。

    这些属性可以用ls 的其它参数显示出来。


    第7字段:文件名

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    如果是一个符号链接,那么会有一个 “->" 箭头符号,后面根一个它指向的文件名



    展开全文
  • [转]linux ls cp等命令的-H/-L参数 -H Symbolic links on the command line are followed. This option is assumed if none of the -F, -d, or -l options are specified. -L Follow all symbolic links to

    [转]linux ls cp等命令的-H/-L参数

    -H Symbolic links on the command line are followed. This option is assumed if none of the -F, -d, or -l options are specified.

    -L Follow all symbolic links to final target and list the file or directory the link references rather than the link itself. This option cancels the -P option.

    ——摘自ls的manual

    参数-L比较清楚,就是对所有的symlinks都dereference
    但如果单独使用-H,结果并没有任何变化

    后来看到superuser上一篇回答,终于弄懂了-H的作用:
    linux -cp -H vs cp -L(What is a command line symbolic link)


    其中有句话,看到后恍然大悟:

    Without the -R switch, the behavior of cp -H and cp -L is identical.

    感觉manual里没讲清楚,-H其实应该搭配着-R用的,这就是-H和-L的不同:

    With the -R switch, cp -H only dereferences symbolic links that occur in the cp command itself, while -L also dereferences symbolic links inside the recursively copied directories.

    比如,在 cp -HR source/ dest/ 中,如果 source/ 是symlink,那cp就会把symlink指向的原文件copy到 dest/,但是,对于 source/ 中包含的symlinks,仅仅copy 这些symlinks本身

    However, if cp encounters any symlinks in source’s subdirectories, it will create symlinks in the destination folder.

    cp -HL source/ dest/ 则不仅dereference command line中的source(symlink),还会对递归中遇到的所有symlinks进行dereference

    展开全文
  • 文章来源:http://zhidao.baidu.com/question/322131711.html 文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-f filename...

    文章来源:http://zhidao.baidu.com/question/322131711.html

     

    文件比较运算符
    -e filename  如果 filename存在,则为真  [ -e /var/log/syslog ]
    -d filename  如果 filename为目录,则为真  [ -d /tmp/mydir ]
    -f filename  如果 filename为常规文件,则为真  [ -f /usr/bin/grep ]
    -L filename  如果 filename为符号链接,则为真  [ -L /usr/bin/grep ]
    -r filename  如果 filename可读,则为真  [ -r /var/log/syslog ]
    -w filename  如果 filename可写,则为真  [ -w /var/mytmp.txt ]
    -x filename  如果 filename可执行,则为真  [ -L /usr/bin/grep ]
    filename1-nt filename2  如果 filename1比 filename2新,则为真  [ /tmp/install/etc/services -nt /etc/services ]
    filename1-ot filename2  如果 filename1比 filename2旧,则为真  [ /boot/bzImage -ot arch/i386/boot/bzImage ]
    字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
    -z string  如果 string长度为零,则为真  [ -z "$myvar" ]
    -n string  如果 string长度非零,则为真  [ -n "$myvar" ]
    string1= string2  如果 string1与 string2相同,则为真  [ "$myvar" = "one two three" ]
    string1!= string2  如果 string1与 string2不同,则为真  [ "$myvar" != "one two three" ]
    算术比较运算符
    num1-eq num2  等于 [ 3 -eq $mynum ]
    num1-ne num2  不等于 [ 3 -ne $mynum ]
    num1-lt num2  小于 [ 3 -lt $mynum ]
    num1-le num2  小于或等于 [ 3 -le $mynum ]
    num1-gt num2  大于 [ 3 -gt $mynum ]
    num1-ge num2  大于或等于 [ 3 -ge $mynum ]

    展开全文
  • arm-fsl-linux-gnueabi-gcc -o simplescan simplescan.c -I/usr/include/ -I/usr/include/i386-linux-gnu -L/usr/lib/i386-linux-gnu 编译提示 simplescan.c:(.text+0x84): undefined reference to `hci_get_route...
  • linux之ls -l命令详解

    2019-02-15 18:19:14
    使用ls -l 命令可得到一个目录下的文件和子目录的详细信息,一共包含9列。 第1列:为文件属性字段 (1)第1个字母为文件类型: d:目录文件, -:普通文件 p:管理文件 l:链接文件 b:块设备文件 c:字符设备文件 s...
  • linux下使用“ls -l”或者“ls -al”或者“ll”命令查看文件及目录详情时,shell中会显示出好几列的信息。平时也没怎么注意过,今天忽然心血来潮想了解一下,于是整理了这篇博客,以供参考: 首先给出一张典型的...
  • linux ps -l 命令详解

    2014-01-20 15:05:22
    ps -l 用来观察自己的bash相关的进程 范例一:将目前属于您自己这次登入的 PID 与相关信息列示出來(只与自己的 bash 有关) [root@www ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 ...
  • ls简介ls是我们使用Linux最常用的命令,可以用来打印当前目录或者制定目录的清单,显示出文件的一些信息等。 ls -a可以将目录下的全部文件(包括隐藏文件)显示出来 ls -l 列出长数据串,包括文件的属性和权限等...
  • 昨天终于把交叉编译环境、移植内核和制作root文件系统在arm开发板上顺利跑通了。期间有的步骤很顺利,更多的是被很多细节性的问题困住,比如最后一个不起眼的小问题导致文件系统无法加载,困扰了我一个星期,最终...
  • Linux下crontab命令的用法:sudo crontab -l 转载:https://blog.csdn.net/jeofey/article/details/47834251 cron 是linux系统下一个自动执行指定任务的程序. cron服务是linux的内置服务,但它不会开机自动启动...
  • Linux下ll命令与ls -l

    2017-03-09 22:58:56
    还大三Linux课的债。 1.ll命令用于显示当前文件下非隐藏文件的详情 查询结果分为7栏:  1)如' -rw-r--r--' 表示三种用户对该文件的不同权限:  r:可读;w:可写;x:可执行  其中第一个字母...
  • 查看某文件夹下文件的个数   ls -l |grep "^-"|wc -l 或 find ./company -type f | wc -l   查看某文件夹下文件的个数,包括子文件夹里的。   ls -lR|grep "^-"|...
  • Linux 编写ls -l 命令

    2015-07-14 12:53:59
    ls -l 命令的输出 每行都包含7个字段:  1.模式(mode) 每一行的第一个字符表示文件类型。“-”代表普通文件,“d”代表目录。接下来的9个字符表示文件访问权限,  分为读、写和执行,又分别针
  • linux ls -l 命令 详解

    2011-12-26 20:43:32
    我们平时用ls -l 命令查看一个目录下的文件和子目录的详悉信息时,会得到一个详细的文件和目录名列表.这个列表包含了文件的属性,所属用户,所属组,创建时间,文件大小等等信息.这些信息到底是什么意思呢?有很多初学者对...
  • 转:http://www.cnblogs.com/senior-engineer/p/6203268.html Shell 中常见的日志统计方法 ... 查看某文件夹下文件的个数   ls -l |grep "^-"|wc -l 或 find ./company -typ
1 2 3 4 5 ... 20
收藏数 460,089
精华内容 184,035