02葵花宝典之bash特性及文件入门

文件管理 目录 命令替换 命令执行状态 元数据 时间戳

02葵花宝典之bash特性及文件入门

一、文件管理命令

前面说过,linux上,一切皆文件,对文件的管理,是学习linux的基本内容之一。下面介绍linux上的一些文件管理命令

1目录相关类命令(知识)

  1. pwd 显示当前工作目录
  2. cd /SOMEPATH 切换目录
  • / 表示根目录
  • ~ 表示当前用户的家目录(home directory)
  • ./ 表示当前目录
  • .. 表示当前目录的上父目录(如果存在)
  • cd – 切换至前一个工作目录
  1. mkdir 创建目录
  • -m,–mode=MODE 设置所创建的目录权限,如果不指定,则按照UMASK值设定默认权限
  • -p,如果所要创建的目录的父目录不存在,则先创建父目录,然后创建该目录
  • -v,–verbose 显示创建的过程(当父目录不存在时,使用-p选项,可以看见先创建的父目录

mkdir

  1. rmdir 删除目录

注意,该命令只能删除空目录,使用较少。日常工作中使用rm命令较多。

  1. tree 显示目录层级,目录树及文件
  • tree [option] [directorty]
  • 以当然工作目录为起始点前世。在某些linux系统上,该命令没有安装,需要手动安装
  • -L level 显示levle级目录和文件
  • -d 只显示目录
  • -P PATTERN 显示已PATTERN匹配到的目录

2 文件查看类命令

  1. cat

cat [OPTION]… [FILE]…

cat 是concatenate的简写,连接之意,是连接文件并输出至标准输出(屏幕)

-n –number 显示行号

  1. tac

用法基本同cat,只是像名字一样,逆序显示行

  1. more

分屏显示文件内容,如果显示到文件尾部,则退出!

  1. less

分屏显示文件内容,如果显示到文件尾部,但不退出,需要退出,可按q键退出 其他基本与more命令一致。使用的翻屏命令与man命令一致(man命令内部,调用的就是less -is)

  • f 或者F 或者 SPACE(空格键),向下翻整屏
  • b 或者B:backward,向上翻N行,默认整屏
  • d 或者D:downward,向下翻N行,默认屏幕的一半行数,即翻半屏
  • u 或者U:backward,向上翻N行,默认屏幕的一半行数,即翻半屏
  • ENTER(回车键),默认向下翻1行
  • 查找: 使用/keyword或者?keyword
  1. head

head [OPTION]… FILE… 显示文件前面的行,默认10行

-n # 显示前#行,可以简写为-#

-c # 显示前#个字节

  1. tail

tail [OPTION]… FILE… 显示文件后面的行,默认10行;常用的参数和head基本一致

  1. Stat

stat [OPTION]… FILE… 显示文件状态,包括大小、块信息、访问时间、修改时间、改变时间等信息。

stat

3 文件管理类命令

  1. touch

touch [OPTION]… FILE… 更改文件的时间戳

touch命令本意是更改文件时间戳,但现在更多应用于创建一个文件

-a 只修改access time,默认修改atime为当前时间

-m 只修改modify time,默认修改mtime为当前时间

-c –no-create 如果文件不存在,则不创建文件(默认是文件不存在则创建文件)

-t 设置时间戳为指定时间,时间戳格式为:[[CC]YY]MMDDhhmm[.ss]

  1. cp

cp 复制命令,有3种使用风格

(1)cp [OPTION]… SOURCE DEST

SOURCE、DEST都是文件,DEST存在,则覆盖(默认不提醒用户,直接覆盖,可使用-i提醒用户);如果DEST不存在,则以SOURCE为名,创建文件。

(2)cp [OPTION]… SOUTRE DIR

SOURCE是文件,DIR是目录。在DIR下创建以SOURCE相同的文件

(3)cp [OPTION]… -r DIR DIR

DIR是目录,必须使用-r选项,递归复制,目标存在,则在目标下复杂,目标不存在,在创建目标后复制

常用的选项有:

  • -i 交互式复制,即在覆盖文件时提示用户
  • -r 源为目录时必须使用,递归复制
  • -d 不复制源文件或目录的符号连接
  • -f 强制
  • -p 保存原来文件的属主属组信息
  • -v 显示复制过程
  • –preserve[=ATTR_LIST] 保留文件或目录指定的属性,默认是权限、属主属组、时间戳等
  1. mv

mv 移动文件,相当于剪切,其用法基本与cp相似。

  1. rm rm [OPTION]… FILE… remove移除文件或目录
  • -i 交互式,即移除过程提醒
  • -f 强制移除
  • -r 递归删除目录

rm -rf / 删除根,可导致系统崩溃,rm -rf 应当慎用

二、bash的基本特性之一

1.命令执行状态及返回值

bash的命令执行状态是指一条命令执行的状态结果,也就是是否成功,如果不成功,根据命令不同,给出相应的提示结果。一般而言,如果命令的执行状态返回值为0,则表示命令执行成功,如果不为0,则表示命令没有执行成功。

在运行完命令后,该执行结果保存在bash的特殊变量$?中。该变量可以和其他普通变量一样,被引用。

注意,要查看一条命令的执行状态返回值,必须在该命令执行完成后立即进行查看或将其保存,如果这条命令执行完成后,再执行一条或多条命令,则此时$?中保存的就不是这条命令的执行状态结果了,因为$?这个变量已经被后面执行的行了的执行状态返回值所覆盖。

2.命令行展开

将类似于COMMOND1{STH1,STH2,…}COMMOND2格式的命令展开为COMMAND1STH1COMMAND2和COMMAND1STH2COMMAND2…等多条命令,依次有bash来执行,{}可以嵌套,也可以并列存在。{}类似于数学多项式中的(),STH1,STH2类似于“加数”,“,”相当于“+”,整体行为相当于多项式()相乘的展开

例如:

{a,b} 可以展开为 a b

/proc/{a,b}xxx{c,d} 可展开为/proc/axxxc /proc/axxxd /proc/bxxxc /proc/bxxxd

三、创建目录及命令行展开

1.创建/tmp目录下的:a_c,a_d,b_c,b_d

touch /tmp/{a,b}_{c,d}

2.创建/tmp/mylinux目录下的

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}}touch /tmp/{a,b}_{c,d}

四、文件的元数据

文件的数据包括两部分,即元数据和数据,所谓元数据,可以认为是文件的属性,所谓数据,是文件的内容。

文件的元数据包括大小、需要的存储块数、文件类型(f、d、c、b、p、s、l)、inode号、权限、属主、属主、时间戳(访问时间、修改时间、改变时间)等。 可使用stat FILE…命令来查看。如:

stat /dev/tty0 /etc/passwd

修改文件的时间戳信息,可用touch命令

具体为: touch -a FILE 修改文件的访问和改变时间为当前时间 touch -m FILE 修改文件的修改和改变时间为当前时间 touch -a -t STAMP FILE 修改文件的访问和改变时间为STAMP指定的时间,STAMP的格式为:[[CC]YY]MMDDhhmm[.ss]

touch -a -t 1102251830.05 /etc/virc

五、命令别名和命令引用

命令别名 命令别名通俗可理解为,为一个常用的命令(包含选项和参数)定义一个名称,可用这个名称来代替那个命令(包含选项和参数)。 使用alias命令来定义命令别名,alias [-p] [name[=value] … ] 如果没有选项和参数,该命令显示当前用户shell定义的所有命令别名。 在当前shell中使用alias定义的命令别名,仅在当前shell进程中有效。若要命令别名永久有效,需要在用户家目录下的.bashrc(对该用户有效)或/etc/bashrc(对所有shell为bash的用户有效)配置文件中使用alias定义

alias

命令引用 命令引用,即在一个命令中使用另外一个命令的执行结果。需要引用执行结果的命令使用脱字符(一般位于键盘ESC键下方,像单引号)。 如:

adduser `echo "testuser"`

 

上述命令中,adduser使用echo testuser的命令结果testuser作为用户名。

六、练习题

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

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

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

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

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

ls -d /etc/[^[:alpha:]][[:alpha:]]*

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

touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`

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

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

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

mkdir /tmp/mytest2
cp -rv /etc/*.d /tmp/mytest2

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

mkdir /tmp/mytest3
cp -r /etc/[lmn]*.conf /tmp/mytest3
 如有错误,请联系:1103212768@qq.com

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92030

(0)
koalakoala
上一篇 2018-03-10 17:01
下一篇 2018-03-11 13:26

相关推荐

  • 基于rsync+inotify实现数据实时同步传输

    前言 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之rsync+inotify便应运而生。本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输。 rsync相关介…

    Linux干货 2015-04-27
  • Linux新增磁盘分区

    磁盘的分区        主分区与扩展分区最多可以有4个(分区表64字节,每分区占16字节);        扩展分区最多只能有一个;        逻辑分区是由扩展分区持续分出来的分区;       &nbs…

    Linux干货 2016-05-29
  • DNS基础及使用BIND搭建域名服务器

        本文主线是DNS服务相关概念和服务器搭建,在此之前了解一下域名这个东东很有其必要性,因为DNS服务就是应域名而生的。那么域名是什么哪?     域名     域名是用一串用点分开的字符串来表示的internet上的某一台或者一组计算机的名称,用于在数据传输时标识计算机的电子方位。举…

    Linux干货 2015-06-11
  • 浅谈TCP三次握手和四次分手

          TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议提供可靠的连接服务,采用三次握手确认建立一个连接,比如我们去访问一个网站,从输入网址到页面显示我们所想要浏览的内容,这个过程其中就包含了小编要说的三次握手和四次挥手。 一、首先我们来了解…

    2017-09-02
  • nfs 共享实验

    nfs全称为:network file system    网络文件系统 在Linux里可以理解为将一个文件夹变成共享文件夹,让其他用户都可以访问。而访问的主机其本地磁盘是没有存储文件的 创建方法如下 :     准备两台机器,一台当 client  另一台当server    &nbsp…

    Linux干货 2017-06-07
  • find详解(Blog 2)

    find与locate特性、find命令

    Linux干货 2017-11-08