第二周 Linux基础命令入门(二)

来源:互联网 发布:linux cern 知乎 编辑:程序博客网 时间:2024/05/21 01:28

第二周 Linux基础命令入门(二)

摘要

1、描述Linux上的文件管理类命令并详解。2、描述Bash的工作特性。3、描述文件的元数据信息详解。4、描述命令别名的使用。5、详解文件通配符。

一、Linux上的文件管理类命令

[root@localhost etc]# ls -l-rw-r--r--.  1 root root        0 1019 02:00 3axaxx-rw-r--r--.  1 root root        0 1019 02:01 abcdefgdrwxr-xr-x.  3 root root       97 1015 17:51 abrtlrwxrwxrwx.  1 root root       56 1015 17:51 favicon.png -> /usr/share/icons/hicolor/16x16/apps/fedora-logo-icon.png
    Linux系统上的文件类型:     - : 常规文件,即f      d :directory   即目录文件        b :block device   映射块设备文件  ,支持以"block"为单位,支持随机访问     c: character device   字符设备文件,支持以“character”为单位,支持线性访问(有次序得访问)           ls - l /dev      crw-rw----. 1 root video    10, 175 11月 10 15:48 agpgart                major number   主设备号,用表示设备类型,进而确定要加载的驱动程序                minor number 次设备号,用于表示同一类型中的不同设备             二者用,来区分      l: symbolic link  符号链接文件(类似windows的快捷方式,指向另一文件的路径。或称为软连接文件)      p:pipe  命名管道      s:socket 套接字文件,实现多个进程之间进行通信,多用于提供服务

二、Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容

Bash的工作特性之命令执行状态返回值:

命令的执行状态结果     1) bash通过状态返回值来输出此结果         成功:0            失败:1-255       命令执行完成之后,其状态返回值保存于bash特殊变量 $? 中 。$?只能获取当前命令的结果        [root@localhost etc]# echo $?            0      2)引用命令的执行结果:           $(COMMAND) 或者 `COMMAND`             [root@localhost etc]# mkdir $(date +%T)              [root@localhost etc]# ls                 12:53:45                 hosts.allow               rc0.d

命令行展开所涉及的内容:

1)cp:copy  文件复制功能源文件:目标文件            单源复制     cp [OPTION]... [-T] SOURCE DEST        如果dest路径不存在,则复制原内容,粘贴创建该目录dest内        如果dest存在,1)dest是非目录文件,则会复制目标文件   2)dest是目录文件,则先在dest目录下创建一个与源文件同名的文件,并复制过来    多源复制     cp [OPTION]... SOURCE... DIRECTORY                    cp [OPTION]... -t DIRECTORY SOURCE...                    如果dest不存在,返回错误                    如果dest存在,分别复制每个文件到目标目录中,并保持原名     常用选项:                 -i  交互式复制  覆盖之前提醒客户确认                 -f  强制性覆盖目标文件                            -r  递归复制目录                   -d  复制符号链接文件本身,而非其指向的源文件本身                 --preserv=                              mode   权限                              ownership  属主和属组                              timestamps  时间戳                                  context  安全标签                              links  符号链接                              xattr:扩展属性                              all  上述所有属性                  -a   -dr --preserve=all    archive   用于实现归档,备份使用2)mv: move 移动     常用选项                -i 交互式                -f force           3)rm:remove  删除文件(建议move到一个单独的文件夹,作用类似回收站)                -i                -r   删除命令,每个文件都会确认一遍                -rf   强制删除                                   危险操作,勿操作!!! rm-rf /或者rm  -rf /*4)目录管理类的命令:     mkdir , rmdir      mkdir          make  DIRECTORY 创建目录            mkdir [OPTION]... DIRECTORY...              注意:路径基名方为命令的作用对象,基名之前的路径必须存在。                         -p   自动按需创建父目录            -v   verbose   显示详细过程            -m  MODE    直接给定权限             rmdir   rmdir [OPTION]... DIRECTORY...                 删除文件下的空目录,如果删除为非空目录,则失败,需要先删除里面内容再删除外部             -p   删除某目录后,如果其父目录为空,则一并删除之             -v   显示过程                             pwd:printing woking  directory     显示工作目录5)cd: change directory      切换目录         cd   [/PATH/TO/SOMENDIR]            只输入 cd    切换回家目录             bash中,~也表示家目录                 cd ~   切换回自己的家目录                 输入cd ~USERNAME ;切换至指定用户的家目录,只有管理员可以切换至其他用户家目录                 cd -  在上一次所在目录与当前目录来回切换                    $PWD:当前工作目录                    $OLDPWD:上一次的工作目录6)ls:list   列出指定目录下的内容                                         ls [OPTION]... [FILE]...               -a  显示所有文件,包括隐藏文件               -A:显示除了。和。。之外的所有文件,包括隐藏文件                         ls -A /etc               -l     --long   长格式列表,显示文件的详细属性信息:                         /]# ls -l /etc                          -rw-r--r--.  1 root root    16 10月 10 14:35 adjtime                     -r :文件类型,- ,d,b,c,l,s,p                           -rw-r--r--.                               rw-    文件属主权限                              r--    文件属组权限                             r--      其他用户(非属主、属组)的权限                             1:数字表示文件被硬链接的次数,                             root   第一个root   文件的属主                             root   第二个root    文件的属组                             16: 数字表示文件大小,单位是字节                                16 10月 10 14:35    文件最近一次修改时间                             adjtime    文件名                            -h   对文件大小单位换算,换算后的结果非精确值                     -ld  查看文件本身的信息,而非其自身内部的文件内容                             /]# ls -ld /etc                              drwxr-xr-x. 74 root root 8192 10月 12 02:24 /etc                     -r或者-lr    对文件排序呈降序排序                     -R    recursive   递归显示7) cat:  concatenate file  连接文件   文件正序显示               文本文件查看工具               cat  /etc/fstab               cat后可以跟多个路径文件                     -n :显示的文件内容进行统一编号                          cat -n [COMMAND] [COMMAND]                     -E:显示行结束符$8) tac    文本 逆序显示                                        文本文件查看工具                tac  /etc/fstab                   tac后可以跟多个路径文件                -n :显示的文件内容进行统一编号                   tac -n [COMMAND] [COMMAND]                 -E:显示行结束符$9)file:查看文件内容类型                 file  [FILE].................10)echo :回显命令                 echo [SHORT-OPTION]... [STRING]...           STRING 可以使用引号,单引号和双引号均可用           单引号:强引用,变量引用不执行替换                 [root@localhost /]# echo '$SHELL'                    $SHELL           双引号:  弱引用,变量引用会被替换                 [root@localhost /]# echo "$SHELL"                     /bin/bash                  [root@localhost /]# echo "DAA"                      DAA            -n   输出后不自动换行操作                 [root@localhost /]# echo  -n "DAA"                      DAA[root@localhost /]#             -e   让转义符生效      \n显示换行   \t:制表符,类似增加新字段                  [root@localhost /]# echo  -e "D \nAA"                       D                        AA

三、完成以下练习(1)

命令行展开

    ~ :自动展开为用户的家目录,或指定的用户的家目录    { }:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
(1)创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d}mkdir: 已创建目录 "/tmp/a_c"mkdir: 已创建目录 "/tmp/a_d"mkdir: 已创建目录 "/tmp/b_c"mkdir: 已创建目录 "/tmp/b_d"[root@localhost tmp]# lsa_c  a_d  b_c  b_d  

创建/tmp/mylinux目录下的 :

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 tmp]# mkdir -pv /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/{lo_{ck,g},run}}mkdir: 已创建目录 "/tmp/mylinux"mkdir: 已创建目录 "/tmp/mylinux/bin"mkdir: 已创建目录 "/tmp/mylinux/boot"mkdir: 已创建目录 "/tmp/mylinux/boot/grub"mkdir: 已创建目录 "/tmp/mylinux/dev"mkdir: 已创建目录 "/tmp/mylinux/etc"mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig"mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/{network-scripts}"mkdir: 已创建目录 "/tmp/mylinux/lib"mkdir: 已创建目录 "/tmp/mylinux/lib/{modules}"mkdir: 已创建目录 "/tmp/mylinux/lib64"mkdir: 已创建目录 "/tmp/mylinux/proc"mkdir: 已创建目录 "/tmp/mylinux/sbin"mkdir: 已创建目录 "/tmp/mylinux/sys"mkdir: 已创建目录 "/tmp/mylinux/tmp"mkdir: 已创建目录 "/tmp/mylinux/usr"mkdir: 已创建目录 "/tmp/mylinux/usr/{local"mkdir: 已创建目录 "/tmp/mylinux/usr/{local/bin}"mkdir: 已创建目录 "/tmp/mylinux/usr/{local/sbin}"mkdir: 已创建目录 "/tmp/mylinux/var"mkdir: 已创建目录 "/tmp/mylinux/var/lo_ck"mkdir: 已创建目录 "/tmp/mylinux/var/lo_g"mkdir: 已创建目录 "/tmp/mylinux/var/run"[root@localhost tmp]# cd mylinux/[root@localhost mylinux]# lsbin  boot  dev  etc  lib  lib64  proc  sbin  sys  tmp  usr  var

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

1、文件的元数据

文件的元数据包括:名称,路径,大小,inode号,文件类型,硬链接数,权限,时间戳等                stat [option] file…file 文件名称size 文件大小 单位Kblocks 所占块的个数IO blocks 单块的大小device 设备标识inode 节点id,文件的元数据保存在磁盘上的inode区域中,每一个文件都有一个对应的inode号码links 硬链接数,一个文件的硬链接数为N,表示该文件在磁盘上有N个与其对应的inode号码相同的文件access 权限,文件的权限包括r(读),w(写),x(执行),suid,sgid,sbit这几种权限,它们可以分别对应到文件的属主、属组和其他人上uid 属主信息gid 属组信息access 最后一次访问时间,文件被访问,即文件在使用cat, more, less, head等命令查看,或者cp等命令将其作为源文件复制给其他路径下,或者使用grep命令进行匹配查找等操作时,atime都会改变modify 最后一次修改时间,指文件内容被修改时,mtime会改变change 最后一次更正时间,指文件的元数据被改变,例如chmod, chown, mv等命令改变了文件权限名称路径等信息,ln命令增加了文件的硬链接等操作都会改变ctime
[root@localhost mylinux]# stat -L /tmp/mylinux/  文件:"/tmp/mylinux/"  大小:4096       块:8          IO 块:4096   目录设备:fd00h/64768d Inode:202724745   硬链接:14权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)环境:unconfined_u:object_r:user_tmp_t:s0最近访问:2017-11-29 14:28:11.973040042 +0800最近更改:2017-11-29 14:28:02.480300238 +0800最近改动:2017-11-29 14:28:02.480300238 +0800创建时间:-

使用touch修改时间戳

用法:touch [选项]... 文件...参数: -a  只更改访问时间-c, --no-create 不创建任何文件-d, --date=字符串  使用指定字符串表示时间而非当前时间-f          (忽略)-h, --no-dereference        会影响符号链接本身,而非符号链接所指示的目的地            (当系统支持更改符号链接的所有者时,此选项才有用)-m      只更改修改时间-r, --reference=FILE   use this file's times instead of current time-t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time--time=WORD        change the specified time:                       WORD is access, atime, or use: equivalent to -a                       WORD is modify or mtime: equivalent to -m--help      显示此帮助信息并退出--version       显示版本信息并退出        请注意,-d 和-t 选项可接受不同的时间/日期格式。
[root@localhost mylinux]#  touch -m -t 021211221133.00  /tmp/mylinux/[root@localhost mylinux]# stat -L /tmp/mylinux/  文件:"/tmp/mylinux/"  大小:4096       块:8          IO 块:4096   目录设备:fd00h/64768d Inode:202724745   硬链接:14权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)环境:unconfined_u:object_r:user_tmp_t:s0最近访问:2017-11-29 16:13:38.263642314 +0800最近更改:0212-11-22 11:33:00.000000000 +0805最近改动:2017-11-29 16:14:10.970745835 +0800创建时间:-

五、命令的别名

 命令别名:     获取所有可用别名的定义:           ~]#alias     定义别名             ~]#alias  NAME=‘COMMAND’        注意:只对当前shell进程设置有效            /]# alias cls=clear     撤销别名           /]# cls           ~]#unalias   NAME  which          显示文件完成路径 which - shows the full path of (shell) commands.       which [options] [--] programname [...]           ~]# which which                alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'                /usr/bin/alias                /usr/bin/which         --COMMAND-alias   忽略别名   whereis            显示文件的路径,手册页,          -b  只看二进制文件路径          -m 只看使用手册文件路径                          who            查看登录当前用户的相关信息           -b  显示系统此次启动时间           -d  显示此次死亡进程            -l  显示登录进程            -u 比who多显示端口号            -r  运行级别    w           查看当前用户和其现阶段工作内容

六、详解文件通配符并完成以下练习

详解文件通配符

globbing :文件名通配       匹配模式:元字符                 *:匹配任意长度的任意字符            ? :匹配任意单个字符                   pa?   ??pa   p?a   p?a?            [ ]: 匹配指定范围内的任意单个字符            有几种特殊格式:                    [a-z]  [A-Z] [0-9] [a-z0-9] [abcxyz]                        pa[0-9][a-z]    pa2[0-9][0-9]                    [[:upper:]]  只匹配大写字母                    [[:lower:]]   只匹配小写字母                    [[:alpha:]]   只匹配所有字母                    [[:digit:]]     只匹配所有数字                    [[:alnum:]]  只匹配所有字母和数字                    [[:space:]]   所有空白字符  touch p \空格  a                    [[:punct:]]    匹配所有符号                    [^] :匹配指定范围外的单个字符(非!!)                          [^[:upper:]]                            [^0-9]

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

[root@localhost var]# ls -d l*[[:alnum:]] lib  local  local01  local02  lock  log

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

[root@localhost var]# ls -d [0-9]*[^0-9]0_abcc  0_bafaf  2_abcc  2_bafaf

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

[root@localhost etc]# ls -d /etc/[^[:alpha:]][a-zA-Z]*/etc/3axaxx  /etc/,avc23

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

[root@localhost etc]# touch /tmp/tfile-$(date +"%Y-%m-%d-%H-%M-%S")[root@localhost etc]# ls /tmpa_c  a_d  b_c  b_d  magedu1.com  mylinux  tfile-2017-11-29-18-08-27

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

[root@localhost mytest2]# cp -a /etc/p*[^[:digit:]] /tmp/mytest2/[root@localhost mytest2]# lspam.d   passwd-  pki       pm      postfix  prelink.conf.d  profile    protocolspasswd  pinforc  plymouth  popt.d  ppp      printcap        profile.d

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

[root@localhost mytest2]# mkdir -pv /tmp/mytest1mkdir: 已创建目录 "/tmp/mytest1"[root@localhost ~]# cp -a /etc/*.d /tmp/mytest1[root@localhost ~]# ls /tmp/mytest1bash_completion.d  gdbinit.d     modules-load.d  rc1.d  rsyslog.d    usb_modeswitch.dbinfmt.d           grub.d        my.cnf.d        rc2.d  rwtab.d      xinetd.d

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

[root@localhost ~]# mkdir -pv /tmp/mytest3mkdir: 已创建目录 "/tmp/mytest3"[root@localhost ~]# cp /etc/[lmn]*.conf /tmp/mytest3[root@localhost ~]# ls  /tmp/mytest3ld.so.conf     libuser.conf  logrotate.conf  mke2fs.conf  nsswitch.conflibaudit.conf  locale.conf   man_db.conf     named.conf
原创粉丝点击