美文网首页
慢慢学(8.20--8.26)

慢慢学(8.20--8.26)

作者: 佐岸的咖啡 | 来源:发表于2018-08-22 04:16 被阅读0次

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

1.1 cp命令:copy
  • 源文件;目标文件
    • 单源复制: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目录下创建与源文件同名的文件,并复制其数据流至目标文件
    • 如果source是目录,则不会执行命令操作,需要加后续参数
  • 多源复制:cp [OPTION]... SOURCE... DIRECTORY (DEST必须是目录)
    • 如果DEST不存在:错误
    • 如果DEST存在:
      • 如果DEST是非目录文件:依然是错误
      • 如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名
[root@cherry ~]# cp /etc/fstab /tmp/hi.txt           (因为hi.txt是已经存在的文件,所以会有覆盖的提示)
cp: overwrite ‘/tmp/hi.txt’? y                       

[root@cherry ~]# cp /etc/issue /tmp/test   (因为DEST为目录,并非文件,所以会在目录下创建同名文件并复制)
[root@cherry ~]# ls /tmp/test/
issue
[root@cherry ~]# cat /tmp/test/issue 
\S
Kernel \r on an \m


[root@cherry ~]# cp /var/log /tmp/         (源数据log为目录而并非文件,故复制到DEST并不执行操作)
cp: omitting directory ‘/var/log’


  • 常用选项:
    • -i:交互式复制,即覆盖之前会提醒用户确认
    • -f:强制覆盖目标文件
    • -r:递归复制目录(复制目录及目录中的内容至目标位置)
    • -d:复制符号链接文件本身,而非指向的源文件
    • -a:-dR --preserve=all,archive,用于实现归档做备份
    • --preserve=
      • mode:权限
      • owenship:属主和属组
      • timetamps:时间戳
      • contest:安全标签
      • xattr:扩展属性
      • links:符号链接
      • all:上述所有属性
1.2 mv命令:move
  • mv [OPTION]... [-T] SOURCE DEST
  • mv [OPTION]... SOURCE... DIRECTORY
  • mv [OPTION]... -t DIRECTORY SOURCE...
    • 常用选项:
      • -i:交互式
      • -f:force
1.3 rm命令:remove移除,删除文件,非常危险!
  • rm [OPTION]... FILE...
    • 常用选项:
      • -i:interactive
      • -f:force
      • -r:recursive
    • 删除目录:rm -rf /PATH/TO/DIR
      • rm -rf /* 非常非常非常危险!
    • 注意: 所有不用的文件建议不要直接删除,而是移动到某个专用目录:(模拟回收站)

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

2.1 命令的执行状态结果返回值
  • 命令执行的状态结果:
    • bash通过状态返回值来输出此结果:
      • 成功:0
      • 失败:1--255
    • 命令执行完成之后,其状态返回值保存于bash的特殊变量 $ ?中(最近一条命令的状态结果)
  • 命令正常执行时,有的还会有命令返回值
    • 根据命令及其功能不同,结果各不相同
2.2 命令行展开
  • ~:自动展开为用户的家目录,或指定的用户的家目录
  • { }:可承载一个以,逗号分割的路径列表,并能够将其展开为多个路径
    • 例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b
[root@cherry ~]# ls /tmp
ks-script-i2RpM1   
[root@cherry ~]# echo $?
0

[root@cherry ~]# ls /tmpppppp
ls: cannot access /tmuuuu: No such file or directory
[root@cherry ~]# echo $?
2

[root@cherry ~]# luuus /tmp
-bash: lsuuus: command not found

[root@cherry ~]# echo $?
127


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

  • (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@cherryyao ~]# mkdir -p /tmp/{a,b}_{c,d}

[root@cherryyao ~]# ll /tmp/
total 100
drwxr-xr-x.  2 root      root      4096 Aug 22 03:02 a_c
drwxr-xr-x.  2 root      root      4096 Aug 22 03:02 a_d
drwxr-xr-x.  2 root      root      4096 Aug 22 03:02 b_c
drwxr-xr-x.  2 root      root      4096 Aug 22 03:02 b_d
  • (2)、创建/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@cherryyao ~]# 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@cherryyao ~]# 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

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

4.1 文件元数据
[root@cherryyao ~]# stat /tmp/fstab 
  File: ‘/tmp/fstab’
  Size: 501         Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 3278555     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-08-22 01:13:14.855864616 +0800
Modify: 1985-07-17 12:30:45.000000000 +0800
Change: 2018-08-22 01:43:26.644852003 +0800

元数据信息 解释说明
File 文件名
size 文件的大小
blocks 占用block的数量
io block block总大小为4096
regular file 定义文件类型-常规文件
Device 设备编号的十六进制和十进制
Inode 文件的Inode值
Links 文件的硬链接数
第一个Access 文件的权限
Context 注释信息
Access 访问时间
Modify 修改时间
Change 改动时间
4.2 修改时间戳使用touch命令
  • touch [OPTION]... FILE...
    • -c:指定的文件路径不存在时不予创建
    • -a:仅修改access time
    • -m:仅修改modify time
    • 注意:change time是无法指定修改的
    • -t STAMP
      • [[CC]YY]MMDDhhmm[.ss]
[root@cherryyao ~]# stat /tmp/fstab 
  File: ‘/tmp/fstab’
  Size: 501         Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 3278555     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-08-22 01:13:14.855864616 +0800
Modify: 1985-07-17 12:30:45.000000000 +0800
Change: 2018-08-22 01:43:26.644852003 +0800
 Birth: -
 
[root@cherryyao ~]# touch -a -m -t 198507172145.36 /tmp/fstab 

[root@cherryyao ~]# stat /tmp/fstab 
  File: ‘/tmp/fstab’
  Size: 501         Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 3278555     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 1985-07-17 21:45:36.000000000 +0800
Modify: 1985-07-17 21:45:36.000000000 +0800
Change: 2018-08-22 03:26:37.542783459 +0800
 Birth: -

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

5.1 命令别名
  • 命令别名:
    • 获取所有可用别名的定义
      • ~]# alias
    • 定义别名:
      • ~]# alias NAME='COMMAND'
      • 注意:仅对当前shell进程有效
    • 撤销别名:
      • ~]# unalias NAME
[root@cherryyao ~]# alias cls=clear
[root@cherryyao ~]# alias
alias cls='clear'
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'
5.2 命令引用
  • 强引用: ’ ‘
    • 其内部的任何字串都全部直接显示,不做任何的替换
  • 弱引用:“ ”
    • 双引号中的变量引用,会做变量的替换,也就是说把双引号中间的变量替换成原本变量中就储存的值来显示输出
  • 命令引用: $()
    • 直接输出命令的执行结果
[root@cherryyao ~]# mktemp /tmp/$(date +%F-%T).XXXXXXXX
/tmp/2018-08-22-03:35:02.zpagRvZN
[root@cherryyao ~]# 
[root@cherryyao ~]# mktemp /tmp/$(date +%F-%T).XXXXXXXX
/tmp/2018-08-22-03:35:07.0SLP3mn1


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

[root@cherryyao ~]# ls -ld /var/l*[0-9]*[a-z]
-rw-r--r--. 1 root root    0 Aug 22 03:45 /var/llll45452g.txt
drwxr-xr-x. 2 root root 4096 Aug 22 03:46 /var/lsdg99o

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

[root@cherryyao ~]# ls -ld /etc/[0-9]*[^0-9]
-rw-r--r--. 1 root root 0 Aug 19 22:57 /etc/3abc23y

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

[root@cherryyao ~]# ls -ld /etc/[^[:alpha:]][a-zA-Z]*
-rw-r--r--. 1 root root 0 Aug 19 22:57 /etc/3abc23y

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

[root@cherryyao ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)

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

[root@cherryyao ~]# mkdir /tmp/mytest1

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

[root@cherryyao ~]# ls /tmp/mytest1
pam.d    pki       popt.d   prelink.conf.d  profile.d
passwd   plymouth  postfix  printcap        protocols
passwd-  pm        ppp      profile         python

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

[root@cherryyao ~]# mkdir /tmp/mytest2

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

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

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

[root@cherryyao ~]# mkdir /tmp/mytest3

[root@cherryyao ~]# cp -r /etc/[lmn]*.conf /tmp/mytest3

[root@cherryyao ~]# ls /tmp/mytest3
ld.so.conf     libuser.conf  logrotate.conf  mke2fs.conf
libaudit.conf  locale.conf   man_db.conf     nsswitch.conf

相关文章

  • 慢慢学(8.20--8.26)

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 1.1 cp命令:copy 源文件;...

  • 慢慢写慢慢学

    喜欢学习? 不,只是无聊。 追过了感兴趣的剧,闭嘴离不开的人,打工是不想打工的。 于是, 希望连续课连续书连续语连...

  • 慢慢学,慢慢悟

    今天中途加入了读书会,大家正在讨论关于学生上课发言的问题。听到了很多实用的好办法,尤其是彭老师提出的“要对不发言的...

  • 慢慢画。。。慢慢学。。。

  • 慢慢学

    周末去按摩,期间大夫准备,发一条微信,结果十分不熟练。问我怎么进行切换。我便一点一点告诉他,不一会儿他就学会了。 ...

  • 慢慢学

    特别羡慕那些八面玲珑的人,在不同的人面前说不同的话,调节气氛的高手,语言表达能力强大,天生的段子手。而我恰恰相反,...

  • 慢慢学

    理解了那句不知者无畏是什么意思 没开始不知道有多难所以根本不知道 它到底有多难 哪怕自己已经停了一遍再做还是会错 ...

  • 慢慢学

    改了三天的网课作业,总体感觉还是满意的,因为我看到的是积极认真的大多数,心里为他们点赞;我也不会因为一两个不交...

  • 慢慢学古琴

    慢慢学古琴,慢慢修心,慢慢过每一天。 听琴,不期待下一个音,不留恋上一个音,全然感受当下每一个音。 练琴,全然专注...

  • 慢慢学做人

    生而为人,要慢慢学会做自己喜欢的人 先说抱歉,不是因为你真的错了,而且因为你能承担那份责任 不要随意评价别人,每个...

网友评论

      本文标题:慢慢学(8.20--8.26)

      本文链接:https://www.haomeiwen.com/subject/dgteiftx.html