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

相关推荐

  • 马哥教育网络班22期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:是连接两个局域网的基于MAC地址数据存储转发设备,工作于数据链路层 集线器:所有端口处于同一个广播域和冲突域中,带宽共享,工作于物理层 二层交换机:多端口网桥,一个端口一个冲突域,默认所有端口位于同一个广播域中,可以划分vlan,隔离广播域,带宽独享 三层交换机:具有路由功…

    Linux干货 2016-10-17
  • linux基本命令的使用

      1>    查看当前终端名:tty 或who am i       查看当前所有登录的终端信息:who       查看当前所有登录的终端的详细信息 w 2> 编辑器    …

    2017-07-15
  • Linux磁盘配额

    磁盘配额 什么是磁盘配额? 磁盘配额(Quota)是Linux系统中由于是多用户、多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中少数几个用户大量占掉了磁盘空间的话,那肯定影响其他用户的使用权限。因此我们就需要对每个用户限制硬盘使用空间,来避免此种情况的发生,这就是磁盘配额。 Quota的一般用途: *针对WWW server,例如:每个…

    Linux干货 2016-09-01
  • SRPM具体使用过程

    SRPM 简介:SRAM是Source RPM的意思,就是RPM的源代码的意思,这个SRPM就是没有经过编译的源代码。如果我们想要安装一个SRPM软件,那么就必须: 先将该软件以RPM管理的方式编译,将SRPM编译成为RPM文件 然后将编译完成的RPM文件安装到Linux系统中。 一.程序包编译: 程序包编译安装: Application-VERSION-r…

    Linux干货 2016-08-24
  • Linux系统进程管理

    本章学习内容     ——进程概念     ——进程创建、切换和撤销     ——进程调度     ——进程分类     ——进程状态 &n…

    Linux干货 2016-09-13
  • 内核与内核模块

    内核与内核模块 先来看一下,内核与内核模块放在哪?这里以centos6为例 内核: /boot/vmlinuz或/boot/vmlinuz-version 内核解压所需要RAMDisk: /boot/initrc(/boot/initrc-version) 内核模块:/lib/modules/version/kernel或/lib/modules/uname…

    2017-09-04