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 +0800Modify: 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

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

(0)
alonedreameralonedreamer
上一篇 2016-12-11 10:10
下一篇 2016-12-11 11:02

相关推荐

  • linux之netfilter与 iptables学习

    Linux之netfilter与iptables学习 一、为什么我们的主机需要防火墙 二、Linux下防火墙如何实现 三、四表五链学习 四、主机防火墙 五、网络防火墙 六、iptables命令学习 七、主机防火墙规则备份与恢复 ====================================== 一、为什么我们的主机需要防火墙?  &nbs…

    Linux干货 2016-06-23
  • shell脚本编程2

    八、条件选择if语句     注:if语句可嵌套     单分支         if 判断条件;then        &nbs…

    Linux干货 2016-08-22
  • sed与vim浅析

    sed与vim sed Stream EDitor, 行编辑器,sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。…

    Linux干货 2016-08-10
  • raid5 阵列

    1 fdisk 分区sdb2,sdd1,sde1, 2  新建raid5 [root@localhost ~]# mdadm -C /dev/md5 -a yes  -l 5  -n 3 -x 1 /dev/sdd1 /dev/sde1  /dev/sdf  /dev/sdb2  3   …

    Linux干货 2017-04-25
  • N21天天第十五周课程练习

    1、总结sed和awk的详细用法; sed Sed本质上是一个编辑器,但是它是非交互式的;同时它又是面向字符流的,输入的字符流经过sed的处理后输出。 Sed本身是一个管道命令,可以分析standard input的,主要是用来分析关键字的使用、统计等,此外还可以将数据进行替换、删除、   选取特定行等功能 格式:sed&nbs…

    Linux干货 2016-12-05
  • RAID磁盘列阵

                            RAID   RAID是英文Redundant Array o…

    Linux干货 2016-09-07

评论列表(1条)

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

    赞,基础内容的总结将成为后面最宝贵的记忆~继续加油~