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
下一篇 2018-03-11

相关推荐

  • 自制简易linux系统

    一、环境准备 1.笔记本电脑 2.vmware12软件 3.CentOS 6虚拟机 4.大于5G空间的物理磁盘分区 二、分区并挂载文件系统 1.添加磁盘 在vmware中选中CentOS 6系统并右击鼠标选择设置,添加–>硬盘–>SCSI(推荐)–>创建新虚拟磁盘–>大小改为5G–>完成 2.分区并…

    Linux干货 2016-09-20
  • shell 脚本 【上】

    shell 脚本编程 【上】 程序就是指令加上数据组合而成 程序编程风格:  过程式:以指令为中心,数据服务于指令  象式:以数据为中心,指令服务于数据  编程语言:  低级:汇编  高级:  编译:高级语言–>编译器–>目标代码 java,C#  解释…

    Linux干货 2016-08-15
  • N26-肉肉-第一周作业

    1.描述计算机的组成及其功能CPU:运算器、控制器、寄存器、缓存存储器:内存,RAM(Random Access Memory)    IO:输入输出设备2.按系列罗列linux的发行版本,并描述不同发行版本之间的联系与区别。发行版有数百种之多,著名的主流发行版有3种Debian,Slackware,RedHatDebian:使…

    Linux干货 2017-01-03
  • Linux 下openssl搭建一个CA

    CA : 证书颁发机构PKI : 公钥基础设施,公钥基础构架证书: 里面存放了用户的各种信息,最核心的部分就是公钥 谁来给CA颁发公钥,解决方法是,CA自己给自己颁发公钥 openssl 是一个强大的工具可以帮助我们来创建颁发证书,下面我们就来看下在linux下 opensssl 搭建一个CA,并实现管理 1、首先我们需要给CA生成一个私钥  cd…

    2017-07-16
  • N25 – Week 4 blog

    第四周博客作业了,感觉前面的有好多都忘掉了,但是没有时间补以前的啊……好郁闷,幸好今天周五,明天又是圣诞节,从马云爸爸买了一颗圣诞树,今晚回家装上 1. 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限 [root@dhcp-10-129-6-166&nb…

    Linux干货 2016-12-20