Linux文件管理初步(第二周)

第二周作业

1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示

目录管理管理类命令

mkdir

make directories

mkdir [OPTION]... DIRECTORY...
注意:路径基名作为命令的作用对象时,基名之前的路径必须要存在;
    -p:自动按需创建父目录;
    -v:--verbose,显示详细过程;
    -m MODE:直接给定权限;

[root@localhost ~]# mkdir -pv /tmp/mylinux/etc/sysconfig/network-scripts
mkdir: created directory ‘/tmp/mylinux’
mkdir: created directory ‘/tmp/mylinux/etc’
mkdir: created directory ‘/tmp/mylinux/etc/sysconfig’
mkdir: created directory ‘/tmp/mylinux/etc/sysconfig/network-scripts’

rmdir

remove empty directories

rmdir [OPTION]... DIRECTORY...
    -p:删除目录后,如果其父目录为空,则一并删除;
    -v:显示详细过程;

[root@localhost ~]# rmdir -pv /tmp/mylinux/etc/sysconfig/network-scripts/
rmdir: removing directory, ‘/tmp/mylinux/etc/sysconfig/network-scripts/’
rmdir: removing directory, ‘/tmp/mylinux/etc/sysconfig’
rmdir: removing directory, ‘/tmp/mylinux/etc’
rmdir: removing directory, ‘/tmp/mylinux’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Directory not empty

文件管理类命令

cp

copy files and directories

单源复制:
    cp [OPTION]... [-T] SOURCE DEST
    如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中;
    如果DEST存在:
    如果DEST是非目录文件,则覆盖目标文件;
    如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
多源复制:
    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...
    如果DEST不存在,则发生错误;
    如果DEST存在:
    如果DEST是非目录文件,则发生错误;
    如果DEST是目录文件,则分别复制每个文件至目标目录中,并保持原名;

    -i:交互式复制,即在覆盖之前提醒用户确认;    
    -f:强制覆盖目标文件;
    -r/R:递归复制(recursive);    
    -d:复制符号链接本身,而非其指向的源文件;
    --preserve[=ATTR_LIST]
          mode:权限;
          ownership:属主和属组;
          timestamps:时间戳;
          context:安全标签;
          links:符号链接;
          xattr:扩展属性;
          all:上述所有属性;    
    -a:-dR --preserve=all,用于实现归档(archieve);

[root@localhost ~]# cp /etc/hosts /tmp/host
[root@localhost ~]# cp -r /var/log/ /tmp/

mv

move (rename) files

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
    -i:交互式(interactive);    
    -f:强制移动(force);

[root@localhost ~]# mv /tmp/host /tmp/hosts

rm

remove files or directories

rm [OPTION]... FILE...
    -i:交互式;    
    -f:强制删除;
    -r:递归删除(删除目录:rm -rf /PATH/TO/DIR);    
注意:危险操作:rm -rf /*;
所有不用的文件建议不要直接删除,而是先移动至某个专用目录(模拟回收站);

[root@localhost ~]# rm -rf /tmp/log/

文件查看类命令

ls

list directory contents

ls [OPTION]... [FILE]...    
    -a:显示所有文件,包括隐藏文件;
    -A:显示除.和..之外的所有文件;    
    -l:--long,长格式列表,显示文件的详细属性;
    -h:--human-readable,显示文件大小换算后的值;    
    -d:查看目录本身而非其内部的文件列表;
    -r:逆序显示(reverse);
    -R:递归显示(recursive);

[root@localhost ~]# ls -l /etc/issue
-rw-r--r--. 1 root root 23 Dec  9  2015 /etc/issue

注意:文件属性信息详解:
-:文件类型
    -:常规文件,即f;
    d:directory,目录文件;
    b:block device,块设备文件,支持以“block”为单位进行随机访问;
    c:character device,字符设备文件,支持以“character”为单位进行线性访问;
        major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序;
        minor number:次设备号,用于标识同一类型中的不同设备;
    l:symbolic link,符号链接文件;
    p:pipe,命名管道;
    s:socket,套接字文件;
rw-r--r--:文件权限
    rw-:文件属主的权限;
    r--:文件属组的权限;
    r--:其他用户(非属主、属组)的权限;1:使用数字表示文件被硬链接的次数;
root:文件的属主;
root:文件的属组;    
23:数字表示文件的大小,单位是字节;
Dec  9  2015:文件最近一次被修改的时间;
/etc/issue:文件名;

file

determine file type

file FILE

[root@localhost ~]# file /etc/issue
/etc/issue: ASCII text
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
[root@localhost ~]# file /var/log/wtmp 
/var/log/wtmp: data

注意:file命令将文件分为以下三类:
文本文件(ASCII):包含可打印字符的文件;
可执行文件(binary):可以在系统运行的文件;
数据文件(data):包含不可打印的二进制字符的文件,但也不可以在系统运行;

cat

concatenate files and print on the standard output
连接并显示文件

cat [OPTION]... [FILE]...
    -n:显示行号;
    -E:显示行结束符;

[root@localhost ~]# cat -n /etc/passwd
     1    root:x:0:0:root:/root:/bin/bash     
     2    bin:x:1:1:bin:/bin:/sbin/nologin     
     3    daemon:x:2:2:daemon:/sbin:/sbin/nologin     
     4    adm:x:3:4:adm:/var/adm:/sbin/nologin     
     5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin     
     6    sync:x:5:0:sync:/sbin:/bin/sync     
     7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown     
     8    halt:x:7:0:halt:/sbin:/sbin/halt
        ...(此处省略)
[root@localhost ~]# cat /etc/issue /etc/fstab

\S
Kernel \r on an \m
#
# /etc/fstab
# Created by anaconda on Sun Aug 21 23:55:20 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=3a80cc61-a45f-433f-992e-21e32ae89bcb /                     xfs     defaults        0 0
UUID=4e2eb638-558e-4c6c-ae13-b0820a99acfe /boot                   xfs     defaults        0 0
UUID=f6900d6b-f21f-4a13-953d-4d969aa0b845 /home                   xfs     defaults        0 0
UUID=57d73846-3f09-4d1f-bfa4-57bace5fedc0 swap                    swap     defaults        0 0

tac

concatenate and print files in reverse
是tac的反向显示;

tac [OPTION]... [FILE]...

[root@localhost ~]# tac /etc/issue
Kernel \r on an \m
\S

output the first part of files
查看文件的前n行,默认为前10行;

head [OPTION]... [FILE]...
    -#:查看前#行;
    
[root@localhost ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

tail

output the last part of files

tail [OPTION]... [FILE]...
    -#:查看后#行;
    -f:查看文件尾部内容后不退出,跟踪显示新增的行(Ctrl+c退出);

[root@localhost ~]# tail -f /var/log/messages
...(此处省略)
Aug 30 06:01:02 localhost systemd: Starting Session 3 of user root.
Aug 30 07:01:01 localhost systemd: Started Session 4 of user root.
Aug 30 07:01:01 localhost systemd: Starting Session 4 of user root.
(光标停在此处)

more

file perusal filter for crt viewing
文件分屏查看,翻屏至文件尾部后自动退出;

more file

less

opposite of more

more file

[root@localhost ~]# less /etc/rc.d/init.d/functions 

注意:其具体的上下翻页、查询、退出等操作同使用man命令查看手册的操作;

2.bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其演示

命令执行状态返回值

bash通过状态返回值来输出此结果:

  • 成功0

  • 失败1-255

注意:命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
命令正常执行时,有的还会有命令返回值,根据命令及其功能的不同,其结果各不相同;

命令行展开

  • ~:自动展开为用户家目录,或指定的用户家目录;

  • { }:可承载一个以逗号分割的路径列表,并能够将其展开为多个路径;

3.请使用命令行展开功能来完成以下练习

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

[root@localhost ~]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: created directory ‘/tmp/a_c’
mkdir: created directory ‘/tmp/a_d’
mkdir: created directory ‘/tmp/b_c’
mkdir: created directory ‘/tmp/b_d’

2).创建/tmp/mylinux目录如下

Linux文件管理初步(第二周)

[root@localhost ~]# 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}}
[root@localhost ~]# tree /tmp/mylinux/
/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
    
24 directories, 0 files

4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间信息

Linux系统的文件由3个部分组成:

  • 数据(data):指普通文件中的实际数据;

  • 元数据(metadata):指用来描述一个文件特征的系统数据,保存在inode中;

  • 目录项(directory entry):保存文件名;

文件的元数据信息及其含义如下:

Size:文件大小;
Blocks/IO Block:单位块大小/块的数量,二者乘积即为文件大小;
Device:设备号;
Access:文件类型与访问权限;
Uid:文件所有者及其ID;
Gid:文件所属组及其ID;
Links:文件硬链接次数,即文件名指向inode节点的数量;
atime:access time,文件被访问的时间;
mtime:modify time,文件被修改的时间;
ctime:change time,文件被改变的时间,即inode节点信息被改变的时间;
Birth:文件被创建的时间;

查看文件元数据信息一般使用stat命令,而修改文件的时间信息一般用touch命令;

stat

display file or file system status

stat FILE

[root@localhost ~]# stat /etc/issue
File: ‘/etc/issue’
Size: 23            Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d    Inode: 33595545    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2016-08-28 04:20:26.763999574 +0800
Modify: 2015-12-09 17:59:15.000000000 +0800
Change: 2016-08-21 23:55:30.405994623 +0800
Birth: -

touch

change file timestamps

touch [OPTION]... FILE...
   -c:指定的文件路径不存在时不予创建;   
   -a:仅修改access time;
   -m:仅修改modify time;
   -t STAMP:使用[[CC]YY]MMDDhhmm[.ss]格式;

[root@localhost ~]# touch /tmp/hello.txt

5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果

命令别名的定义与取消分别使用alias和unalias命令;

alias

Define or display aliases

[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]# alias cls='clear'

注意:使用alias命令定义的别名仅对当前shell进程有效;

unalias

Remove each NAME from the list of defined aliases

[root@localhost ~]# unalias cls

引用命令的执行结果有以下两种形式:

  • $(COMMAND)

  • `COMMAND`

[root@localhost ~]# echo $(pwd)/root
[root@localhost ~]# echo `pwd`/root

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

[root@localhost ~]# ls -d /var/l*[0-9]*[[:lower:]]

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

[root@localhost ~]# ls -d /etc/[0-9]*[^0-9]

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

[root@localhost ~]# ls -d /etc/[^a-z][a-z]*

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

[root@localhost ~]# touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`

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

[root@localhost ~]# mkdir /tmp/mytest1
[root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1/

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

[root@localhost ~]# mkdir /tmp/mytest2
[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2

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

[root@localhost ~]# mkdir /tmp/mytest3
[root@localhost ~]# cp -r /etc/[l,m,n]*.conf /tmp/mytest3

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

(0)
baronbaron
上一篇 2016-09-05
下一篇 2016-09-05

相关推荐

  • LVS集群类型

     lvs:Linux Virtual Server         l4:四层路由、四层交换          根据请求报文的目标IP和目标PORT将其调度转发至后端的某主机;      IPTABLES:  …

    Linux干货 2017-01-10
  • Linux运维实战之5:磁盘分区、格式化

    在网络系统中,磁盘和文件系统管理是两个非常基本、同时也是非常重要的管理任务,特别是文件系统管理,因为它与用户权限和整个网络系统的安全息息相关。本次博文的主题是关于Linux系统中磁盘分区、格式化及挂载,下次博文我们再详细讨论文件系统管理。 在操作系统中,磁盘管理属于设备管理的范畴。一块硬盘安装到主机之后称为裸设备,若要能够在Linux系统中使用必须对其进行如…

    Linux干货 2016-11-26
  • shell脚本编写-2

    1、条件判断if语句       1)、 单分支 if  判断条件;then     条件为真的分支代码     fi 2)、双分支     if  判断条件; then    &…

    Linux干货 2016-08-15
  • Linux Basics–part4

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 ~]# cp -rf /etc/skel/ /home/tuser1 && chmod -R go=— /home/tuser1 [root@ronny1 ~]# ll -d /home/tuser…

    Linux干货 2017-08-07
  • 第五周作业

    1、显示当前系统上root,fedora或user1用户的默认shell。 [root@hostname ~]# grep -E ‘^(root|fedora|user1)’ /etc/passwd | cut -d: -f1,7 root:/bin/bash 2、找出/etc/rc.d/init.d/functions文件中某词后面跟一组小括号的行,形如:…

    Linux干货 2017-08-04
  • LVS

    LVS概念 LVS(Linux Virtual Server):Linux 虚拟服务器  LVS是个负载均衡设备,它不提供任何服务,用户请求到这里的时候,它是将客户需求转发至后端真正提供服务的服务,所以说后端的服务称作real server。LVS分为两段,前一段称为ipvsadm(管理集群服务的命令行工具),后面一段叫做ipvs(内核模块) LVS的类型 …

    Linux干货 2017-02-17