N25-Bazinga-第二周作业


1.Linux文件管理类命令

命令 功能 命令 功能
pwd 显示当前目录 ls 显示目录下的内容
cd 改变所在目录 cat 显示文件的内容
grep 在文件中查找字符串 cp 复制文件
touch 创建文件 mv 移动文件
rm 删除文件 rmdir 删除目录
1.1 pwd命令
该命令的英文解释为print working directory(打印工作目录)。输入pwd命令,Linux会输出当前目录。

1.2 cd命令
cd命令用来改变所在目录。

cd /      转到根目录中 
cd ~     转到/home/user用户目录下 
cd /usr 转到根目录下的usr目录中-------------绝对路径 
cd test 转到当前目录下的test子目录中-------相对路径

1.3 ls命令
ls选项 含义
-a 列举目录中的全部文件,包括隐藏文件
-l 列举目录中的细节,包括权限、所有者、组群、大小、创建日期、文件是否是链接等
-f 列举的文件显示文件类型
-r 逆向,从后向前地列举目录中内容
-R 递归,该选项递归地列举当前目录下所有子目录内的内容
-s 大小,按文件大小排序
-h 以人类可读的方式显示文件的大小,如用K、M、G作单位
ls -l examples.doc 列举文件examples.doc的所有信息
1.4 cat命令
cat命令可以用来合并文件,也可以用来在屏幕上显示整个文件的内容。
cat snow.txt 该命令显示文件snow.txt的内容,ctrl+D退出cat。

1.5 grep命令
grep命令的最大功能是在一堆文件中查找一个特定的字符串。
grep money test.txt
以上命令在test.txt中查找money这个字符串,grep查找是区分大小写的。

1.6 touch命令
touch命令用来创建新文件,他可以创建一个空白的文件,可以在其中添加文本和数据。
touch newfile 该命令创建一个名为newfile的空白文件。

1.7 cp命令
cp命令用来拷贝文件,要复制文件,输入命令:
cp <source filename> <target filename>
cp t.txt Document/t    该命令将把文件t.txt复制到Document目录下,并命名为t。
cp选项 含义
-i 互动:如果文件将覆盖目标中的文件,他会提示确认
-r 递归:这个选项会复制整个目录树、子目录以及其他
-v 详细:显示文件的复制进度
1.8 mv命令

mv命令用来移动文件。
mv选项 说明
-i 互动:如果选择的文件会覆盖目标中的文件,他会提示确认
-f 强制:它会超越互动模式,不提示地移动文件,属于很危险的选项
-v 详细:显示文件的移动进度
mv t.txt Document    把文件t.txt 移动到目录Document中。

1.9 rm命令

rm命令用来删除文件。
rm选项 说明
-i 互动:提示确认删除
-f 强制:代替互动模式,不提示确认删除
-v 详细:显示文件的删除进度
-r 递归:将删除某个目录以及其中所有的文件和子目录

rm t.txt 该命令删除文件t.txt

1.10 rmdir命令

rmdir命令用来删除目录。

2.bash的工作特性,相关示例

2.1.bash特性之一:命令别名

 #alias NAME='COMMAND'

2.2.bash的特性之二:命令历史

命令语法格式:

 history [-c] [-d OFFSET] [n]
 history -anrw [FILENAME]
 history -ps VALUE [VALUE…]
常用参数
    -c: 清空命令历史;
    -d offset(偏移量):删除指定命令历史,offset为history显示出来的命令数字;
    -r: 从文件读取命令历史至历史列表中;
    -w:把历史列表中的命令追加至历史文件中;
    history #:显示最近的#条命令;

2.3.bash特性之三:快捷键

     Ctrl+a:跳转至命令行行首;
     Ctrl+e:跳转至命令行行尾;
     Ctrl+u:删除行首至光标所在处之间的所有字符;
     Ctrl+k:删除光标所在处至行尾的所有字符;
     Ctrl+l:清屏,相当于clear;

2.4.bash的特性之四:命令补全和路径补全

    1.命令查找和补全机制:
             (1) 查找内部命令;

             (2) 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;

             (3) 给定开头的部分字符串如果能惟一标识某命令程序文件,则直接补全;

             不能惟一标识某命令程序文件,再击tab键一次,会给出列表;
    2.路径补全:

             在给定起始路径下,以对应路径下的打头字串逐一匹配起始路径下每个文件:
             TAB按键;如果能惟一标识,则直接补全;否则,再一次tab,给出列表;
   3.命令行展开

              ~:自动展开为用户的家目录,或指定的用户的家目录;

               {}:花括号展开。可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

2.5.bash的特性之五:命令行展开:

       1)、命令行展开;

                以某些bash能够解释的符号来代替命令中的某些参数。

                ~:展开为用户的家目录;
                        例1:切换至家目录

                                cd ~;pwd
                                /root
                                {}:可承载一个以逗号分隔的列表,并将其展开为多个路径;
                        例2:在/tmp/d目录下创建f1,f2,f3三个文件

                                touch /tmp/d/f{1,2,3}

                                bash

2.6.bash特性之六:命令的执行状态结果:

 1)、bash的基础特性之状态值返回:在bash中使用一个特殊的变量$?来保存上一个命令的执行状态结果。

     0表示成功,
     1-255表示失败

3. 使用命令行展开功能实现习题

3.1.创建tmp目录下的:a_c,a_d,b_c,b_d;

 [root@localhost ~]# touch {a,b}{_c,_d}

[root@localhost ~]# ll
total 165716
-rw-r--r--. 1 root root       369 Nov 29 16:11 ab.lua
-rw-r--r--. 1 root root         0 Dec 10 10:20 a_c
-rw-r--r--. 1 root root         0 Dec 10 10:20 a_d
-rw-------. 1 root root      1048 Nov 23 10:05 anaconda-ks.cfg
-rw-r--r--. 1 root root         0 Dec 10 10:20 b_c
-rw-r--r--. 1 root root         0 Dec 10 10:20 b_d

3.2.创建/tmp/mylinux目录下的以下目录

├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rc.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts
├── lib
│   └── modules
├── lib6
├── proc
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin    
└── var
├── lock
├── log
└── run

[root@localhost home]#  mkdir  -p /tmp/mylinux/{bin,boot/grup,dev,etc/{rc.d/init.d,sysconfig/network-
scripts},lib/modules,lib6,proc,sbin,sys,tmp,usr/local/{bin,sbin},var,lock,log,run}

    [root@localhost home]# tree  /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│   └── grup
├── dev
├── etc
│   ├── rc.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts 
├── lib
│   └── modules
├── lib6
├── lock
├── log
├── proc
├── run
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin
└── var

4. 文件的元数据信息有哪些?分别代表什么含义?如何查看?如何修改时间戳信息?

元数据信息:文件名称、属主属组、文件访问权限、uid、gid、三个时间戳(centos7是四个)、inode号等等

访问时间access time:读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间。

修改时间modify time:修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。

状态改变时间change time:是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。

查看命令:stat filename

[root@localhost home]# stat /tmp/mylinux/
    File: ‘/tmp/mylinux/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 137816826   Links: 17
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-12-10 10:45:11.942457078 +0800
Modify: 2016-12-10 10:43:07.978456374 +0800
Change: 2016-12-10 10:43:07.978456374 +0800
 Birth: -

修改时间戳信息:touch [option] filename

touch命令:

touch – change file timestamps

touch [OPTION]… FILE…

-c: 指定的文件路径不存在时不予创建;

-a: 仅修改access time;

-m:仅修改modify time;

-t 指定时间:[[CC]YY]MMDDhhmm[.ss]

    [root@localhost home]# touch  -a /tmp/mylinux/      ---//修改访问时间
    [root@localhost home]# stat /tmp/mylinux/
    File: ‘/tmp/mylinux/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
    Device: fd00h/64768d    Inode: 137816826   Links: 17    
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:user_tmp_t:s0
    Access: 2016-12-10 10:50:46.963458981 +0800         ---//访问时间已被修改
    Modify: 2016-12-10 10:43:07.978456374 +0800
    Change: 2016-12-10 10:50:46.963458981 +0800
     Birth: -

    [root@localhost home]#  touch  -m /tmp/mylinux/     ---//修改文件编辑时间
    [root@localhost home]# stat /tmp/mylinux/
     File: ‘/tmp/mylinux/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
    Device: fd00h/64768d    Inode: 137816826   Links: 17
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:user_tmp_t:s0
    Access: 2016-12-10 10:50:46.963458981 +0800
    Modify: 2016-12-10 10:54:34.479460274 +0800         ---/文件编辑时间已被修改
    Change: 2016-12-10 10:54:34.479460274 +0800
    Birth: -

5文件别名的定义,如何在命令中引用另一个命令的执行结果。

    alias NAME='COMMAND'      //只对当前shell进程有效,结束后得重新来再次定义
    unalias NAME              //撤销别名

    例如:
    [root@localhost home]#   alias  cat='tac'
    [root@localhost ~]# cat ab.lua 
    end    print("not c")    -->output:not c
    else
          print("c")        --这个没有执行
    if c then

    end
        print("not b")    --这个没有执行
    else
         print("b")        -->output:b
    if b then

    end
        print("not a")    --这个没有执行
    else
        print("a")        -->output:a
    if a then


    local c = nil
    local b = 0
    local a = true


    ab.lua
    撤销别名cat之后我们再尝试
    [root@localhost ~]#  unalias  cat
    [root@localhost ~]# cat ab.lua 
    ab.lua


    local a = true
    local b = 0
    local c = nil


    if a then
        print("a")        -->output:a
    else
        print("not a")    --这个没有执行
    end

    if b then
        print("b")        -->output:b
    else
        print("not b")    --这个没有执行
    end

    if c then
        print("c")        --这个没有执行
    else
        print("not c")    -->output:not c
    end

    可以发现ab.lua在cat别名为tac生效时是以倒序列出文件内容的。

6.exercise

6.1显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一个数字(可以有其他字符)的文件或目录 

    ls -d /var/l*[0-9]*[[:lower:]]

6.2显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
    ll -d /etc/[0-9]*[^0-9]

6.3显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录
    ll -d /etc/[^[:alpha:][:alpha:]]*

6.4在/tmp目录下创建以tfile开头,后跟当前日期或时间的文件,文件名形如:tfile-2016-05-27-9-32-22       
     touch /tmp/tfile-$(date +%F-%H-%M-%S) 

6.5复制/etc目录下,所有以p开头,以非数字结尾的文件或目录至/tmp/mytest1目录
    cp  -a /etc/p*^[0-9]  /tmp/mytest1

6.6复制/etc目录下,所有以.d结尾的文件或目录至/tmp/mytest2目录下 
    cp  -a /etc/*.d      /tmp/mytest2

6.7复制/etc目录下,所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录下

    cp  -a  /etc/[l,m,n]*.conf /tmp/mytest3

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/63589

(0)
oranixoranix
上一篇 2016-12-13
下一篇 2016-12-13

相关推荐

  • ☞LAMP

    LAMP lamp环境简介 php –> httpd Module形式安装php FastCGI方式安装php httpd-2.2配置fcgi php-xcache MySQL 安装与配置 php –> MySQL 快速部署LAMP php网站程序安装 phpMyadmin wordpress DiscuzX 脚本安装wordpress、disc…

    Linux干货 2016-10-12
  • LAMP快速部署及LAMP组合深入讲解-2

      lamp SQL 数据管理模型:层次模型、网状模型、关系模型数据分类:结构化数据、半结构化数据、非结构化数据 关系模型 数据库:一个方案、一个项目 二维关系: 表:row, column 索引:index 视图:view SQL接口:Structured Query Language;类似于OS的shell接口;也提供编程功能; ANSI: S…

    2017-06-04
  • Shell脚本的编写

    1.什么是Shell脚本 Shell脚本是利用 shell 的功能所写的一个程序 program,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正则表达式、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。 Shell 脚本可以简单的被看成是批处理文件, 也可以被说成是一个程序语言,且这个程序语言由于都是利用…

    Linux干货 2017-04-16
  • linux系统创建主分区、逻辑分区 、设置ext系列分区的参数以及检测分区

    使用到的命令有:fdisk分区管理命令、partx 强制内核更新分区表(通过查看/procs/partitions文件可知道内核没有更新新创建的分区)、mkfs格式化分区命令、mke2fs格式化etx专用工具、blkid查看分区属性、fsck测试分区    linux对不同的磁盘设备的设备文件命名如下:    &nbs…

    Linux干货 2016-05-16
  • 马哥教育网络班21期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; ~]# fdisk &n…

    Linux干货 2016-08-30
  • 链接分析算法之:HillTop算法

       Hilltop算法是由Krishna Baharat 在2000年左右研究的,于2001年申请专利,但是有很多人以为Hilltop算法是由谷歌研究的。只不过是Krishna Baharat 后来加入了Google成为了一名核心工程师,然后授权给Google使用的。     &nbsp…

    大数据运维 2015-04-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-16 17:08

    赞,整体看下来都很棒~~加油~