1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
答:文件管理的命令有cp、mv、rm
复制命令:cp
用法:
cp [-adfilprsu] 来源文件(source) 目标文件(destination)
cp [options] source1 source2 source3 .... directory
选项与参数:
-a :相当于 -dr --preserve=all 的意思,保持软连接,递归,保持文件原有属性;(常用)
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
-f :为强制(force)的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)(也称作交互式)
-l :进行硬式链接(hard link)的链接文件创建,而非复制文件本身;
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-r :递回持续复制,用于目录的复制行为;(常用)
-s :复制成为符号链接文件 (symbolic link),亦即“捷径”文件;
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。
最后需要注意的,如果来源文件有两个以上,则最后一个目的文件一定要是“目录”才行!
例:
1、复制root家目录下的.bashrc文件到/tmp目录下,并命名为bashrc:
2、选项-i的交互式:若目标文件已经存在,会提示是否覆盖,n表示否,y表示覆盖
3、cp -a 的实例演示:
在tmp目录下复制/var/log/下的wtmp文件到当前目录下, . 表示当前目录。
ls -l查看/var/log/wtmp与当前目录下的wtmp进行比较,发现文件的权限、属组以及创建时间都不一样
使用-a选项复制后,看结果:
使用-a选项复制后,可以看到两个文件的数据特性完全一致,这就是-a的作用
3、目录的复制
将/etc目录复制到/tmp下
cp不能直接复制目录,需要加上-r才行
4、-u 源文件与目标文件比较,有差异才会复制,常用来备份使用
5、可以将多个文件一次性复制到同一个目录去,最后面一定是目录。
移动文件:mv
mv命令不但可以移动文件或者目录,而且还可以更名
使用方法: mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)
例:
1、复制一文件,创建一个目录,将文件移动到新建的目录中去
2、更改目录名称
将刚才新建的mvtest更改为mvtest2
3、移动多个文件到目录
如果有多个文件或目录,则最后一个目标文件一定是目录。
删除:rm
用法: rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!
例:
1、在使用rm的时候加上-i会主动询问是否要删除的选项,可以避免误操作
2、使用rm删除目录
rm默认是无法删除目录的,需要加上-r,root用的rm命令默认添加了-i选项,在使用的时候会自动提示我们是否需要删除。如果不想要提示,可以用rm -rf 来删除,这个命令很危险,谨慎使用,也可以用\rm -r etc 当前是在tmp目录下操作的默认根目录下面的etc文件不要删除,系统会挂掉,指令前面加上\是可以忽略alias的指定选项的。
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
答:bash使用特殊变量$?来保存最新一条命令的执行状态结果:
0:表示成功
1-255:表示失败
例:
[root@mageeduCentos7 ~]# ls
anaconda-ks.cfg
[root@mageeduCentos7 ~]# echo $?
0
[root@mageeduCentos7 ~]# lsss
-bash: lsss: 未找到命令
[root@mageeduCentos7 ~]# echo $?
127
[root@mageeduCentos7 ~]#
命令行展开:
~:展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
如:/tmp/{a,b} = /tmp/a, /tmp/b
/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
例:
[root@mageeduCentos7 tmp]# ls -l {fstab,mvtest2}
-rw-r--r--. 1 tom root 541 8月 11 15:20 fstab
mvtest2:
总用量 8
-rw-r--r--. 1 root root 176 8月 12 14:34 bashrc1
-rw-r--r--. 1 root root 176 8月 12 14:34 bashrc2
----------------------------------------------------------------------------------------
[root@mageeduCentos7 tmp]# echo {tom,hane}/hi
tom/hi hane/hi
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
答:
[root@mageeduCentos7 tmp]# mkdir -v {a,b}_{c,d}
mkdir: 已创建目录 "a_c"
mkdir: 已创建目录 "a_d"
mkdir: 已创建目录 "b_c"
mkdir: 已创建目录 "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@mageeduCentos7 tmp]# mkdir -p mylinux/{bin,boot/gurb,dev,etc/{rc.d/init.d,sysconfig/network-sripts},lib/modules,lib64,proc,sbin,sys,tmp,use/local/{bin,sbin},var,lock,log,run}
[root@mageeduCentos7 tmp]# tree mylinux/
mylinux/
├── bin
├── boot
│ └── gurb
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-sripts
├── lib
│ └── modules
├── lib64
├── lock
├── log
├── proc
├── run
├── sbin
├── sys
├── tmp
├── use
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
24 directories, 0 files
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
答:
使用stat命令查看元数据信息
[root@mageeduCentos7 tmp]# stat fstab
文件:"fstab"
大小:541 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:449031 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 1000/ tom) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2016-08-11 15:20:45.713251497 +0800
最近更改:2016-08-11 15:20:45.713251497 +0800
最近改动:2016-08-11 15:23:54.152264831 +0800
创建时间:-
touch命令用来修改文件的时间戳信息
-a:仅修改最近访问时间
[root@mageeduCentos7 tmp]# touch -a fstab
[root@mageeduCentos7 tmp]# stat fstab
文件:"fstab"
大小:541 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:449031 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 1000/ tom) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2016-08-12 18:31:59.652176719 +0800
最近更改:2016-08-11 15:20:45.713251497 +0800
最近改动:2016-08-12 18:31:59.652176719 +0800
创建时间:-
-m:仅更改修改时间
[root@mageeduCentos7 tmp]# touch -m fstab
[root@mageeduCentos7 tmp]# stat fstab
文件:"fstab"
大小:541 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:449031 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 1000/ tom) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2016-08-12 18:31:59.652176719 +0800
最近更改:2016-08-12 18:34:12.113186092 +0800
最近改动:2016-08-12 18:34:12.113186092 +0800
创建时间:-
-t:跟自己设定的时间,格式是[[CC]YY]MMDDhhmm[.ss]
[root@mageeduCentos7 tmp]# touch -t 201508091405 fstab
[root@mageeduCentos7 tmp]# stat fstab
文件:"fstab"
大小:541 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:449031 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 1000/ tom) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2015-08-09 14:05:00.000000000 +0800
最近更改:2015-08-09 14:05:00.000000000 +0800
最近改动:2016-08-12 18:37:36.625200563 +0800
创建时间:-
[root@mageeduCentos7 tmp]#
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
答:
别名用命令alias
[root@mageeduCentos7 tmp]# alias
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'
[root@mageeduCentos7 tmp]#
设置:
[root@mageeduCentos7 tmp]# alias cnet='cd /etc/sysconfig/network-scripts'
[root@mageeduCentos7 tmp]# cnet
[root@mageeduCentos7 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@mageeduCentos7 network-scripts]#
默认情况下alias设置的命令别名只对当前shell有效
命令引用:
name='COMMAND', name=$(COMMAND)
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
答:
[root@mageeduCentos7 var]# ls -d /var/l*[0-9]*[[:lower:]]
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
答:
[root@mageeduCentos7 var]# ls -d /etc/[0-9]*[^0-9]
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
答:
[root@mageeduCentos7 ~]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-08-06-09-32-22。
答:
[root@mageeduCentos7 tmp]# touch tfile-`date +"%Y-%m-%d-%H-%M-%S"`
[root@mageeduCentos7 tmp]# ll | grep tfile-2016-08-12-19-13-07
-rw-r--r--. 1 root root 0 8月 12 19:13 tfile-2016-08-12-19-13-07
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
答:
[root@mageeduCentos7 tmp]# mkdir mytest1
[root@mageeduCentos7 tmp]# cp -a /etc/p*[^0-9] /tmp/mytest1
[root@mageeduCentos7 tmp]# ls mytest1/
pam.d passwd- plymouth popt.d ppp printcap profile.d python
passwd pki pm postfix prelink.conf.d profile protocols
[root@mageeduCentos7 tmp]#
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
答:
[root@mageeduCentos7 tmp]# mkdir mytest2
[root@mageeduCentos7 tmp]# cp -a /etc/*.d /tmp/mytest2
[root@mageeduCentos7 tmp]# ls mytest2/
bash_completion.d dracut.conf.d modules-load.d rc0.d rc6.d sysctl.d
binfmt.d grub.d my.cnf.d rc1.d rc.d tmpfiles.d
chkconfig.d init.d pam.d rc2.d rsyslog.d xinetd.d
cron.d ld.so.conf.d popt.d rc3.d rwtab.d yum.repos.d
depmod.d logrotate.d prelink.conf.d rc4.d statetab.d
dnsmasq.d modprobe.d profile.d rc5.d sudoers.d
[root@mageeduCentos7 tmp]#
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
答:
[root@mageeduCentos7 tmp]# mkdir -p /tmp/mytest3
[root@mageeduCentos7 tmp]# cp -a /etc/[l,m,n]*.conf /tmp/mytest3
[root@mageeduCentos7 tmp]# ls mytest3
ld.so.conf libuser.conf logrotate.conf mke2fs.conf
libaudit.conf locale.conf man_db.conf nsswitch.conf
[root@mageeduCentos7 tmp]#
本文出自 “11842266” 博客,请务必保留此出处http://11852266.blog.51cto.com/11842266/1837424