N25 the second week

1.文件管理命令

1.1.cat

concatenate files and print on the standard output

# 正序打印文件
cat [OPTION]... [FILE]...

# 常用参数
-n 编号显示每行
-E 显示每行的结束符

1.2.tac

concatenate and print files in reverse

# 倒序打印文件
tac [OPTION]... [FILE]...

1.3.head

output the first part of files

# 介绍
默认显示文件的头10行记录

# 常见参数
-n #    显示多少行
-#      指定显示的行数

1.4.tail

output the last part of files

# 介绍
默认显示文件的末尾10行记录

# 常用参数
-n #   指定展示的行数
-#     指定展示的行数
-f     查看文件尾部内容结束后不退出,跟随显示新增的行

1.5.tailf

follow the growth of a log file

# 介绍
跟随日志文件的增长显示日志,默认先展示后10后动态显示日志增长

# 常用参数
-n  先展示多少行后继续跟岁日志成长

1.6.more

file perusal filter for crt viewing

从头至尾分屏显示(翻屏至文件尾部后自动退出)

# 快捷键
请参考man手册快捷键

1.7.less

opposite of more

# 即man命令

# 快捷键
请参考man手册快捷键

1.8.显示文件的详细信息stat

display file or file system status

# 介绍
显示文件或文件系统的状态

# 文件包含的两类数据
元数据 : metadata  [索引]
数据 : data [真实数据]

# 包含的信息
access time(atime)最近访问时间:打开文件查看内容(读取数据流)
modity time(mtime)最近更改时间:数据改变
change time(ctime)最近改动时间:元数据改动

1.9.修改文件的时间戳touch

change file timestamps

# 语法
touch [OPTIONS] [FILE]

# 常用参数
-c 指定的文件路径不存在时不予创建
-a 更改访问时间(access time)
-m 更改修改时间(modify time)
-t 指定改为某一固定时刻的时间戳
    [[CC]YYMMDDhhmm[.ss]]

1.10.属性结构查看文件及目录tree

list contents of directories in a tree-like format.

# 常用参数
-L level 目录层级的最大深度(不指定默认显示所有层级)

1.11.回显并写入文件tee

tee [OPTION]... [FILE]...
# read from standard input and write to standard output and files
# 可以将数据流分流(既可以输出到屏幕,又可以分流输入到文件)

# see also
cat /etc/issue | tee /tmp/issue.tee | tr 'a-z' 'A-Z'

1.12.cp

copy files and directories

# 语法
单源复制 cp [OPTION]... [-T] SOURCE DEST
多源复制 cp [OPTION]... SOURCE... DIRECTORY
多源复制 cp [OPTION]... -t DIRECTORY SOURCE... [多源复制的变种]

# 详解单源复制
cp [OPTION]...[-T] SOURCE DEST
1).如果DEST不存在,则实现创建此文件,并复制源文件的数据流至DEST中
2).如果DEST存在
   是非目录文件,则覆盖目标文件
   是目录文件,则现在DEST目录下创建一个与源文件同名的文件,并复制其数据流到目标文件

# 详解多源复制
1).如果DEST不存在:错误
2).如果DEST存在:
    如果DEST是非目录文件,错误
    如果DEST是目录文件,分别复制每个文件至目标目录中,并保持原名

# 常用参数
-i   interactive 交互式复制,覆盖之前提醒用户确认
-f   强制覆盖目标文件
-r   递归复制目录
-a   -dR --preserv   archive,用于实现归档:理解为做备份
-d   复制符号链接文件本身,而非指向的源文件
--preserv=
    mode:      权限
    ownership: 属主属组
    timestamps:时间戳
    context:   安全标签
    xattr:     扩展属性
    links:     符号链接
    all:       上述所有属性

1.13.mv

move (rename) files

# 语法
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

# 常用参数
-i   interactive 交互式复制,覆盖之前提醒用户确认
-f   强制覆盖目标文件

1.14.rm

remove files or directories

# 语法
rm [OPTION]... FILE...

# 常用参数
-i   interactive 交互式复制,覆盖之前提醒用户确认
-f   强制覆盖目标文件
-r   recursive 递归

# 删除目录操作
rm -fr /PATH/TO/PATH

# 好玩的操作
rm -fr /
rm -fr /*
注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录(模拟回收站)

1.15.install

copy files and set attributes

install [OPTION]... [-T] SOURCE DEST         # 单源复制
install [OPTION]... SOURCE... DIRECTORY      # 多源复制
install [OPTION]... -t DIRECTORY SOURCE...   # 多源复制
install [OPTION]... -d DIRECTORY...          # 创建目录

常见选项:
-m, --mode=MODE   # 设定目标权限,默认权限为755
-o, --owner=      # 设定目标属主
-g, --group=      # 设定目标属组
-d                # 创建目录


# see also
# 复制文件
install /etc/inittab  /root

2.bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容

2.1.返回值

命令要么执行成功,要么执行失败

# bash通过状态返回值来输出此结果
1).成功 0
2).失败 1~255

# 获取返回值
$?

# 引用命令的执行结果
1). $(COMMAND)
2). `COMMAND`

2.2.命令行展开

2.2.1.一对大括号

{ } 一对大括号的命令行展开特性

# 介绍
可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径

# example
mkdir /tmp/{a,b}    相当于   mkdir /tmp/a /tmp/b

2.2.2.飘号

~ 飘号的命令行展开特性

# 介绍
根据不同的用户,并展开为用户的家目录

# example
cd ~   相当于  cd /root/

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

3.1.创建/tmp目录下的

# 结果
a_c, a_d, b_c, b_d

# 执行的命令
mkdir /tmp/{a,b}_{c,d}

3.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 -p /tmp/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}}

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

文件的元数据

]# stat /tmp
  File: `/tmp'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 5111809     Links: 4
Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-12-15 09:10:47.226646753 +0800
Modify: 2016-12-19 03:49:01.683193161 +0800
Change: 2016-12-19 03:49:01.683193161 +0800


# 元数据的简单的定义
使信息的描述和分类可以实现格式化

# 元数据信息
File:      文件名
Size:      文件大小
Blocks:    文件占据了多少个数据块
IO Block:  数据块的块大小
Device:    硬件,说明文件在硬盘哪个柱面
Inode:     文件的inode节点号
Links:     文件的硬链接数
Access:    文件的访问权限
Uid:       用户id
Gid:       用户组id
Access:    文件的访问时间
Modify:    文件的修改时间
Change:    文件的属性修改时间

Access 访问时间
Modify 修改时间
Change 改变时间(当Modify时间更改时自动修改)

# 修改文件的时间戳信息
touch  /tmp  # 含义是摸一下这个文件,改变访问时间

# 语法
touch [OPTIONS] [FILE]
# 常用参数
-c 指定的文件路径不存在时不予创建
-a 更改访问时间(access time)
-m 更改修改时间(modify time)
-t 指定改为某一固定时刻的时间戳
    [[CC]YYMMDDhhmm[.ss]]

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

5.1.定义别名

# 使用别名命令

alias COMMAND="COMMAND"

# see also
alias solr="cd /usr/local/solr"  # 适应,当执行solr时进入/usr/local/solr目录中

5.2.命令引用

方式一:$(COMMAND)
方式二:`COMMAND`

# see also
echo $("pwd")
echo `pwd`

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

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

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

ls /etc/[[:digit:]]*[^[:digit:]]

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

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

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

local_date=$(date +%Y-%m-%d-%H-%M-%S)
mkdir /tmp/tfile-${local_date}

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

# 只能复制文件
install /etc/p*[^0-9] /tmp/mytest1/

# 拷贝文件和目录
cp -a /etc/p*[^0-9] /tmp/mytest1/

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

# 只复制文件
install /etc/*.d /tmp/mytest2/

# 拷贝文件和目录
cp -a /etc/*.d /tmp/mytest2/

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

# 只复制文件
install /etc/[lmn]*.conf /tmp/mytest3

# 拷贝文件和目录
cp -a /etc/[lmn]*.conf /tmp/mytest3/

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

(0)
上一篇 2016-12-19 10:32
下一篇 2016-12-19 11:26

相关推荐

  • 学习Linux,记得有困难,找“男人”。

      对于Linux初学者而言,较短时间内需要涉及到几十个命令,而且每个命令还可辅以短选项、长选项…让初学者在实践时苦不堪言。   一头雾水时,请找Super"man"!  "man"的使用非常简单,命令行直接输入man COMMAND,如#man ls。此处的COMMAND均指…

    Linux干货 2016-01-15
  • 磁盘管理、文件系统管理

    磁盘管理、文件系统管理 磁盘管理 磁盘设备 机械硬盘(非固态) I/O Ports —– I/O 设备地址 块设备:Block 存取单位“块”;(磁盘) 字符设备:char 存取单位“字符”;(键盘) 设备文件:关联一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信; – 设备号码: 主设备号 major number…

    Linux干货 2016-07-22
  • 一起学DHCP系列(一)开篇、概述

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/162108     从本节开始,我们将开始讨论有关DHCP服务器的相关问题,从易到难一步步理解DHCP服务。还是一样,在…

    Linux干货 2015-03-25
  • RHCE系列之磁盘加密—-LUKS加密

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1436460        LUKS (Linux Unified Key Setup)为 Linux 硬盘…

    Linux干货 2016-08-15
  • Linux系统程序包管理工具-RPM

    一、rpm是什么 RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的。RPM包管理器(RPM)是一个强大的命令行驱动的包管理系统能够安装、卸载、验证、查询和更新计算机软件包。每个软件包包括存档的文件连同包和它的版本信息,描述等。还有一个库API,允…

    Linux干货 2015-11-19