zoukankan      html  css  js  c++  java
  • 20210220-1 Linux命令(上)

    一、查看目录和文件命令

     

    查看目录或文件命令

    > 在执行Linux命令时可以根据需要包括“选项”或“参数”, 通过“选项”或“参数”可以让一个命令每次运行时都能够接受用户不同的指令,采取不同的运行方式、作用于不同的对象、产生不同的运行结果, 一般“选项”会出现在“参数”的前面。在执行Linux命令时需要注意以下几点

        ○ (1) 在Linux中无论是文件名、目录名、命令等对英文字符的处理都是区分大小写的,因此“ls”和“LS”代表两个不同的命令。

        ○ (2) 在“命令”、“选项”、“参数”中间至少使用一个空格分隔。在使用 linux 时,其实是有一些规则的,比如做软件测试时要遵循国标一样,有强制性国标和推荐性国标,linux的使用也是这样

        ○ (3) 虽然并不是所有的Linux命令都要求“选项”必须出现在“参数”前面,但推荐在执行命令时,“选项”放在“参数”前面。

        ○ (4) 在 Linux命令中 “选项”一般需要一个引导符, 以 “-” 引导的是短格式选项 (单个字符),如 “-|”;以“--”引导的是长格式选项(多个字符) , 如“--detail”。多个短格式选项可以写在一起,只有一个“_”引导,如“-rv”“-r -v”表示相同的意思。

     

    > pwd

        ○ 用于显示当前所在目录的完整路径。

    [root@localhost vmware-tools]# pwd

    /etc/vmware-tools

    [root@localhost vmware-tools]#

    比如这样就可以知道 vmware-tools 在 etc 目录下面;而提示中只能看到当前目录,当前目录的上一级是看不到的

    > Is 参数 目录名

        ○ list (列表, 列出),用于显示目录中所含的子目录和文件的名称、属性等内容;省略“目录名”时显示当前目录中的子目录和文件。

    -lIs -l 也可以写为 ll。使用长格式列出信息,会显示文件的类型、权限、链接数、文件所有者、文件所有者所在的组、文件大小(以B为单位)、最后修改时间、文件的完整名称(文件名+扩展名)。每一行显示一个文件或者目录。

    这就是长格式列出信息

    -a:列出所有文件及子目录,包括以 “.” 开始的隐藏文件。使用 |. 可以只显示隐藏文件。

    前面的两个点 . .. 代表 当前目录

    蓝色部分代表目录,黑色部分代表文件 .cache 等前面的 '.' 表示是一个隐藏文件

     

    -a 显示所有 文件,-l 显示详细信息;现在想看全部文件的详细信息,应该怎么办? ls -al

    也可以写成 ls -a -l

    .:显示隐藏的目录和文件。

    -A:列出除了“.”及“..”以外的所有项。

    -h:以k字节为单位表示文件的大小,通常要配合-1使用,可以写为ll-h。

    -p:以“/”结尾的形式来表示这是一个目录。

    -F:在文件或目录后面加上不同的符号来区别文件或目录的类型,其中“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接; “=”表示套接字。

    -S:根据文件大小排序。

    -t:按文件修改时间排序。

    -r:逆序排列。

    --help:在标准输出上显示帮助信息。

    --version:在标准输出上输出Is程序的版本信息。

    --color=no:显示结果中的文字不显示彩色。

     

    > Is

    ○【例3-1】长格式查看根目录下所有文件及子目录信息。

    [root@localhost~]# Is -| /

    ○【例3-2】查看当前目录下的目录和大小文件。

    [root@localhost~]# Is -hl

    ○ 通配符

    *:匹配0个或任意多个的字符。

    ?:匹配一个任意字符。

    [ ]:匹配任意一个包含在括号里的单字符,如 [abc]、[a-k]、[1-5,a-i]、[ab,x-z] 等。

    查询文档内容时,我们可以加通配符

    比如 (通配符需要放到选项之前)

    a* 的意思是 第一个字符是 a,后面是什么没有要求

    如果是 a? 呢?第一个是 a,?代表一个字符,所以 a? 只能是两个字符

     

    查看目录或文件命令

    > tree

        ○ 以树状形式显示目录结构

    tree 如果要使用,需要安装,所以也称为外部命令,有的命令不能用,原因就是没有安装外部命令

    > du 参数 文件或目录名

        ○ 用于统计目录或文件所占磁盘空间的大小。

    性能测试时,性能监控的点,用的就是 du 命令;直接 du 将显示当前目录下,所有文件的总大小

    如果想查看 boot 下的文件占用情况呢?boot 是内核所在的目录,就看 linux 内核有多大

    这里的 139908 指的是字节数;如果想用容易理解的单位来显示,可以加上 -h;

    当前 linux 内核占用了 137 兆

    -a:显示全部目录和其子目录下的每个文件所占的磁盘空间。

    -b:大小用bytes来表示。

    -c:显示完毕后再加上总计(默认值)。

    -s:只显示文件或者目录大小的总和。

    -h:用容易理解的单位表示文件大小,如K、M、G。其计算单位为1024,即1G=1024M。

    -H:与-h基本相同,但计算单位为1000,即1G=1000M。

     

    > df   参数

       ○ 用于查看每个分区的空间占用情况

    实际测试中,更多的是直接 df,将分区截图下来,放到测试计划中,说明服务器的空间大小

    mount 挂载就是挂载到 dev 中,可以指定查看 dev 分区,可以直接查看 dev 分区所用的空间大小了

    不过这并不是常规用的单位,我们习惯用兆,所以同样的方法

    -a:显示所有文件系统的磁盘使用情况, 包括0块(block) 的文件系统, 如/proc文件系统。

    -k:以k字节为单位显示。

    -h:用容易理解的单位表示文件大小,单位显示为K、M、G等。其计算单位为1024,即1G=1024M。

    -H:与-h基本相同,但计算单位为1000,即1G=1000M。

     

    > file 文件名 

        ○ 用于查看文件类型。具体的文件类型包括: 

            ○ (1) 普通文件:对应于II命令显示结果中的“-”,还包括文本文件、程序文件、压缩文件等; 

            ○ (2) 目录:对应于1I命令显示结果中的第1位为“d”; 

            ○ (3) 设备文件:对应于II命令结果中的第1位为“c”或“b”,其中c表示字符文件,如键盘;b表示块设备,如硬盘; 

            ○ (4) 链接文件:对应于II命令显示结果中的第1位为“l”。 

    其实查看文件类型有多种形式,比如 ls -l 即可

    除此之外,用file文件也是可以的

    [root@localhost ~]# file anaconda-ks.cfg

    anaconda-ks.cfg: ASCII text

    ASCII text 代表的是文本文件

     

    > cat 参数 文件名 

        ○ 用于连接文件或者是将文件内容输出至标准输出设备。 

         -n:由1开始对所有输出行编号。 

         -b:与-n相似,只不过对于空白行不编号。 

         -s:当遇到有连续两行以上的空白行,仅显示一行的空白行。 

    [root@localhost~]# cat/etc/sysconfig/network-scripts/ifcfg-eth0 

     

        ○ 结合管道运算符“>”、“>>”,cat可以将多个文件进行合并,然后将数据导出到另一个文件中。 

           ○ [root@localhost~] #cat               file1   file2>file 3 

           ○ [root@localhost~] #cat               file4>>file3 

    cat + 文件名 查看文件内容

    这是一个>,原来的 file3 中的数据就没有了,两个>代表追加

    在工作中,以 >> 追加为主

     

    > more 文件名、 less 文件名

        ○ 用于分屏显示文件内容。当文件内容比较多时,这两个命令非常实用。

    > head 参数 文件名、 tail 参数 文件名

        ○ head用于显示文件前部的内容, 参数及含义如下:

           ○ -c 字节数:显示文件前面指定个数的字节。

           ○ -n 行数:显示文件前面指定个数的行,若省略n,则显示10行。

           ○ -v:详细输出模式(即显示文件头)。

        ○ tail用于显示文件尾部的内容, 参数及含义如下:

           ○ -c 字节数:显示文件尾部指定个数的字节,单位可选B、KB、MB。

           ○ -n 行数:显示文件尾部指定个数的行。

           ○ -v:详细输出模式(即显示文件头)。

    回车看下一屏,但是 more 无法回看,只能往下翻;所以,可以用 less

    [root@localhost etc]# less usb_modeswitch.conf

    CTRL+Z 结束

    head 只显示文件前面的一部分内容,与其对应的有一个 tail,只显示文件尾部的内容

     

    > wc 参数 文件名

        ○ 不使用参数时,wc将统计文件中的行数、单词数和字节数。

        -c:显示字节数。

        -m:显示字符数。

        -1:显示行数。

        -L:显示最长行的字符数。

        -w:显示单词数。

    [root@localhost etc]# wc usb_modeswitch.conf

    40 229 1523 usb_modeswitch.conf

    [root@localhost etc]# wc -l usb_modeswitch.conf

    40 usb_modeswitch.conf

    [root@localhost etc]#

    测试的时候,会获得日志,想看日志行数,就会使用 wc 命令

     

    二、创建及进入目录文件

     

    创建、进入、删除、复制、移动命令

    > 创建目录和文件

        ○ 创建目录

        ○ mkdir 参数 目录名列表

           ○ 目录名列表是使用空格逗号间隔多个目录名

    常用参数及含义如下:

    -p:递归创建目录,即创建多级目录。

    -v:对已创建的目录输出一个信息

    ○ [root@localhost~]# mkdir test

    ○ [root@localhost~]# mkdir -v newdir

    ○ [root@localhost~]# mkdir test1/test2/test3

    ○ [root@localhost~]# mkdir -vp test1/test2/test3

    [root@zxcv ~]# pwd

    /root

    [root@zxcv ~]# mkdir test

    在 linux 上,如果没有提示,就代表我们的创建是成功的,如果想要有提示,可以加一个 -v

    [root@zxcv ~]# mkdir -v newdir

    mkdir: 已创建目录 "newdir"

     

    [root@localhost ~]# mkdir test1/test2/test3

    mkdir: 无法创建目录"test1/test2/test3": 没有那个文件或目录

    [root@localhost ~]# mkdir -pv test1/test2/test3

    mkdir: 已创建目录 "test1"

    mkdir: 已创建目录 "test1/test2"

    mkdir: 已创建目录 "test1/test2/test3"

     

        ○ 创建文件

           ○ 使用 vi 可以新建并编辑文件,但是如果文件中不写入任何数据而且不保存的话,在退出vi后文件内容是不保留的,但可以保存空文件。

    但是现在要创建一个日志,日志不是由我们编辑的,是由系统编辑的,应该怎么办?

    这时就需要另外一个命令,叫 touch + 文件名

        ○ touch文件名

           ○ touch本来是修改文件访问时间的命令,如果文件不存在,touch会创建一个空文件。

    touch 本来的意义是修改文件的访问时间,但是目前为止,linux把这个抛弃掉了

    所以更多的时候用它来创建一个空文件

    [root@localhost ~]# touch a1

    [root@localhost ~]# ls

    a1 anaconda-ks.cfg etc initial-setup-ks.cfg test1 视频 下载

     

    > 进入目录和文件

        ○ 进入或切换目录

           ○ cd 相对路径或绝对路径

    [root@localhost ~]# cd test1

    [root@localhost test1]# ls

    test2

    [root@localhost test1]# cd 回到 root 目录,cd 即可

    [root@localhost ~]#

     

    cd ..:切换至父目录(注意:冒号不是命令)

    [root@localhost ~]# cd /etc/sysconfig/network-scripts/

    [root@localhost network-scripts]# cd ..

    [root@localhost sysconfig]#

     

    cd ../home:切换至父目录下的子目录home

    cd /var/www/html:绝对路径的写法,进入

    /var/www/html

    cd:切换至当前用户的家目录

    cd ~:切换至当前用户的家目录

    cd ~zhsan:切换至用户zhsan的家目录

        ○ 进入文件

           ○ 使用 vi 即可。

    进入目录用 cd,进入文件用 vim

     

    三、删除,复制,移动命令

     

    创建、进入、删除、复制、移动命令

    > 删除目录和文件

       ○ 删除目录

          ○ rmdir 参数 目录

          ○ rmdir只能删除空目录

    -v:对已经删除的目录给出提示信息。

    -p:递归删除目录。

    [root@localhost ~]# rmdir test

    [root@localhost ~]# rmdir -p testl/test2/test3

    cd 可以直接回到起始目录

    类似于拆房子,没人会在里面拆房子,所以要退出到房子外面拆才可以

     

        ○ 删除目录和文件

          rm 参数 目录或文件名

           rm 也可以删除目录,但是建议什么命令就用什么删除最好

           可以删除多个文件或目录,多个文件或目录用空格或逗号间隔。

           建议用逗号间隔

           -i:交互式删除,删除时需要使用者确认是否删除(这是默认值)。

           [root@localhost ~]# rm file1

           rm:是否删除普通空文件 "file1"?n

           -r:递归删除,非空目录也可删除。

           如果某一目录下的某一文件删除了,删除后目录为空,这时目录也一起跟着删除

           -f:不提示确认信息,强制删除。

           -v:显示执行结果信息。创建、进入、删除、复制、移动命令

     

    > 复制目录或文件

        ○ cp 参数 源目录或文件 目的目录或文件

        ○ 源复制到目的地,可以复制文件和目录

        把 file1 复制到 newdir目录下

        [root@localhost ~]# cp file1 newdir/

        [root@localhost ~]# cd newdir/

        [root@localhost newdir]# ls

        file1

        现在要在复制 file1 的同时改变名字,需要在同一个目录下操作

        [root@localhost newdir]# cp file1 zxc1

        [root@localhost newdir]# ls

        file1 zxc1

        如何复制目录呢?一定要加 -r

        [root@localhost ~]# cp -r /bin /root

        [root@localhost ~]# ls

        anaconda-ks.cfg bin initial-setup-ks.cfg sort.txt 视频 下载 ……

        -r:若要复制目录,将递归复制该目录下所有的子目录和文件,此时目标必须也是目录。

        如果想复制目录,必须加 -r

        -u:如果源比较新,或者未写目的,才会进行复制。

        -f:当目标存在时,强制覆盖。

        -i:和-f选项相反,在覆盖目标之前给出提示,要求用户确认,回答“y”时目标文件将被覆盖。

        -p:除复制源的内容外,还将把其修改时间和访问权限复制到目的地中

        -a:常在复制目录时使用,该选项保留链接、文件属性,并递归地复制目录。

        [root@localhost ~]# cp bashrc bashrc

        [root@localhost ~]# cp –r /bin /tmp/bin创建、进入、删除、复制、移动命令

     

    > 移动或改名

        ○ mv 参数 源 目的

        移动的同时可以改名,选项和 cp 类似

        ○ 对文件或者目录进行移动或更名;若源和目的在同一目录下,表示改名;若不在同一目录下表示移动,移动时也可以同时改名。

        newdir中存在file1,所以会给出是否覆盖的提示

        [root@localhost ~]# mv file1 newdir/

        mv:是否覆盖"newdir/file1"? n

        -f:强制覆盖现有的文件或目录,不进行任何提示。(-f 用的比较多)

        -i:覆盖前先行询问用户。

        -u:在移动文件或者目录时,若目标文件或目录已存在,并且源文件日期比目标文件新,则覆盖更新。

        -v:执行时显示详细的信息。

        ○ [root@localhost ~]# mv bashrc bashrc. old

        ○ [root@localhost ~]# mv bashrc.old /tmp

     

    补充

    > 命令历史记录

        ○ bash也支持命令历史记录,这意味着bash保留了一定数目的用户先前已经在 shell 里输入过的命令,这个数目取决于一个叫做 history

        ○ 使用历史记录列表的方法:

           ○ 最简单的方法是用上下方向键,按上方向键后最后输入的出现在命令行上

           ○ 另一个使用命令历史文件的方法是bash的内部命令 history 和 fc 来显示

              [root@localhost root]#history n

        ○ 执行历史命令

           ○ !命令编号

        ○ 修改命令历史列表文件的内容

           history [-r|w|a|n] [filename]

    除了可以记录之前操作的命令,也可以记录我们给它的命令,可以把文档里写入的命令导入给history

     

    -r:读命令历史列表文件的内容并且把它们当作当前的命令历史列表

    -w:把当前的命令历史记录写入文件中并覆盖文件原来的内容

    -a:把当前的命令历史记录追加到文件中

    -n:将读取文件中的内容 并加入到当前历史列表中

     

    四、打包与解压缩

     

    打包与解压缩命令

    > gzip压缩命令

    常用参数及含义如下:

    -c:将输出写到标准输出上,并保留原有文档。

    -d:将压缩文档解压。

    -r:递归式地查找指定目录并压缩其中的任何文档或是解压缩。

    -t:测试,检查压缩文档是否完整。

    -v:对每一个压缩和解压的文档,显示文档名和压缩比。

    -num:用指定的数字num调整压缩的速度。

    -1或-fast:表示最快压缩方法(低压缩比)。

    -9或-best:表示最慢压缩方法(高压缩比),系统默认值为6。

    将目录下所有文件进行压缩,源文件被删除

    [root@localhost ~]# gzip *

    解压所有gzip压缩包并查看详细信息,压缩文件被删除

    [root@localhost ~]# gzip -dv *

    在计算机系统中,只有通过压缩传输时,才不会出现掉帧断线等现象。比如现在把 /boot 压缩一下

    [root@localhost ~]# cd /boot

    [root@localhost boot]# ls

    ……

    vmlinuz-0-rescue-ca1fbbde2e1f41259b6062e0e3f0829c

    vmlinuz-3.10.0-862.el7.x86_64

    [root@localhost boot]# gzip *

    ……

    gzip: symvers-3.10.0-862.el7.x86_64.gz already has .gz suffix -- unchanged

    ……

    [root@localhost boot]# ls

    ……

    vmlinuz-0-rescue-ca1fbbde2e1f41259b6062e0e3f0829c.gz

    vmlinuz-3.10.0-862.el7.x86_64.gz

    压缩之后,所有文件名自动加一个 gz 的扩展名

     

    现在要进行解压缩,同时删除解压缩后的gz文件

    [root@localhost boot]# gzip -dv * (会显示压缩比,这里省略)

    [root@localhost boot]# ls

    ……

    vmlinuz-0-rescue-ca1fbbde2e1f41259b6062e0e3f0829c

    vmlinuz-3.10.0-862.el7.x86_64

     

    > bzip压缩命令

        ○ 只能用于压缩或解压文件。若执行多个文件,则将多个文件单独压缩(产生多个压缩文件)。压缩后文件的扩展名是.bz2

        基本格式:bzip2 参数 文件1 文件2 (也可以不加参数,直接写上文件名)

    常用参数及含义如下:

    -d:将压缩文档解压,等价于“bunzip2 压缩文件”。

    -k:保留源文件。

    *其他参数与gzip同。打包与解压缩命令

    bzip在现在的 linux 中已经变成第二个版本了,所以是 bzip2

    [root@localhost boot]# bzip2 symvers-3.10.0-862.el7.x86_64 config-3.10.0-862.el7.x86_64

    [root@localhost boot]# ls

    config-3.10.0-862.el7.x86_64.bz2

    ……

    symvers-3.10.0-862.el7.x86_64.bz2

    ……

    扩展名就变成 bz 了;

     

    如果要解压,在当前命令之前,加 -d ,注意加上扩展名;如果解压失败了,可能因为文件被占用

    [root@localhost boot]# bzip2 -d symvers-3.10.0-862.el7.x86_64.bz2 config-3.10.0-862.el7.x86_64.bz2

    [root@localhost boot]# ls

    config-3.10.0-862.el7.x86_64

    ……

    symvers-3.10.0-862.el7.x86_64

    ……

    -t 检测压缩包,如果压缩是完整的就不会有任何提示,如果压缩是完整的,会提示错误

    [root@localhost boot]# bzip2 symvers-3.10.0-862.el7.x86_64

    [root@localhost boot]# bzip2 -t symvers-3.10.0-862.el7.x86_64.bz2

    bzip的其他选项与gzip基本上是一样的

     

    > zip压缩

    可以压缩文件和目录。压缩后文件的扩展名是.zip

    基本格式:zip 参数 压缩文件名 原文件或目录名

        ○ -m:删除原文件。

    解压命令格式:unzip 参数 压缩文件名

        ○ -d 新目录:指定解压后的文件位置。打包与解压缩命令

    zip用的比较少,80%以上用的都是gzip

     

    > tar命令

    tar命令用于打包备份,它最初是为了制作磁带备份而设计的(把文件和目录复制到磁带中,然后从备份中提取或恢复文件),而现在可以把它用于任何设备。它是Linux系统中一个非常实用的程序,也是数据备份中最常用的命令之一。和其他备份工具相比,tar命令更易于使用,而且安全和可靠,它几乎可以在任何Linux或UNIX系统上读取文件,并进行数据的合理备份。

    基本格式:tar 参数 包文件名 目录或文件列表

     

    常用参数及含义如下:

    -c:用于创建打包文件。

    -v:表示回显模式(Verbose),显示一系列打进包的文件列表。

    回显是指打包的时候会显示哪些包已经打包了,打包率是多少

    -f:指定使用打包的文件,即输出的打包文件名

    -z:使用gzip压缩方式创建和解开打包文件。这是GNU的新版tar的功能,系统需要同时支持gzip功能。

    -x:将打包文件展开,即将文件分离出来。

     

    将etc下所有内容打包成backup.tar

        ○ [root@localhost ~]# tar cvf backup.tar /etc

    将backup.tar解包

        ○ [root@localhost ~]# tar xvf backup.tar打包与解压缩命令

     

    现在想对 etc 目录进行打包,打包用 -c,c是打包文件,除了打包文件还要有-v回显,打包后要有文件名,所以需要 -f 后面跟文件名

    [root@localhost boot]# tar -cvf backup.tar /etc

    ……

    /etc/mcelog/triggers/

    /etc/mcelog/triggers/cache-error-trigger

    /etc/mcelog/triggers/dimm-error-trigger

    …… 这里显示的内容就是 -v 的作用

     

    现在在当前目录就有一个 backup.tar 的文件了

    [root@localhost boot]# ls

    backup.tar

    ……

     

    那么,怎么解包呢?用 -x

    [root@localhost boot]# tar -xvf backup.tar

    ……

    [root@localhost boot]# ls

    ……

    etc

    …… ls 查看 能够看到 etc 被解压出来了;

    目录在哪,打包后的文件就在哪,目录是什么,打包后的文件名就是什么

     

    > tar与gzip的结合

    实际应用中gzip命令tar命令经常组合在一起使用,以实现打包并压缩的目的。要打包并压缩,可用如下命令:

    把hi.txt打包压缩为hi.tar.gz

        ○ [root@localhost ~]# tar zcvf hi.tar.gz hi.txt

    z代表的就是gzip;cvf 就是对其打包;扩展名一定是 tar.gz 的形式

    [root@localhost boot]# tar -zcvf hi.tar.gz /etc

    ……

    [root@localhost boot]# ls

    backup.tar (这是之前没压缩的)

    ……

    hi.tar.gz

    ……

    [root@localhost boot]# ls -l

    总用量 174752

    -rw-r--r--. 1 root root 33361920 2月 14 12:21 backup.tar

    ……

    -rw-r--r--. 1 root root 10706505 2月 14 17:34 hi.tar.gz

    从文件大小中能看出来,同样的文件加压缩了,可以很快看出来大小不一致了

     

    要解压文件,可用以下命令:

        ○ [root@localhost ~]# tar xvfz hi.tar.gz

    既然压缩了,就涉及解压解包的内容,用 -zxvf 代表解包

    [root@localhost boot]# tar -zxvf hi.tar.gz

    ……

    [root@localhost boot]# ls

    ……

    etc     可以看到解包完成了

    ……

    注意,在日常应用中,经常可以看到类似*.tar.gz和*.tgz的文件,其实只是命名方法的不同,其本质是一样的,即:可以用*.tar.gz命名,也可以用*.tgz命名。

     

     

     

  • 相关阅读:
    eslint 入门学习
    sqlite数据库 select 查询带换行符数据
    (ios)ARC常用设置,部分文件编译设置ARC
    (ios实战)ios调试总结(转载)
    IOS沙盒Files目录说明和常用操作
    (Ios 实战) 自定义UITableView
    iphone,pad等真机不被xcode识别,解决方法
    Xcode模拟器和真机生成的日志查看(转载)
    项目管理(转载)
    互联网教育,未来当有这10个特质(转载)
  • 原文地址:https://www.cnblogs.com/azxsdcv/p/14423560.html
Copyright © 2011-2022 走看看