Week2 bash特性及文件相关

1. 文件类命令及其常用的使用方法

文本查看类命令
cat head tail more less

分屏查看命令

more less
more FILE 翻至最后一页自动退出
less FILE -f 翻至最后一页不退出 若有追加内容则立即显示

首尾查看命令


head tail

head命令: 查看文件前n行

head FILE
head [option] FILE
head -20 /etc/rc.d/init.d/functions

tail命令:查看文件的后n行

tail FILE
-f: 显示文件后不退出等待追加的新行并立即显示
tail -20 /etc/rc.d/init.d/functions

文件管理类
cp mv rm

cp命令: copy

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不存在->error
        若DEST存在,
            DEST是非目录文件->error
            DEST是目录文件:分别复制每一个文件至目录目录并保持原名
    选项
        -i: 交互式复制,即覆盖之前提醒用户确认
        -f:强制覆盖目标文件
        -r/R:递归复制目录:
        -d:复制符号链接本身 而非其指向的源文件
        -a: -dR --preserve=all   archive归档
        --preserve=
            mode ownership timestamps context xattr links all

mv命令: move
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

   -i:交互式
   -f:force

rm命令: remove

    -i:交互式
    -f:force
    -r:recursive
     rm -rf /PATH/TO/DIR

所有不用的文件建议不要直接删除,而是移动到某专用目录(模拟回收站)

2. bash的工作特性

2.1 命令执行状态返回值



命令执行结果:
命令执行状态返回值:
保存于bash的特殊变量$? 成功:0 失败1-255

2.2 引用

强引用 'XXX' 单引号——不做替换直接显示
弱引用 "XXX" 双引号——变量会被替换
命令引用——替换为命令执行结果
$(COMMAND)
`COMMAND`

  [root@node2 ~]# A=20
  [root@node2 ~]# echo '$A'
  $A
  [root@node2 ~]# echo "$A"
  20
  [root@node2 ~]# echo date
  date
  [root@node2 ~]# echo $(date)
  Sun Dec 11 10:21:16 CST 2016

2.3 命令行展开

命令行展开
~:可承载一个逗号分隔的路径列表,并将其展开为多个路径

创建 /tmp/x/y1/a,/tmp/x/y1/b,/tmp/x/y2
  mkdir -pv /tmp/x/{y1/{a,b},y2}

tree命令:显示目录结构
tree [options] directory
-L 显示层数

练习:使用命令行展开功能完成:
(1)创建/tmp目录下的a_c,a_d,b_c,b_d

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

(2)创建/tmp/mylinux目录下的/下的各一级目录及其部分子目录:

  mkdir -p /tmp/mysysroot/{bin,sbin,etc/sysconfig/network-scripts,usr{/bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var{/cache,log,run}}

2.4 文件名通配符使用

globbing: 文件名通配
匹配模式: 元字符

 *: 匹配任意长度的任意字符
 ?: 匹配任意单个字符
 []:匹配指定范围内的任意单个字符
        [a-z],[A-Z],[0-9],[a-z0-9]
        [[:upper:]] [[:lower:]] [[:alpha:]]
        [[:digit:]] 
        [[::alnum]] 字母+数字
        [[:space:]] 
        [[:punct:]] 标点符号
 [^]:匹配指定范围外的任意单个字符
        [^0-9]
        [^[:alnum:]]

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

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

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

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

显示在/etc目录下以非字母开头后跟一个字母以及其他任意长度任意字符的文件或目录>ls /etc/[^[:alpha:]][:alpha:]*

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

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

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

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

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

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

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

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

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

文件分数据和元数据
数据:data --> cat等看到的内容
元数据:meta data -->文件自身的属性 stat看到的信息

文件大小 文件类型 权限 IO块数 属主属组ID号 时间戳

时间戳:
Access: 2016-12-10 14:36:34.574026967 +0800
Modify: 2014-04-02 23:30:47.000000000 +0800 数据改变
Change: 2016-11-12 01:17:23.004986603 +0800 元数据改变

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

touch:change timestamps

touch [OPTION]..FILE
  -c 文件不存在时不予创建
  -a 仅修改access time
  -m 仅修改modify time
  -t STAMP YYMMDDhhmm[.ss]
touch -m -t 201312010303.03 /tmp/1.txt

你可能感兴趣的:(Week2 bash特性及文件相关)