Week2–Linux基础三

一. Linux上的文件管理类命令都有哪些,其常用的使用方法和例子是啥呢?

文件管理类命令大概就是这些: ls, cd, pwd, mkdir, rmdir, cp, rm, mv, touch, cat, more, less, head, tail, file, grep.

目录或文件操作类:

1. ls: (查看文件名命令)

-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来 (常用)

-A :全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录

-d :仅列出目录本身,而不是列出目录内的文件数据 (常用)

-f :直接列出结果,而不进行排序  (ls 默认会以档名排序!)

-h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来 (常用)

-i :列出 inode 号码,inode 的意义下一章将会介绍 (常用)

-l :长数据串列出,包含文件的属性与权限等等数据 (常用)

-n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在用户管理提到!)

-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小

-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来 (常说的递归)

-S :以文件容量大小排序,而不是用档名排序

-t :依时间排序,而不是用档名

2. cd: (切换用户当前目录)

cd [相对路径或绝对路径]

# 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号罗!

[root@kk ~]# cd ~test

# 代表去到 vbird 这个使用者的家目录,亦即 /home/test

[root@kk vbird]# cd ~

# 表示回到自己的家目录,亦即是 /root 这个目录

[root@kk ~]# cd

# 没有加上任何路径,也还是代表回到自己家目录的意思喔

[root@kk ~]# cd ..

# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思

[root@kk /]# cd –

# 表示回到刚刚的那个目录,也就是 /root 罗~

[root@kk ~]# cd /var/spool/mail

# 这个就是绝对路径的写法!直接指定要去的完整路径名称

[root@kk mail]# cd ../mqueue

# 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/mqueue 就这样写

3. pwd: (之前有写过了, 查看用户当前所在位置)

pwd [-P] 选项与参数:   

-P :显示出确实的路径,而非使用链接 (link) 路径。    

例:

pwd    

cd /var/mail

pwd –P

/var/spool/mail

pwd与pwd –P 显示的路径不同,大家清楚了吧!

4. mkdir: (创建目录)

mkdir [-mp] 目录名称 选项与参数:

-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask)

-p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!

-version 显示版本信息

例:

mkdir -p test1/test2/test3/test4 (一起创建)

mkdir -m 744 test2

5. rmdir: (删除目录)

rmdir [-p] 目录名称 选项与参数:

-p :连同上一级“空的”目录也一起删除

#一般要记住删除的目录必须是空的,不能包含目录或文件,如果要删除的话请先删除目录里面包含的内容再去删除目录, 当然也可以加-p, 全部删除, 但要小心, 免得里面有需要的文件或者文本也一并删了!

例:

rmdir -p test1/test2/test3/test4 (全部删除)

6. rm: (简单明了的命令, 但必需小心使用!!!)

rm [-fir] 文件或目录 选项与参数:

-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息(强制删除!)

-i :互动模式,在删除前会询问使用者是否动作

-r :循环删除直到删除到没!最常用在目录的删除了(这是非常危险的选项)

我们一般常组合使用,rm –rf (删除全部文件或目录,大家得小心使用,因为删除了就无法恢复了)

7. cp: (复制)

格式: cp 源文件 目标位置

#源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;

#目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

但这里的CP命令是分为2种的.

单源复制:cp [OPTION]… [-T] SOURCE DEST

    多源复制:cp [OPTION]… SOURCE… DIRECTORY

      cp [OPTION]… -t DIRECTORY SOURCE…

    单源复制:cp [OPTION]… [-T] SOURCE DEST

    如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;

      如果DEST存在:

      如果DEST是非目录文件:则覆盖目标文件;

      如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;

      多源复制:cp [OPTION]… SOURCE… DIRECTORY

        cp [OPTION]… -t DIRECTORY SOURCE…

      如果DEST不存在:错误;

      如果DEST存在:

      如果DEST是非目录文件:错误;

      如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;

cp指令常用的选项:

-i 使用交互式模式进行复制操作(存在覆盖情况时进行提示)

-f 强制覆盖目标文件

-r 或者-R 递归复制目录

-d 复制链接文件本身而非其指向的真实文件

  -a:-dR –preserve=all, archive,用于实现归档

  –preserv=

  mode:权限

      ownership:属主和属组

      timestamps: 时间戳

      context:安全标签

      xattr:扩展属性

      links:符号链接

      all:上述所有属性

8. mv:

mv [-fiu] source destination 选项与参数:

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

-u :若目标文件已经存在,且 source 比较新,才会升级 (update)

我们一般还可以用mv 命令进行重命名(例: mv test test.bak)

9. touch: (改变文件时间戳)

touch [-acdmt] 文件 选项与参数:

-a :仅修订 access time

-c :仅修改文件的时间,若该文件不存在则不创建新文件

-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 –date="日期或时间"

-m :仅修改 mtime

-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]–[[cc]YY]MMDDhhmm[.ss] 即[年]月日小时分钟[秒]

补充:

我们在 ls 这个命令的介绍时(ls –l),有提到每个文件在linux底下都会记录许多的时间参数,其实是有三个主要的变动时间,那么三个时间的意义是什么呢?

在这里补充一下

modification time (mtime):      

当该文件的“内容数据”变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔

status time (ctime):      

当该文件的“状态 (status)”改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间啊。

access time (atime):      

当“该文件的内容被取用”时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config,就会升级该文件的 atime 了

文件内容操作类:

10. cat: (直接显示文本)

cat [-AbEnTv] 选项与参数:

-A :相当于-vET 的整合选项,可列出一些特殊字符而不是空白而已

-b :列出行号,仅针对非空白行做行号显示,空白行不标行号

-E :将结尾的断行字节 $ 显示出来

-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同 (常用)

-T :将 [tab] 按键以 ^I 显示出来

-v :列出一些看不出来的特殊字符

11. more: (一页一页翻动查看)

常用的快捷键:

空白键 (space):代表向下翻一行

Enter     :代表向下翻一行

/字串     :代表在这个显示的内容当中,向下搜寻字串这个关键字

:f            :立刻显示出档名以及目前显示的行数

q            :代表立刻离开 more ,不再显示该文件内容

b 或 Ctrl+b :代表往回翻页,不过这动作只对文件有用

12. less: (一页一页翻动)

less与more区别: 在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件

常用的快捷键:

空白键    :向下翻动一页

[pagedown]:向下翻动一页

[pageup]  :向上翻动一页

/字串     :向下搜寻字串的功能

?字串     :向上搜寻字串的功能

n         :重复前一个搜寻 (与 / 或 ? 有关!)

N        :反向的重复前一个搜寻 (与 / 或 ? 有关!)

q         :离开 less 这个程序

13. head: (取用前面几行)

head [-n number] 文件 选项与参数:

-n :后面接数字,代表显示几行的意思(默认是前10行)

14. tail:(与head相反,取用后面几行)

tail [-n number] 文件 选项与参数:

-n :后面接数字,代表显示几行的意思  (默认后10行)

-f :表示持续查看后面所接的文件,要等到按下Ctrl+c才会结束tail的查看

#(tail –f 非常有用,当我们看某些经常更新的日志时,例: tail -f /var/log/maillog)

15. file: (查看文件类型)

file ~/.bashrc ——–ASCII 的纯文字档

file /usr/bin/passwd ————可执行文件

file /var/lib/mlocate/mlocate.db  ————— data 文件

总结: 这里所列出的只是命令中常用的部分选项, 不代表已经是最完全,最完整的.

有些命令有更多的参数可选, 具体可以Man,help,whatis等帮助文档再去详细看.

二. bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容, 和一般小例子。

1. bash的工作特性之—-命令执行状态返回值

  简单说就是Bash的执行结果状态.

  命令执行的状态结果:

  bash通过状态返回值来输出此结果:

成功:0

失败:1-255

命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;

$?–它是Linux的一个特殊变量,其值为0或非0;为0表示命令执行成功,非0表示命令执行失败

命令正常执行时,有的还会有命令返回值:根据命令及其功能不同,结果各不相同;

引用命令的执行结果:

$(COMMAND)

或'COMMAND'

例子:

1. # echo "Helllo World"

2. Helllo World

3. # echo $?

4. 0

5. # echoa "Hello World"

6. -bash: echoa: command not found

7. # echo $?

8. 127

2. bash的工作特性之—-命令行展开

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

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

例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b

三. 请使用命令行展开功能来完成以下练习:

(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

  (2)、创建/tmp/mylinux目录下的:

mylinux/

   ├── bin

   ├── boot

   │   └── grub

   ├── dev

   ├── etc

   │   ├── rc.d

   │   │   └── init.d

   │   └── sysconfig

   │       └── network-scripts

   ├── lib

   │   └── modules

   ├── lib64

   ├── proc

   ├── sbin

   ├── sys

   ├── tmp

   ├── usr

   │   └── local

   │       ├── bin

   │       └── sbin

   └── var

       ├── lock

       ├── log

       └── run

(一). 一般的做法是什么?肯定是这样:

mkdir -pv /tmp/a_c

mkdir -pv /tmp/a_d

mkdir -pv /tmp/b_c

mkdir -pv /tmp/b_d

但这样mkdir命令要敲4遍,冗余操作太多了,可以利用bash的特性–命令行展开来简化操作:

mkdir -pv /tmp/{a,b}_{c,d}

(二). 用命令行展开功能来创建题目中列出的Linux目录结构:

mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc{rc.d/init.d,sysconfig/network-scripts},lib/modu1es,lib64,proc,sbin,sys,tmp,usr/local{bin,sbin},var{lock,log,run}}

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

首先来解释, 什么是元数据:

任何文件系统中的数据分为数据和元数据.

数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等.

在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置.

用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性.

元数据包含: 名称, 大小, 块数量, IO块数量, 文件类型, Inode, 链接, UID, GID, atime, mtime.

1. 文件元数据查看:

  可使用stat命令查看文件的元数据

  stat用法:

  stat – display file or file system status

  显示文件或文件系统的状态

  stat FILE…

  文件:  两类数据

元数据:metadata:access(最后访问),modify(最后修改),change(最后改变)

   数据: data

例如:

# echo 123 >> /tmp/functions

# stat /tmp/functions

File: ‘/tmp/functions’(文件名)

Size: 4 (大小) 

Blocks: 8  (文件占了多少个数据块) 

IO Block: 4096 (文件所占数据块的块大小) 

regular file (普通文件)

Device: fd00h/64768d (硬件,既说明该文件在硬盘的那个柱面) 

Inode: 134  (节点号)

Links: 1  (链接)

Access: (0644/-rw-r–r–) (权限)

Uid: (0/root)–(该文件所属的属主)

Gid: (0/root)–(该文件所属的属组)

Context: unconfined_u:object_r:user_tmp_t:s0–(安全上下文)

Access: 2016-12-12 15:38:47.104522265 -0400–(文件上一次的访问时间,其实就是最近访问时间)

Modify: 2016-12-12 15:38:48.104522265 -0400–(文件上一次修改的时间,其实就是最近数据修改过)

Change: 2016-12-12 15:38:48.104522265 -0400–(文件上一次属性更改的时间,其实就是最近元数据&数据修改过)

2. 修改文件的时间戳信息:

可以使用touch命令更改文件的时间戳(前面已经有讲解过)

touch – change file timestamps

例子: 

# touch -t 201612100810.00 /tmp/functions  #修改文件访问时间和修改时间为: 2016-12-10 08:10.00

-t选项就是实现自定义时间戳.

五. 如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果

1. 定义命令别名使用alias命令.

alias命令

# alias(获取所有可用的别名定义)

# alias NAME='COMMAND'(定义别名), 注意: 仅对当前shell进程有效

# unalias NAME(撤销别名)

2. 在命令中引用另一个命令的执行结果:(Bash特性之一,前面已有提及)

$(COMMAND)

或'COMMAND'

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

ls -dh /var/l[a-z0-9][a-z]

七. 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录

ls -dh /etc/[0-9]*[^0-9]

八. 显示/etc目录下,以非字母开头,后面跟一个字母以及其他任意长度的字符的文件或目录

ls -dh /etc/[^a-z][a-z]*

九. 在/tmp目录下创建以tfile开头, 后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22

touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)

十. 复制/etc目录下的所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中

cp -ri /etc/p*[^0-9] /tmp/mytest1

十一. 复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中

cp -ri /etc/*.d /tmp/mytest2

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

cp -ri /etc/[lmn]*.conf /tmp/mytest3

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

(0)
上一篇 2016-12-12 18:24
下一篇 2016-12-12 19:30

相关推荐

  • linux学习记录

    vm使用记录 1、安装vm程序; 2、下载Cenos—6.4*86_64_bin-DVD1.iso 安装: 1、新建一个虚拟机; 2、选择自定义安装(高级); 3、兼容性选择默认方式; 4、安装客户机操作系统(选择稍后安装操作系统方式); 5、选择客户机操作系统(选择Linux系统,版本号(选择自己下载的Linux系统版本,例如centos等)); 6、命名…

    Linux干货 2015-12-10
  • M22 wireshark使用方法简介

    wireshark是一款著名的开源抓包软件,它可以抓取网卡的数据包,以供网络管理员分析。 一 安装方法 debain系安装方法: sudo add-apt-repository ppa:wireshark-dev/stable sudo apt update sudo apt install wireshark 启动wireshark: sudo wires…

    2017-03-20
  • 第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who (unknown) :0           2016-12-15 2…

    Linux干货 2016-12-20
  • 马哥linux0811作业内容

    总结位置变量$1,$2.. $10,$11…MAX 位置变量的含义分别就是代表第几个参数,$1就是脚本运行的第一个参数.$2就是第二个.以此类推.直到最后. $*,$@,$# 区别 特殊变量: $0 : 表示命令本身 $#:传递给命令的参数个数 $*:传递给脚本的所有参数(所有参数是一个整体的字符串) $@:传递给脚本的所有参数(各个参数都是独立…

    Linux干货 2016-08-19
  • Linux系统下的bonding设置

    bonding多个物理网卡聚合成一个虚拟网卡     Bonding,其原理是讲多个物理网卡聚合成一个虚拟网卡,一张网卡正常工作,其余网卡作为备用,每隔一段时间(miimon=毫秒),向正常工作的网卡发一状态询问,若没回复,则认为其运行失败,然后就会启用备用网卡,但是IP地址不会改变。   &nbs…

    Linux干货 2016-09-07
  • 第一周作业

    1. 描述计算机的组成及其功能 CPU:CPU包括运算器和控制器,并采用大规模集成电路工艺制成的芯片,又称微处理器芯片。 运算器又称算术逻辑单元(Arithmetic Logic Unit简称ALU)。它是计算机对数据进行加工处理的部件,包括算术运算(加、减、乘、除等)和逻辑运算(与、或、非、异或、比较等)。 控制器负责从存储器中取出指令,并对指令进行译码;…

    Linux干货 2017-01-04

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-16 23:23

    赞,内容上基本上是没啥问题~能结合markdown来使用会更好~加油~