linux将目录下的档案复制为,Linux基础篇 三 (Linux档案与目录管理)

1. 绝对路径与相对路径

> 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录。

> 相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:『cd ../man』这就是相对路径的写法啦! 相对路径意指『相对于目前工作目录的路径!』 例:cd /etc 表示进入根目录下的etc目录,这是绝对路径;   cd etc 表示进入当前目录下的etc目录,这两个etc不是一样的!

2. 目录说明

.    代表此层目录

..   代表上一层目录 (根目录的. 与.. 属性完全一模一样,根目录的顶层.. 与他自己. 是同一个目录)

-   代表前一个工作目录

~ 代表『目前使用者身份』所在的家目录

~account 代表 account 这个使用者的家目录.

典型的目录操作指令:

[root@linux ~]# ./squid           ---->出于安全考虑,PATH中的路径不包括当前目录,所以如要执行当前目录下指令要加 ./ !!!

[root@linux ~]# cd [相对路径或绝对路径] (最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号!)

[root@linux ~]# cd ~shmily_liu ----> 代表去到 shmily_liu 这个使用者的家目录,亦即/home/shmily_liu

[root@linux dmtsai]# cd ~      ----> 表示回到自己的家目录,亦即是 /root 这个目录

[root@linux ~]# cd                 ----> 没有加上任何路径,也还是代表回到自己家目录的意思!

[root@linux ~]# cd ..              ----> 表示去到目前的上层目录,亦即是 /root 的上层目录的意思;

[root@linux /]# cd -                ----> 表示回到刚刚的那个目录,也就是 /root

[root@linux ~]# cd /var/spool/mail ----> 绝对路径的写法!直接指定要去的完整路径名称!

[root@linux mail]# cd ../mqueue    ----> 这个是相对路径的写法,我们由 /var/spool/mail 去 到/var/spool/mqueue 就这样写!

[root@linux ~]# pwd [-P] (-P: 显示出确实的路径,而非使用连结 (link) 路径)

[root@linux ~]# mkdir [-mp] 目录名称    -m: 设定档案的权限! 如: mkdir -m 711 test1

-p: 帮助你直接将所需要的目录递归建立起来! 如: mkdir -p ~/test1/test2/test3

[root@linux ~]# rmdir [-p]目录名称 (本指令只能删除空目录)

-p: 连同上层『空的』目录也一起删除

3. 执行文件路径的变量: $PATH

这个环境变量非常重要,当我们在执行一个指令的时候,系统会依照PATH的设定去每个PATH定义的路径下搜寻执行文件,包括各种指令。相关操作如下:

[root@linux ~]# echo $PATH (查看环境变量PATH)

/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin (每个目录中间以冒号:分割,不留空格) 常用的ls指令就在/bin路径下,所以你在任何目录下都可以执行ls,因为通过$PATH就可以找到了。

[root@linux ~]# PATH="$PATH":/root (增加路径到PATH变量中)

详细内容在shell部分讲。

4. 档案与目录管理

[root@linux ~]# ls [-aAdfFhilRS]目录名称    -l: 长数据串行出,包含档案的属性等等数据;

-R: 连同子目录内容一起列出来;

-S: 以档案容量大小排序;

-t: 依据档案时间排序;

-h: 将档案容量以较容易理解的方式列出来;

>复制、移动与删除: cp, rm, mv

[root@linux ~]# cp [-adfilprsu] source destination[root@linux ~]# cp [options] source1 source2 source3 .... directory   -a :相当于 -pdr 的意思;

-d :原来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;

-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;

-i :若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!

-l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;

-p :连同档案的属性一起复制过去,而非使用预设属性;

-r :递归持续复制,用于目录的复制行为;

-s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;

-u :若 destination 比 source 旧才更新 destination

注意: 当我们在进行备份的时候,某些需要特别注意的特殊权限档案,例如密码文件/etc/shadow)以及一些设定档,就不能直接以 cp 来复制,而必须要加上 -a 或者是 -p 等等可以完整复制档案权限的参数才行!另外,如果您想要复制档案给其它的使用者,也必须要注意到档案的权限(包含读、写、执行以及档案拥有者等等), 否则,其它人还是无法针对您给予的档案进行修订的动作. 如果没有加上任何参数时,复制的是源文件,而非连结文件的属性!

另外从参数可见,cp 这个指令的用途除了单纯的复制之外,还可以建立连结档 (就是快捷方式),比对两档案的新旧而予以更新,以及复制整个目录等等的功能!

[root@linux ~]# rm [-fir]档案或目录   -f :就是 force 的意思,强制移除;

-i :互动模式,在删除前会询问使用者是否动作

-r :递归删除!最常用在目录的删除

[root@linux ~]# mv [-fiu] source destination

[root@linux ~]# mv [options] source1 source2 source3 .... directory   -f :force 强制的意思,强制直接移动而不询问;

-i :若目标档案 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标档案已经存在,且 source 比较新,才会更新 (update)

这个指令也可以直接拿来作更名 (rename) 的动作! 如:[root@linux tmp]# mv mvtest mvtest2 相当于rename指令的功能!

5. 获取路径的文件名称与目录名称

[root@linux ~]# basename /etc/sysconfig/networknetwork                   <== 很简单!就取得最后的文档名~

[root@linux ~]# dirname /etc/sysconfig/network/etc/sysconfig            <== 取得的变成目录名了!

6. 档案内容查阅 (具体参数见man)

cat :    由第一行开始显示档案内容

tac :     从最后一行开始显示,可以看出 tac 是 cat 的倒着写!

nl   :     显示的时候,顺道输出行号!

more : 一页一页的显示档案内容                              (只能向后搜索)

less :    与 more 类似,但是比 more 更好的是,他可以往前翻页!(可以向前/后搜索)

head : 只看头几行

tail :     只看尾巴几行

od   :   以二进制的方式读取档案内容!

7. 资料撷取

[root@linux ~]# head [-n number] 档案 (显示文件的最前n行,默认n=10)

[root@linux ~]# tail [-n number] 档案 (显示文件的最后n行,默认n=10)

8. 非纯文字文件的读取: od ---->这个对我们有用,比如读取二进制或16进制文件

[root@linux ~]# od [-t TYPE] 档案-t :       后面可以接以下各种类型 (TYPE)的输出,例如:

a :         利用预设的字符来输出;

c :         使用 ASCII 字符来输出;

d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes;

f[size] : 利用浮点数值(floating)来输出数据,每个数占用 size bytes;

o[size] :利用八进位(octal)来输出数据,每个整数占用 size bytes;

x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes;

9. 修改档案时间与建立新档: touch

这个指令最常被使用的情况是: 建立一个空的档案; 将某个档案日期(三种日期:档案访问时间atime/档案修改时间mtime/档案属性权限变动时间ctime)修订为目前 (mtime与atime)

[root@linux ~]# touch [-acdmt] 档案(文件,不是目录!)

-a :仅修订 access time;

-c :仅修改时间,而不建立档案;

-d :后面可以接日期,也可以使用 --date="日期或时间"

-m :仅修改 mtime ;

-t :后面可以接时间,格式为[YYMMDDhhmm]

10. 档案预设权限: umask ---->指定目前使用者在建立档案或目录时候的属性权限默认值

[root@linux ~]# umask [-S]    (读取当前user创建目录(mkdir)和文件(touch)的默认权限值. 不加参数S,显示的是要减去的权限分数)

[root@linux ~]# umask 002     (为当前user设置创建目录(mkdir)和文件(touch)默认权限值)

11. 档案隐藏属性

[root@linux ~]# chattr [+-=][ASacdistu] 档案或目录名称    ------>(设定档案隐藏属性)

+ :增加某一个特殊参数,其它原本存在参数则不动。

- :移除某一个特殊参数,其它原本存在参数则不动。

= :设定一定,且仅有后面接的参数

S :这个功能有点类似 sync 的功能!就是会将数据同步写入磁盘当中!可以有效的避免数据流失!

a :当设定 a 之后,这个档案将只能增加数据,而不能删除,只有 root才能设定这个属性。对于log文件有用。

c :这个属性设定之后,将会自动的将此档案压缩,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对于大档案似乎蛮有用的)

d :当dump(备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)不具有dump功能

i : 这个 i 可就很厉害了!他可以让一个档案『不能被删除、改名、设定连结也无法写入或新增资料!』对于系统安全性有相当大的帮助!

[root@linux ~]# lsattr [-aR] 档案或目录   ------>(显示档案隐藏属性)

-a :将隐藏文件的属性也秀出来;

-R :连同子目录的数据也一并列出来!

12. 档案类型预判断: file ----->

如果你想要知道某个档案的基本数据,例如是属于 ASCII 或者是 data 档案,或者是 binary ,且其中有没有使用到动态函式库 (share library) 等等的信息,就可以利用 file 这个指令来预作检阅!

[root@linux ~]# file 检阅对象文件

13. 档案的搜寻

[root@linux ~]# which [-a] command(指令)   -a :将所有可以找到的指令均列出,而不止第一个被找到的指令名称

[root@linux ~]# whereis [-bmsu] 档案或目录名   -b : 只找 binary 的档案

-m : 只找在说明文件 manual 路径下的档案

-s : 只找 source 来源档案

-u : 没有说明档的档案!

[root@linux ~]# locate filename(可以只是部分文件名)

跟whereis一样,不搜索硬盘,只搜索数据库,故可能新建的档案会搜索不到,因为数据库一天只更新一次!

[root@linux ~]# find [PATH] [option] [action]      find根据不同的参数来给予档案的搜寻功能,其参数功能非常强大,具体使用时还是前面两个指令好!

(秩名)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值