zoukankan      html  css  js  c++  java
  • Linux运维之基础拾遗

    第一部分 Linux常用文件管理命令

    1.1 cp

    文件复制

    常用选项

    -i	# 覆盖之前提醒用户确认
    -f 	# 强制覆盖目标文件
    -r	# 递归复制目录
    -d	# 复制符号链接本身而非其指向的源文件
    -a	# 递归复制目录,保留文件的所有属性
    

    示例

    [root@Bj-1-141 ~]# cp /etc/fstab /tmp/
    [root@Bj-1-141 ~]# ls -l /tmp/fstab 
    -rw-r--r-- 1 root root 501 Dec  9 21:19 /tmp/fstab
    [root@Bj-1-141 ~]# cp -a /etc/fstab /tmp/
    cp: overwrite ‘/tmp/fstab’? y
    [root@Bj-1-141 ~]# ls -l /tmp/fstab 
    -rw-r--r--. 1 root root 501 Dec  4 18:13 /tmp/fstab
    [root@Bj-1-141 ~]# cp -r /var/log/ /tmp/
    

    1.2 mv

    移动或重命名文件

    示例

    [root@Bj-1-141 tmp]# mv fstab fstab.bak
    [root@Bj-1-141 tmp]# ls
    fstab
    [root@Bj-1-141 tmp]# mv fstab{,.bak}
    [root@Bj-1-141 tmp]# ls
    fstab.bak
    

    1.3 rm

    删除文件或目录

    示例

    [root@Bj-1-141 tmp]# rm -fr log/
    [root@Bj-1-141 tmp]# rm -f fstab.bak 
    

    第二部分 命令行展开和执行状态返回值

    2.1 执行状态返回值

    bash命令行中命令执行成功返回值为0,错误返回值为1-255之间的随机数;

    $?:shell中获取命令的状态返回值使用$?;echo $?

    2.2 命令行展开

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

    {}:可承载一个逗号分隔的路径列表,并将其展开为多个路径

    例如:/tmp/{a,b}相当于/tmp/a , /tmp/b

    2.3 示例

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

    [root@Bj-1-141 ~]# mkdir /tmp/{a,b}_{c,d}
    [root@Bj-1-141 ~]# ll /tmp/
    total 4
    drwxr-xr-x 2 root root   6 Dec  9 22:07 a_c
    drwxr-xr-x 2 root root   6 Dec  9 22:07 a_d
    drwxr-xr-x 2 root root   6 Dec  9 22:07 b_c
    drwxr-xr-x 2 root root   6 Dec  9 22:07 b_d
    
    

    创建/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
        
    [root@Bj-1-141 ~]# 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/{lock,log,run}}
    

    第三部分 练习

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

    3.1.1 文件的元数据

    文件类型-权限-硬链接次数-属主-属组-文件大小-时间-文件名

    每个文件都有三个时间戳(centos7是4个还有一个创建时间):

    Access: 2016-12-06 22:03:52.372987896 +0800 	# 查看内容就代表最近访问
    Modify: 2015-12-09 17:59:15.000000000 +0800		# 新增或删除内容就是更改
    Change: 2016-12-04 18:13:31.613001987 +0800		# 改动是表示元数据发生改变
    

    3.1.2 如何查看文件的元数据

    [root@Bj-1-141 ~]# stat /etc/issue
      File: ‘/etc/issue’
      Size: 23        	Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d	Inode: 67109017    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-12-06 22:03:52.372987896 +0800
    Modify: 2015-12-09 17:59:15.000000000 +0800
    Change: 2016-12-04 18:13:31.613001987 +0800
     Birth: -
    

    3.1.3 如何修改时间戳

    touch命令:修改文件的时间戳,如果文件不存在则创建一个空文件。

    常用选项

    -c:# 指定的文件路径不存在时不创建对应的空文件
    -a:# 仅修改access时间
    -m:# 仅修改modify时间
    -t STAMP:# 指定一个时间,将目标文件修改为指定的时间,通常配合-a或者-m使用
    

    3.1.4 示例

    [root@Bj-1-141 ~]# stat test.txt 
      File: ‘test.txt’
      Size: 13        	Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d	Inode: 136103861   Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-12-06 22:11:57.754537389 +0800
    Modify: 2016-12-06 22:11:22.323537042 +0800
    Change: 2016-12-06 22:11:22.323537042 +0800
     Birth: -
    [root@Bj-1-141 ~]# touch -a -t 201612092030 test.txt
    [root@Bj-1-141 ~]# stat test.txt 
      File: ‘test.txt’
      Size: 13        	Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d	Inode: 136103861   Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-12-09 20:30:00.000000000 +0800
    Modify: 2016-12-06 22:11:22.323537042 +0800
    Change: 2016-12-09 20:26:56.383277275 +0800
     Birth: -
    

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

    3.2.1 如何定义命令别名

    alias NAME="command"	# 定义命令别名
    [root@Bj-1-141 ~]# alias cls="clear"
    

    3.2.2 如何引用命令执行结果

    $(COMMAND)或者使用``反引号

    [root@Bj-1-141 ~]# current_time=$(date +%Y-%m-%d-%H-%M-%S)
    [root@Bj-1-141 ~]# echo $current_time
    2016-12-09-20-33-25
    [root@Bj-1-141 ~]# current_time=`date +%Y-%m-%d-%H-%M-%S`
    [root@Bj-1-141 ~]# echo $current_time
    2016-12-09-20-34-0
    

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

    [root@Bj-1-141 ~]# touch /var/ltest3data
    [root@Bj-1-141 ~]# mkdir /var/ltest4data
    [root@Bj-1-141 ~]# ls -dl /var/l*[0-9]*[[:lower:]]
    -rw-r--r-- 1 root root 0 Dec  9 09:11 /var/ltest3data
    drwxr-xr-x 2 root root 6 Dec  9 09:11 /var/ltest4data
    
    

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

    [root@Bj-1-141 ~]# touch /etc/6testdata
    [root@Bj-1-141 ~]# mkdir /etc/7testdata
    [root@Bj-1-141 ~]# ls -d /etc/[0-9]*[a-z]
    /etc/6testdata  /etc/7testdata
    

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

    [root@Bj-1-141 ~]# ls -d /etc/[^a-z][a-z]*
    /etc/6testdata  /etc/7testdata
    

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

    [root@Bj-1-141 ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
    [root@Bj-1-141 ~]# ll /tmp/tfile-2016-12-09-09-21-44 
    -rw-r--r-- 1 root root 0 Dec  9 09:21 /tmp/tfile-2016-12-09-09-21-44
    

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

    [root@Bj-1-141 ~]# cp -rv /etc/p*[^0-9] /tmp/mytest1/
    [root@Bj-1-141 ~]# ls /tmp/mytest1
    pam.d   passwd-  plymouth  popt.d   ppp             printcap  profile.d  python
    passwd  pki      pm        postfix  prelink.conf.d  profile   protocols
    

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

    [root@Bj-1-141 ~]# mkdir /tmp/mytest2
    [root@Bj-1-141 ~]# cp -rv /etc/*.d /tmp/mytest2/
    [root@Bj-1-141 ~]# ls /tmp/mytest2
    bash_completion.d  dracut.conf.d  modprobe.d      profile.d  rc5.d       sudoers.d
    binfmt.d           gdbinit.d      modules-load.d  rc0.d      rc6.d       sysctl.d
    chkconfig.d        grub.d         my.cnf.d        rc1.d      rc.d        tmpfiles.d
    cron.d             init.d         pam.d           rc2.d      rsyslog.d   xinetd.d
    depmod.d           ld.so.conf.d   popt.d          rc3.d      rwtab.d     yum.repos.d
    dnsmasq.d          logrotate.d    prelink.conf.d  rc4.d      statetab.d
    

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

    [root@Bj-1-141 ~]# mkdir /tmp/mytest3
    [root@Bj-1-141 ~]# cp -v  /etc/[lmn]*.conf /tmp/mytest3
    [root@Bj-1-141 ~]# ls /tmp/mytest3
    ld.so.conf     libuser.conf  logrotate.conf  mke2fs.conf
    libaudit.conf  locale.conf   man_db.conf     nsswitch.conf
    
  • 相关阅读:
    legend2---开发日志8(thinkphp和vue如何配合才能达到最优)
    英雄联盟:英雄台词翻译(我用双手成就你的梦想。)
    js插件---bootstrap插件daterangepicker是什么
    js插件---bootstrap-datepicker.js是什么
    ORDER BY RAND()
    Boost.Asio c++ 网络编程翻译(26)
    3Sum Closest
    hdu3480二维斜率优化DP
    MySQL Study之--Mysql无法启动“mysql.host”
    于PsIsSystemThread无论是在线程系统线程标识获得
  • 原文地址:https://www.cnblogs.com/wangenzhi/p/6151766.html
Copyright © 2011-2022 走看看