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

相关推荐

  • 从“黑掉Github”学Web安全开发

    Egor Homakov(Twitter: @homakov 个人网站: EgorHomakov.com)是一个Web安全的布道士,他这两天把github给黑了,并给github报了5个安全方面的bug,他在他的这篇blog——《How I hacked Github again》(墙)说明了这5个安全bug以及他把github…

    Linux干货 2016-08-15
  • CetnOS6启动流程以及LVM下的fstab及boot恢复实验

    centos6启动流程 主动读取BIOS,通过CMOS加载硬件信息 ,并进行POST,指定第一个可启动的设备 ROM:BIOS,Basic Input and Output System,保存着计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序RAM:保存各项参数的设定 读取第一个可启动设备MBR的引导加载程序(grub)的启动信息 MBR:…

    Linux干货 2017-05-13
  • alias——Linux基本命令(4)

    1.     alias别名 (1)查看、设置别名 Linux系统提供了一个有用的工具叫alias,可以让我们将一些需要频繁使用的但又过于冗长的命令设置一个别名,这样一来,以后只需输入一个简短的别名就可以达到同样的作用。 alias显看当前已定义的别名   使用aliasaliname=’comm…

    2017-07-13
  • 运维工程师技能需求排行

    这是我今天在拉勾网搜索运维,翻完了4四页也招聘信息之后得到的,我的目的是想要看看之后的学习,哪个更应该成为重点,有些在我意料之中,有些还真的没想到,算是努力了一个小时的收获吧,分享给大家。
    注意:其中的看法仅代表个人观点,很多都是依靠我自己的学习经验和工作经验累积的

    Linux干货 2017-12-12
  • 马哥教育网络班18期+第10周课程练习

    博客作业10周.md—E:\Documents CentOS启动流程 1. 加电自检 2. 引导加载次序:BOOT Sequence 3. bootloader: 4. GRUB引导加载器 5. 进入Kernel 6. 运行init 7. 运行初始化脚本 8.启动系统服务 9. 设置登陆终端 整体总结 习题 习题1 习题2 习题3 习题4 习题5 习题6 练…

    Linux干货 2016-06-23
  • Ansible

    Ansible简介 ansible是一种基于python语言开发的轻量级自动化运维工具,它可以自动化批量完成主机服务配置管理,软件部署,执行特定命令等工作 ansible的核心组件有ansible core(核心代码),host inventory(要管理的主机),core modules(核心模块),custom modules(用户可以自定义模块),pl…

    Linux干货 2016-11-14