1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
答:文件管理类命令有:cp,mv,rm。
(1)cp命令:copy
用来将一个或多个源文件或目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则会出错。
语法:
cp [OPTION]... [-T] SOURCE DEST
cp[OPTION]... SOURCE... DIRECTORY
cp[OPTION]... -t DIRECTORY SOURCE...
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-s:对源文件建立符号连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-u:只会在源文件的更改时间比目标文件更改时间更新时,或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:显示详细的命令执行的操作。
参数:
源文件:制定源文件列表。cp命令如果要复制目录,则必须使用-r或-R;
目标文件:指定目标文件。当“源文件”为多个文件时,要求目标文件为指定的目录。
cp SRC DEST:
SRC是文件:
如果目标不存在: 新建DEST,并将SRC中的内容填充到DEST中;
如果目标存在:
如果DEST是文件:将SRC中的内容覆盖到DEST中; 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充到新文件中;
实例:
目标文件不存在:
[root@ilinux tmp]#echo hellosrc > src_file
[root@ilinux tmp]#cat src_file
hellosrc
[root@ilinux tmp]#cp src_file . /dest/
[root@ilinux tmp]#ll dest/
total 4
-rw-r--r--. 1 rootroot 9 Aug 11 04:09 src_file
[root@ilinux tmp]#ll src_file
-rw-r--r--. 1 rootroot 9 Aug 11 04:08 src_file
目标文件存在:
[root@ilinux tmp]#echo hellodest >dest/dest_file
[root@ilinux tmp]#cat dest/dest_file
hellodest
[root@ilinux tmp]#cp src_file dest/dest_file
cp: overwrite`dest/dest_file‘? y
[root@ilinux tmp]#cat dest/dest_file
hellosrc
cp SRC ... DEST:
SRC ... :是多个文件;
DEST必须存在,且为目录,其它情况均会出错;
实例:
[root@ilinux tmp]#touch test1 test2 test3
[root@ilinux tmp]#cp test1 test2 test3 dest/
[root@ilinux tmp]#ls dest/
test1 test2 test3
cp SRC DEST
如果SRC是目录:此时要使用选项:-r或-R
如果DEST不存在:
则创建指定目录,复制SRC目录的所有文件到DEST中;
如果DEST存在:
如果DEST是文件:会报错;
如果DEST是目录:复制SRC目录的所有文件到DEST目录中;
实例:
DEST不存在:
[root@ilinux tmp]#cp -r src/ ./mylinux/
DEST存在,DEST是文件:
[root@ilinux tmp]#cp -r src/ test1 #目标是文件,则会报错;
cp: cannot overwritenon-directory `test1‘ with directory `src/‘
DEST存在,DEST是目录:
tmp]# cp -r src/ dest/ #复制SRC目录中所有文件(包含SRC目录本身)
tmp]# cp -r src/* dest/ #复制SRC目录中所有文件(不包含SRC目录本身)
(2)mv命令:move,移动文件
mv [OPTION]... [-T] SOURCEDEST
mv[OPTION]... SOURCE... DIRECTORY
mv[OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i:交互式;
-f:强制;
(3)rm命令:remove,删除文件或目录;
rm [OPTION]... FILE...
常用选项:
-i:交互式;
-f:强制删除;
-r:递归;
rm–rf很危险,操作要小心;
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
(1)命令的执行结果状态有两种:成功、失败。
成功执行状态返回值:0;失败执行状态返回值:1-255。
(2)命令行展开:
命令行展开符号有:~,{ }
~:展开为用户的家目录;
例如:[root@ilinuxmylinux]# cd ~ #切换到自己的家目录;
~USERNAME:展开为指定用户的家目录;
例如:[root@ilinux~]# cd ~gentoo
[root@ilinux gentoo]#
{ } :可承载一个以逗号分隔的列表,并将其展开为多个路径;
例如:/tmp/{a,b}可展开为:/tmp/a,/tmp/b;
/tmp/{tom,jerry}/here可展开为:/tmp/tom/here,/tmp/jerry/here;
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
创建文件:
[root@ilinuxtmp]# touch {a,b}_{c,d}
[root@ilinuxtmp]# ll
total48
-rw-r--r--.1 root root 0 Aug 10 21:53 a_c
-rw-r--r--.1 root root 0 Aug 10 21:53 a_d
-rw-r--r--.1 root root 0 Aug 10 21:53 b_c
-rw-r--r--.1 root root 0 Aug 10 21:53 b_d
创建目录:
[root@ilinuxtmp]# mkdir -v {a,b}_{c,d}
mkdir:created directory `a_c‘
mkdir:created directory `a_d‘
mkdir:created directory `b_c‘
mkdir:created directory `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@ilinuxmylinux]# mkdir –pv {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}
mkdir:created directory `bin‘
mkdir:created directory `boot‘
mkdir:created directory `boot/grub‘
mkdir: createddirectory `dev‘
mkdir:created directory `etc‘
mkdir:created directory `etc/rc.d‘
mkdir:created directory `etc/rc.d/init.d‘
mkdir:created directory `etc/sysconfig‘
mkdir:created directory `etc/sysconfig/network-scripts‘
mkdir:created directory `lib‘
mkdir:created directory `lib/modules‘
mkdir:created directory `lib64‘
mkdir:created directory `proc‘
mkdir:created directory `sbin‘
mkdir:created directory `sys‘
mkdir:created directory `tmp‘
mkdir:created directory `usr‘
mkdir:created directory `usr/local‘
mkdir:created directory `usr/local/bin‘
mkdir:created directory `usr/local/sbin‘
mkdir:created directory `var‘
mkdir:created directory `lock‘
mkdir:created directory `log‘
mkdir:created directory `run‘
[root@ilinuxmylinux]# tree
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
答:(1)使用stat命令查看;
例如:
[root@c66-moban tmp]# stat /etc/services
File: `/etc/services‘
Size: 641020 Blocks:1256 IO Block: 4096 regular file
Device: 803h/2051d Inode: 130345 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-08-06 10:10:03.480031200 +0800
Modify: 2013-10-02 17:06:18.000000000 +0800
Change: 2015-06-27 00:06:34.580997111 +0800
Access:访问时间,读取文件内容;
Modify:修改时间,改变文件内容(数据);
Change:改变时间,元数据发生改变;
(2)修改文件时间戳信息:使用touch命令,-a 访问时间;-m 修改时间;
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
答:(1)定义一个命令的别名是通过alias命令实现的;
alias :显示当前shell进程所有可用的命令别名;
alias NAME=’VALUE’ :定义别名NAME,其相当于执行命令VALUE;
例如:alias ipnet="vi/etc/sysconfig/network-scripts/ifcfg-eth0"
注意:在命令行中定义的别名,仅对当前shell进程有效;如果想要永久有效,要定义在配置文件中;
配置文件:
~/.bashrc :仅对当前用户有效;
/etc/bashrc :对所有用户有效;
注意:编辑配置给出的新配置文件不会立即生效,需重新读取才能生效。
bash进程重新读取配置文件的方式:
1)source /path/to/config_file
2). /path/to/config_file
如果别名同原命令名称,则如果要执行原命令,可使用“\COMMAND”。
如果要撤销别名:用unalias。
语法:unalias NAME
例如:unalias cp
(2)命令引用:
name=`COMMAND`, name=$(COMMAND)
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
答:ls –d /var/l*[0-9]*[[:lower:]]
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
答:ls –d /etc/[0-9]*[^0-9]
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
答:ls –d /etc/[^[:alpha:]][[:alpha:]]*
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-08-06-09-32-22。
答:tmp]# touch tfile-`date +"%Y-%m-%d-%H-%M-%S"`
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
答:cp -r /etc/p*[^0-9] /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
答:cp –r /etc/*.d /tmp/mytest2
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
答:cp -r /etc/[lmn]*.conf /tmp/mytest3
本文出自 “ilinux” 博客,请务必保留此出处http://shenzhijin.blog.51cto.com/1741240/1837933
原文地址:http://shenzhijin.blog.51cto.com/1741240/1837933