第二周作业

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

which命令:显示(shell)命令全部的路径

which [option] programmame [...]

--skip-alias:忽略别名

 

whereis命令:搜索二进制程序,源码,和帮助手册页的命令

whereis [option] name

-b:仅搜索二进制程序路径

[root@localhost ~]# whereis -b fdisk

fdisk: /usr/sbin/fdisk

-m:仅搜索使用手册文件路径

[root@localhost ~]# whereis -m fdisk

fdisk: /usr/share/man/man8/fdisk.8.gz

 

文件查看类命令:cat,tac,head,tail,more,less

cat命令:从文件头部开始查看文件。

tac命令:与cat查看文件相反,从文件尾部开始查看文件

more命令:more FILE;

特点:翻屏至文件尾部时后自动退出

less命令:less FILE;

man命令就是用Less命令来显示帮助文档的。

head命令:查看文件的前N行

head [options] FILE

-n # #显示头多少行。

-#

tail命令:查看文件的后n行;

tail [option] FILE

-n #

-#

-f:查看文件尾部内容结束后不退出,跟随显示新增的行;

[root@localhost ~]# tail -f issue

\S

Kernel \r on an \m

[root@localhost ~]# echo "how are you" >> issue

[root@localhost ~]# tail -f issue

\S

Kernel \r on an \m

how are you

 

文件管理工具:cp, mv, rm

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目录下创建一个与源文件同名的文件,并 复制其数据流;

多源复制:cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

如果DEST不存在:错误;

如果DEST存在:

如果DEST是非目录文件:错误;

如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;

常用选项:

-i:交互式复制,即覆盖之前提醒用户确认;

[root@localhost tmp]# cp /etc/issue ./

cp:是否覆盖"./issue"?

-f:强制覆盖目标文件;

-r,-R:递归复制;

[root@localhost tmp]# cp -r /var/log ./

[root@localhost tmp]# ll -d log

drwxr-xr-x. 19 root root 4096 2月  18 09:56 log

-d:复制符号链接文件本身,而非其指向的源文件;

[root@localhost tmp]# cp -d /proc/mounts ./

[root@localhost tmp]# ll mounts

lrwxrwxrwx. 1 root root 11 2月  18 10:03 mounts -> self/mounts

-a:-dR --preserve=all,archive,用于实现归档:

--preserve=

mode:权限

ownership:属主和属组

timestamps:时间戳

context:安全标签

xattr:扩展属性

links:符号连接

all:上述所有属性

[root@localhost tmp]# cp --preserve=mode,ownership /home/binbin/binbin.txt ./

[root@localhost tmp]# ll binbin.txt

-rw-rw-r--. 1 binbin binbin 0 2月  18 10:18 binbin.txt

演示多源复制,并强制覆盖重复的目录

[root@localhost tmp]# cp -rf -t /tmp /etc/grub.d /var/log

[root@localhost tmp]# ll

总用量 4

drwx------.  2 root root  182 2月  18 10:24 grub.d

drwxr-xr-x. 19 root root 4096 2月  18 10:24 log

 

mv命令:move

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

mv [OPTION]... SOURCE... DIRECTORY

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

常用选项:

i:交互式;

-f:force

将tmp目录下的grub.d目录和log目录,移到至/tmp/test目录

[root@localhost tmp]# mv grub.d/ log/ test

[root@localhost tmp]# ll -h test/

总用量 4.0K

drwx------.  2 root root  182 2月  18 10:24 grub.d

drwxr-xr-x. 19 root root 4.0K 2月  18 10:24 log

mv命令还可以用来重命名

[root@localhost tmp]# mv test bin

[root@localhost tmp]# ll -h

总用量 0

drwxr-xr-x. 4 root root 31 2月  18 10:31 bin

 

rm命令:remove

rm [OPTION]... FILE...

常用选项:

-i:interactive #交互式删除

-f:force #强制删除

-r: recursive #递归删除

删除目录:rm -rf /PATH/TO/DIR

危险操作:rm -rf /*

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

[root@localhost tmp]# rm -rf ./*

[root@localhost tmp]# ll

总用量 0

 

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

命令执行的状态结果:

bash通过状态返回值来输出此结果

成功:0

失败:1-255

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

命令正常执行时,有的还回有命令返回值:

根据命令及其功能不同,结果各不相同;

正确查到文件信息返回值

[root@localhost /]# ll /etc/passwd

-rw-r--r--. 1 root root 2238 2月  12 15:15 /etc/passwd

[root@localhost /]# echo $?

0

 

错误查看文件信息返回值

[root@localhost /]# lll /etc/passwd &>> /dev/null

[root@localhost /]# echo $?

127

 

命令展开引用

[root@localhost tmp]# mkdir $(date +%Y-%m-%d-%H-%M-%S)

[root@localhost tmp]# ll

总用量 0

drwxr-xr-x.  2 root root   6 2月  18 17:30 2017-02-18-17-30-20

 

 

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

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

[root@localhost /]# mkdir -pv /tmp/{a,b}_{c,d}

mkdir: 已创建目录 "a_c"

mkdir: 已创建目录 "a_d"

mkdir: 已创建目录 "b_c"

mkdir: 已创建目录 "b_d"

 

(2)、创建/tmp/myLinux目录下的:

[root@localhost /]# mkdir -pv /tmp/myLinux/{bin,boot/grub,dev,etc/{rc.d/init.d,syscofig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}

[root@localhost /]# tree /tmp/myLinux

/tmp/myLinux

├── bin

├── boot

│   └── grub

├── dev

├── etc

│   ├── rc.d

│   │   └── init.d

│   └── syscofig

│       └── network-scripts

├── lib

│   └── modules

├── lib64

├── proc

├── sbin

├── sys

├── tmp

├── usr

│   └── local

│       ├── bin

│       └── sbin

└── var

├── lock

├── log

└── run

 

24 directories, 0 files

 

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

元数据信息包含:

File:文件名

Size:表示文件数据流大小

Blocks:数据块、

IO Block:IO块

硬链接数:

Access:用户对文件访问的权限

Uid:属主

Gid:属组

Access time:访问文件时间

Modify time:更改时间

Change time:改动时间

 

查看文件元数据:

命令:stat FILE

[root@localhost tmp]# stat 2017-02-18-17-30-20/

File: '2017-02-18-17-30-20/'

Size: 6          Blocks: 0          IO Block: 4096   directory

Device: 803h/2051d Inode: 33793360    Links: 2

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:user_tmp_t:s0

Access: 2017-02-18 17:30:20.848935695 +0800

Modify: 2017-02-18 17:30:20.848935695 +0800

Change: 2017-02-18 17:30:20.848935695 +0800

Birth: -

修改文件的时间戳信息

[root@localhost tmp]# touch -a -t 201602181730 time #修改访问时间

[root@localhost tmp]# touch -m -t 201602181730 time #修改更改时间

[root@localhost tmp]# stat time

File: 'time'

Size: 0          Blocks: 0          IO Block: 4096   regular empty file

Device: 803h/2051d Inode: 33793361    Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:user_tmp_t:s0

Access: 2016-02-18 17:30:00.000000000 +0800

Modify: 2016-02-18 17:30:00.000000000 +0800

Change: 2017-02-18 17:56:02.771576109 +0800

Birth:

 

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

用alias命令定义一个cls=clear

[binbin@localhost tmp]$ alias cls=clear

 

命令中引用另一个命令的执行结果

[root@localhost /]# cat /etc/issue | tee /tmp/issue.tee | tr 'a-z' 'A-Z'

\S

KERNEL \R ON AN \M

[root@localhost /]# ll /tmp/issue.tee

-rw-r--r--. 1 root root 23 Feb 18 18:12 /tmp/issue.tee

 

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

[root@localhost var]# ls -d l*[0-9]*[a-z] ./

./  l2-tp  l2tp

 

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

[root@localhost etc]# ls -d [0-9]*[^0-9] ./

 

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

[root@localhost etc]# ls -d [^[:alpha:]][[:alpha:]]* ./

./  2xyz

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

touch file-$(date +%Y-%m-%d-%H-%M-%S)

[root@localhost tmp]# ll file-2017-02-18-20-57-32

-rw-r--r--. 1 root root 0 Feb 18 20:57 file-2017-02-18-20-57-32

 

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

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

[root@localhost tmp]# ll ./mytest1/

total 48

drwxr-xr-x. 2 root root 4096 Feb 18 21:01 pam.d

-rw-r--r--. 1 root root 2238 Feb 18 21:01 passwd

-rw-r--r--. 1 root root 2238 Feb 18 21:01 passwd-

-rw-r--r--. 1 root root 1362 Feb 18 21:01 pbm2ppa.conf

-rw-r--r--. 1 root root 2872 Feb 18 21:01 pinforc

drwxr-xr-x. 9 root root   98 Feb 18 21:01 pki

drwxr-xr-x. 2 root root   28 Feb 18 21:01 plymouth

drwxr-xr-x. 5 root root   52 Feb 18 21:01 pm

-rw-r--r--. 1 root root 6300 Feb 18 21:01 pnm2ppa.conf

drwxr-xr-x. 2 root root    6 Feb 18 21:01 popt.d

drwxr-xr-x. 2 root root  154 Feb 18 21:01 postfix

drwxr-xr-x. 3 root root  219 Feb 18 21:01 ppp

drwxr-xr-x. 2 root root  105 Feb 18 21:01 prelink.conf.d

-rw-r--r--. 1 root root  233 Feb 18 21:01 printcap

-rw-r--r--. 1 root root 1795 Feb 18 21:01 profile

drwxr-xr-x. 2 root root 4096 Feb 18 21:01 profile.d

-rw-r--r--. 1 root root 6545 Feb 18 21:01 protocols

drwxr-xr-x. 2 root root   79 Feb 18 21:01 pulse

drwxr-xr-x. 2 root root   23 Feb 18 21:01 purple

drwxr-xr-x. 2 root root   35 Feb 18 21:01 Python

 

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

[root@localhost tmp]# cp -rf /etc/*.d mytest2/

[root@localhost tmp]# ll mytest2

total 20

drwxr-xr-x.  2 root root    6 Feb 18 21:03 auto.master.d

drwxr-xr-x.  2 root root 4096 Feb 18 21:03 bash_completion.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 binfmt.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 cgconfig.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 chkconfig.d

drwxr-xr-x.  2 root root   54 Feb 18 21:03 cron.d

drwxr-xr-x.  2 root root   23 Feb 18 21:03 depmod.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 dnsmasq.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 dracut.conf.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 exports.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 gdbinit.d

drwx------.  2 root root  182 Feb 18 21:03 grub.d

lrwxrwxrwx.  1 root root   11 Feb 18 21:03 init.d -> rc.d/init.d

drwx------.  3 root root   50 Feb 18 21:03 ipsec.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 krb5.conf.d

drwxr-xr-x.  2 root root  129 Feb 18 21:03 ld.so.conf.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 libibverbs.d

drwxr-xr-x.  2 root root  215 Feb 18 21:03 logrotate.d

drwxr-xr-x.  2 root root   59 Feb 18 21:03 modprobe.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 modules-load.d

drwxr-xr-x.  2 root root   31 Feb 18 21:03 my.cnf.d

drwxr-xr-x.  2 root root   70 Feb 18 21:03 oddjobd.conf.d

drwxr-xr-x.  2 root root 4096 Feb 18 21:03 pam.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 popt.d

drwxr-xr-x.  2 root root  105 Feb 18 21:03 prelink.conf.d

drwxr-xr-x.  2 root root 4096 Feb 18 21:03 profile.d

drwxr-xr-x. 10 root root  127 Feb 18 21:03 rc.d

lrwxrwxrwx.  1 root root   10 Feb 18 21:03 rc0.d -> rc.d/rc0.d

lrwxrwxrwx.  1 root root   10 Feb 18 21:03 rc1.d -> rc.d/rc1.d

lrwxrwxrwx.  1 root root   10 Feb 18 21:03 rc2.d -> rc.d/rc2.d

lrwxrwxrwx.  1 root root   10 Feb 18 21:03 rc3.d -> rc.d/rc3.d

lrwxrwxrwx.  1 root root   10 Feb 18 21:03 rc4.d -> rc.d/rc4.d

lrwxrwxrwx.  1 root root   10 Feb 18 21:03 rc5.d -> rc.d/rc5.d

lrwxrwxrwx.  1 root root   10 Feb 18 21:03 rc6.d -> rc.d/rc6.d

drwxr-xr-x.  2 root root   77 Feb 18 21:03 request-key.d

drwxr-xr-x.  2 root root   25 Feb 18 21:03 rsyslog.d

drwxr-xr-x.  2 root root   35 Feb 18 21:03 rwtab.d

drwxr-xr-x.  3 root root 4096 Feb 18 21:03 sane.d

drwxr-xr-x.  2 root root 4096 Feb 18 21:03 setuptool.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 statetab.d

drwxr-x---.  2 root root    6 Feb 18 21:03 sudoers.d

drwxr-xr-x.  2 root root   28 Feb 18 21:03 sysctl.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 tmpfiles.d

drwxr-xr-x.  2 root root    6 Feb 18 21:03 xinetd.d

drwxr-xr-x.  2 root root  187 Feb 18 21:03 yum.repos.d

 

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

[root@localhost tmp]# cp -rf /etc/{l,m,n}*.conf mytest3

[root@localhost tmp]# ll mytest3

total 52

-rw-r--r--. 1 root root   28 Feb 18 21:08 ld.so.conf

-rw-r-----. 1 root root  191 Feb 18 21:08 libaudit.conf

-rw-r--r--. 1 root root 2391 Feb 18 21:08 libuser.conf

-rw-r--r--. 1 root root   19 Feb 18 21:08 locale.conf

-rw-r--r--. 1 root root  662 Feb 18 21:08 logrotate.conf

-rw-r--r--. 1 root root 5171 Feb 18 21:08 man_db.conf

-rw-r--r--. 1 root root  936 Feb 18 21:08 mke2fs.conf

-rw-r--r--. 1 root root 2620 Feb 18 21:08 mtools.conf

-rw-r--r--. 1 root root 3390 Feb 18 21:08 nfsmount.conf

-rw-r--r--. 1 root root 1732 Feb 18 21:08 nsswitch.conf

-rw-r--r--. 1 root root 2000 Feb 18 21:08 ntp.conf

-rw-r--r--. 1 root root   91 Feb 18 21:08 numad.conf

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!