初识文件系统

初识文件系统

1、Linux上的文件管理类命令,其常用的使用方法及其相关示例演示。

ls:显示目录内容

ls [OPTION]... [FILE]...

    -a: 显示所有文件,包括隐藏文件;
    -A:显示除.和..之外的所有文件;
    -l: --long, 长格式列表,即显示文件的详细属性信息;
    -h, --human-readable:对文件大小单位换算;换算后结果可能会非精确值;
    -d:查看目录自身而非其内部的文件列表;
    -r: reverse, 逆序显示;
    -R: recursive,递归显示;
示例:
# ls -l
total 32
lrwxrwxrwx.   1 root root    7 May  7 05:46 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 May  7 05:54 boot
drwxr-xr-x.  20 root root 3120 May 23 05:06 dev
drwxr-xr-x.  75 root root 8192 May 23 14:46 etc
。。。略 。。。

cd:将当前工作目录切换至指定目录

cd [/PATH/TO/SOMEDIR]   
    cd: 切换回家目录;
    cd ~:切换回自己的家目录
    cd ~USERNAME:切换至指定用户的家目录;
    cd -:在上一次所在目录与当前目录之间来回切换;
        相关的环境变量
        $PWD:当前工作目录
        $OLDPWD:上一次的工作目录
示例:
[root@localhost /]# cd /etc/sysconfig/
[root@localhost sysconfig]# 

cp:复制文件或目录

源文件;目标文件;

   单源复制:cp [OPTION]... [-T] SOURCE DEST
   多源复制:cp [OPTION]... SOURCE... DIRECTORY
            cp [OPTION]... -t DIRECTORY SOURCE...

   单源复制: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:递归复制目录;
            -d:复制符号链接文件本身,而非其指向的源文件;
            -a:-dR --preserve=all, archive,用于实现归档;
            --preserv=
                mode:权限
                ownership:属主和属组
                timestamps: 时间戳
                context:安全标签
                xattr:扩展属性
                links:符号链接
                all:上述所有属性
示例:
[root@localhost sysconfig]# cp -r /tmp/mytest1 /tmp/null
[root@localhost sysconfig]# ls -R /tmp/null
/tmp/null:
mytest1  pki

/tmp/null/mytest1:
pki

/tmp/null/mytest1/pki:
ca-trust
。。。略 。。。

mv:移动文件或目录

mv [OPTION]... [-T] SOURCE DEST
       mv [OPTION]... SOURCE... DIRECTORY
       mv [OPTION]... -t DIRECTORY SOURCE..         

       常用选项:
            -i:交互式;
            -f:force
示例:
[root@localhost sysconfig]# mv -f /tmp/mytest2 /tmp/null
[root@localhost sysconfig]# ls -R /tmp/null/mytest2
/tmp/null/mytest2:
ld.so.conf.d
/tmp/null/mytest2/ld.so.conf.d:
kernel-3.10.0-229.el7.x86_64.conf

pwd:显示工作目录

$PWD:当前工作目录
$OLDPWD:上一次的工作目录
示例:
[root@localhost sysconfig]# pwd
/etc/sysconfig

rm:删除文件或目录

rm [OPTION]... FILE...

        常用选项:
            -i:interactive
            -f:force
            -r: recursive

            删除目录:rm -rf /PATH/TO/DIR
                危险操作:rm -rf /*

        注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)
示例:

rmidr:删除空目录

rmdir [OPTION]... DIRECTORY...

    -p:删除某目录后,如果其父目录为空,则一并删除之;
    -v: 显示过程;

chgrp:改变文件属主和属组

chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:仅管理员可修改文件的属主和属组;

chmod:改变文件访问权限

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
三类用户:
    u:属主
    g:属组
    o:其它
    a: 所有
 (1) chmod [OPTION]... MODE[,MODE]... FILE...
        MODE表示法:
        赋权表示法:直接操作一类用户的所有权限位rwx;
        u=
        g=
        o=
        a=
授权表示法:直接操作一类用户的一个权限位r,w,x;
        u+, u-
        g+, g-
        o+, o-
        a+, a-
 (2) chmod [OPTION]... OCTAL-MODE FILE...
 (3) chmod [OPTION]... --reference=RFILE FILE...
        选项:
        -R, --recursive:递归修改

注意:用户仅能修改属主为自己的那些文件的权限;

chown:改变文件的所有者和所属工作组

扫描二维码关注公众号,回复: 1037795 查看本文章
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
选项:
     -R:递归修改

mkdir

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

whereis

whereis - locate the binary, source, and manual page files for a command
whereis [options] name...
     -b: 仅搜索二进制程序路径;
     -m:仅搜索使用手册文件路径;

which

which - shows the full path of (shell) commands
which [options] programname [...]
    --skip-alias:忽略别名

file

touch

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

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

bash的基础特性:命令的执行状态结果

    命令执行的状态结果:
        bash通过状态返回值来输出此结果:
            成功:0
            失败:1-255

        命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;

    命令正常执行时,有的还会有命令返回值:
        根据命令及其功能不同,结果各不相同;

    引用命令的执行结果:
        $(COMMAND)
        或`COMMAND`
bash的基础特性之:命令行展开
    ~:自动展开为用户的家目录,或指定的用户的家目录;           
    {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
        例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b

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

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

~]# mkdir /tmp/{a_{c,d},b_{c,d}}

(2)、创建/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

命令如下:
    ~]# mkdir -pv /tmp/mylinux/{bin,dev,lib64,proc,sbin,sys,tmp,boot/groub,etc/{rc.d/initd,sysconfig/network-scripts},lib/modules,usr/local/{bin.sbin},var/{lock,log,run}}

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

文件:两类数据
     元数据:metadata(文件基本信息,大小、创建时间、最后一次修改时间等等)
     数据: data(文件中存储的内容)
时间戳:
    access time:2015-12-10 16:12:22.776423693 +0800
    modify time:2015-12-10 16:12:22.776423693 +0800
    change time:2015-12-10 16:12:22.776423693 +0800
touch命令:
    touch - change file timestamps

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

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

type COMMAND:
    内部:builtin
    外部:显示为命令文件路径;
注意:命令可以有别名;别名可以与原名相同,此时原名被隐藏;此时如果要运行原命令,则使用\COMMAND;

命令别名:
    获取所有可用别名的定义:
    ~]# alias
定义别名:
    ~]# alias NAME='COMMAND'
注意:仅对当前shell进程有效
撤销别名:
    ~]# unalias NAME

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

~]#ls -d /var/l?[[:lower:]]

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

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

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

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

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

~]# touch tfile-$(date +%Y-%m-%d-%H-%M-%S)

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

~]# mkdir /tmp/mytest1
~]# cp -a /etc/p*[^0-9] /tmp/mytest1

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

~]# mkdir /tmp/mytest2
~]# cp -a /etc/*.d /tmp/mytest2

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

~]# mkdir /tmp/mytest2
~]# cp -a /etc/[lmn]*.conf /tmp/mytest3

猜你喜欢

转载自blog.51cto.com/8478779/2120492