Linux中的文件管理命令
一、linux中的目录管理命令:mkdir
和rmdir
mkdir命令:创建目录
- SYNOPSIS mkdir [OPTION]... DIRECTORY... - OPTION -p:按需自动创建父目录 -v:显示命令执行的详细过程 -m:创建目录时直接给定权限,否则为默认权限 - example: [root@centos ~]# mkdir -pv /tmp/x/y/z mkdir: created directory `/tmp/x' mkdir: created directory `/tmp/x/y' mkdir: created directory `/tmp/x/y/z' [root@centos ~]#
rmdir:删除目录
- SYNOPSIS: rmdir [OPTION]... DIRECTORY... - OPTION: -p:删除某空目录后,如果其父目录为空,则一起删除。 -v:显示命令执行的详细过程 - example: [root@centos ~]# rmdir -pv /tmp/x/y/z rmdir: removing directory, `/tmp/x/y/z' rmdir: removing directory, `/tmp/x/y' rmdir: removing directory, `/tmp/x' rmdir: removing directory, `/tmp' rmdir: failed to remove directory`/tmp': Directory not empty [root@centos ~]#
二、Linux中文件查看命令:cat
、tac
、head
、tail
、more
和less
more命令:file perusal filter for crt viewing
- SYNOPSIS: more [OPTION] [file ...] - 特点: 翻屏至文件尾部后自动退出
less命令:opposite of more
- SYNOPSIS: less [file ...] - 特点: 其实man读取帮助手册就是调用的less指令。所以less命令的操作方式同man
head命令:查看文件的前N行,默认为10行
- SYNOPSIS: head [OPTION]... [FILE]... - OPTION: -n # 或 -#:指定查看前#行
tail命令:查看文件的后N行,默认为10行
- SYNOPSIS: tail [OPTION]... [FILE]... - OPTION: -n # 或 -#:指定查看后#行 -f:查看文件尾部内容结束后不退出,跟随显示新增的行
cat:文本文件查看器。可将多个文本文件连接在一起显示
注:不能查看二进制文件。可以是用file指令确定文件是否是文本文件(ASCII test)
- SYNOPSIS: cat [OPTION]... [FILE]... - OPTION: -n:带行编号显示文件内容(不会修改原文) -E:显示行结束符$
tac命令:与cat功能相近,只是逆序显示文件内容
三、Linux中文件管理命令:cp
、mv
和rm
cp:实现文件复制
- SYNOPSIS: 单原复制: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是非目录文件,错误 -- 如果是目录文件。分别复制每个文件,至目标目录中,并保持原名。 - OPTION: -i:交互式复制,即覆盖之前提醒用户确认。 -f:强行覆盖目标文件。 -r:递归复制目录 -d:复制符号链接文件的本身,而非其指向的源文件 -a:-dR --preserve=all,用于实现归档 --preserve= mode:权限 ownership:属主和属组 timestamps:时间戳 context:安全标签 xattr:扩展属性 links:符号链接 all:上述所有属性 - example: `单源复制-目标文件不存在情况` [root@centos ~]# ls /tmp/ whatis.q3Uigb yum.log [root@centos ~]# cp /etc/issue /tmp [root@centos ~]# ls /tmp/ issue whatis.q3Uigb yum.log [root@centos ~]# cat /tmp/issue CentOS release 6.5 (Final) Kernel \r on an \m `单源复制-目标文件已存在情况` [root@centos ~]# cp /etc/hosts /tmp/issue cp: overwrite `/tmp/issue'? y [root@centos ~]# cat /tmp/issue 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 `多源复制-目标目录不存在情况` [root@centos ~]# cp /etc/hosts /etc/issue /tmp/x cp: target `/tmp/x' is not a directory `多源复制-目标目录已存在情况` [root@centos ~]# mkdir /tmp/x [root@centos ~]# cp /etc/hosts /etc/issue /tmp/x [root@centos ~]# ls /tmp/x hosts issue [root@centos ~]# `-r选项实例` [root@centos ~]# mkdir -p /tmp/souce/x/y/z [root@centos ~]# mkdir /tmp/dest [root@centos ~]# cp -r /tmp/souce/ /tmp/dest/ [root@centos ~]# tree /tmp/dest/ /tmp/dest/ └── souce └── x └── y └── z 4 directories, 0 files [root@centos ~]# `--preserve选项实例` [root@centos ~]# ls -l /tmp/ |grep liubin -rw-rw-r--. 1 liubin liubin 0 Sep 27 04:56 liubin [root@centos ~]# cp --preserve=ownership /tmp/liubin /tmp/root [root@centos ~]# ls -l /tmp/ total 16 drwxr-xr-x. 3 root root 4096 Sep 27 04:53 dest -rw-r--r--. 1 root root 158 Sep 27 04:43 issue -rw-rw-r--. 1 liubin liubin 0 Sep 27 04:56 liubin -rw-rw-r--. 1 liubin liubin 0 Sep 27 04:59 root drwxr-xr-x. 3 root root 4096 Sep 27 04:49 souce drwxr-xr-x. 2 root root 4096 Sep 27 04:44 x -rw-------. 1 root root 0 Sep 27 03:07 yum.log [root@centos ~]#
mv命令:文件移动
- SYNOPSIS: mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... - OPTION: -i:交互式 -f:强制移动 - example: [root@centos ~]# tree /tmp/x /tmp/x ├── hosts └── issue 0 directories, 2 files [root@centos ~]# tree /tmp/dest/ /tmp/dest/ └── souce └── x └── y └── z 4 directories, 0 files [root@centos ~]# mv /tmp/x /tmp/dest/ [root@centos ~]# tree /tmp/dest/ /tmp/dest/ ├── souce │ └── x │ └── y │ └── z └── x ├── hosts └── issue 5 directories, 2 files [root@centos ~]#
rm命令:文件移除。谨慎使用。
- SYNOPSIS: rm [OPTION]... FILE... - OPTION: -i:交互式 -f:强制 -r:递归 - example: [root@centos ~]# ls /tmp dest issue liubin root souce yum.log [root@centos ~]# tree /tmp/souce/ /tmp/souce/ └── x └── y └── z 3 directories, 0 files [root@centos ~]# rm -rf /tmp/souce/ [root@centos ~]# ls anaconda-ks.cfg install.log install.log.syslog [root@centos ~]#
四、shell特性–命令行展开
-
~:自动展开为用户的家目录,或指定用户的家目录
[root@centos7 liubin]# cd ~
切换到了当前用户(root)的家目录
[root@centos7 ~]# cd ~liubin切换到指定用户(liubin)的家目录
[root@centos7 liubin]# -
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径。
例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b
五、shell特性–命令的执行状态结果
bash通过状态返回值来输出此命令执行的状态结果
-
成功:0
-
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?中。注:只能获取最近一次执行的命令结果
[root@centos ~]# ls /tmp/dest/ souce x [root@centos ~]# echo $? 0 [root@centos ~]# ls /tmp/source ls: cannot access /tmp/source: No such file or directory [root@centos ~]# echo $? 2 [root@centos ~]#
练习:
1、创建/tmp/目录下的:a_c,a_d,b_c,b_d
[root@centos ~]# ls /tmpdest issue liubin root yum.log [root@centos ~]# mkdir -v /tmp/{a,b}_{c,d} mkdir: created directory `/tmp/a_c' mkdir: created directory `/tmp/a_d' mkdir: created directory `/tmp/b_c' mkdir: created directory `/tmp/b_d' [root@centos ~]# ls /tmp/ a_c a_d b_c b_d dest issue liubin root yum.log [root@centos ~]#
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@centos ~]# mkdir -pv /tmp/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}} mkdir: created directory `/tmp/mylinux' mkdir: created directory `/tmp/mylinux/bin' mkdir: created directory `/tmp/mylinux/boot' mkdir: created directory `/tmp/mylinux/boot/grub' mkdir: created directory `/tmp/mylinux/dev' mkdir: created directory `/tmp/mylinux/etc' mkdir: created directory `/tmp/mylinux/etc/rc.d' mkdir: created directory `/tmp/mylinux/etc/rc.d/init.d' mkdir: created directory `/tmp/mylinux/etc/sysconfig' mkdir: created directory `/tmp/mylinux/etc/sysconfig/network-scripts' mkdir: created directory `/tmp/mylinux/lib' mkdir: created directory `/tmp/mylinux/lib/modules' mkdir: created directory `/tmp/mylinux/lib64' mkdir: created directory `/tmp/mylinux/proc' mkdir: created directory `/tmp/mylinux/sbin' mkdir: created directory `/tmp/mylinux/sys' mkdir: created directory `/tmp/mylinux/tmp' mkdir: created directory `/tmp/mylinux/usr' mkdir: created directory `/tmp/mylinux/usr/local' mkdir: created directory `/tmp/mylinux/usr/local/bin' mkdir: created directory `/tmp/mylinux/usr/local/sbin' mkdir: created directory `/tmp/mylinux/var' mkdir: created directory `/tmp/mylinux/var/lock' mkdir: created directory `/tmp/mylinux/var/log' mkdir: created directory `/tmp/mylinux/var/run' [root@centos ~]# tree /tmp/mylinux/ /tmp/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 └── run24 directories, 0 files [root@centos ~]#
六、文件的元数据
文件的元数据可通过stat命令查看:
[root@centos ~]# stat /etc/issue File: `/etc/issue' Size: 47 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 1966607 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-09-27 03:25:29.196999983 +0800 Modify: 2013-11-27 19:53:33.000000000 +0800 Change: 2016-09-27 03:13:22.876999801 +0800 [root@centos ~]#
-
文件名
-
文件大小
-
文件块
-
文件类型
-
文件链接数
-
权限
-
UID
-
GID
-
文件最后一次被查看的时间
-
文件数据最后一次被修改的时间
-
文件数据和元数据最后一次被改动的时间
touch命令:可于更改前2个时间戳
- SYNOPSIS: touch [OPTION]... FILE... - OPTION: -c:指定的文件路径不存在时不予创建 -a:仅修改access time -m:仅修改modify time `注意:如果不加选项。默认将三个时间改为当前时间` -t STAMP:更改指定时间 [[CC]YY]MMDDhhmm[.ss - example: [root@centos ~]# touch -a -t 201609262232 /tmp/issue [root@centos ~]# stat /tmp/issue File: `/tmp/issue' Size: 158 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 262148 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-09-26 22:32:00.000000000 +0800 Modify: 2016-09-27 06:31:08.898995817 +0800 Change: 2016-09-27 06:32:04.517998108 +0800 [root@centos ~]#
七、命令别名及命令引用
命令别名查看: [root@centos ~]# alias alias cp='cp -i' 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' 创建别名: [root@centos ~]# alias clear='cls' [root@centos ~]# alias alias clear='cls' alias cp='cp -i' 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'
引用命令的执行结果:
使用“引用:
[root@centos ~]# echo `date` Tue Sep 27 06:45:08 CST 2016 [root@centos ~]#
使用$(COMMAND)引用
[root@centos ~]# file $(which --skip-alias ls) /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped [root@centos ~]#
八、globbing文件通配
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
[root@centos ~]# ls /var/1*[[:digit:]]*[[:lower:]] /var/1Qw2Ws [root@centos ~]#
2、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
[root@centos ~]# ls /etc/[[:digit:]]*[^[:digit:]] /etc/2wssc. [root@centos ~]#
3、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
[root@centos ~]# ls /etc/[^[:alpha:]][[:alpha:]]* /etc/2wssc. [root@centos ~]#
4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@centos ~]# touch /tmp/tfile-$(date +%F-%H-%M-%S) [root@centos ~]# ls /tmp/ a_c b_c dest liubin root yum.loga_d b_d issue mylinux tfile-2016-09-27-07-10-10 [root@centos ~]#
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@centos ~]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1 [root@centos ~]# ls /tmp/mytest1/ pam.d pinforc popt.d prelink.conf protocols pango pki portreserve prelink.conf.d pulse passwd plymouth postfix printcap passwd- pm ppp profile pcmcia pm-utils-hd-apm-restore.conf prelink.cache profile.d [root@centos ~]#
6、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
[root@centos ~]# cp -r /etc/*.d /tmp/mytest2/ [root@centos ~]# ls /tmp/mytest2/ bash_completion.d init.d modprobe.d rc0.d rc6.d statetab.dchkconfig.d latrace.d oddjobd.conf.d rc1.d rc.d sudoers.dcron.d ld.so.conf.d pam.d rc2.d request-key.d xinetd.ddepmod.d logrotate.d popt.d rc3.d rsyslog.d yum.repos.ddracut.conf.d lsb-release.d prelink.conf.d rc4.d rwtab.devent.d makedev.d profile.d rc5.d setuptool.d [root@centos ~]#
7、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[root@centos ~]# cp -r /etc/[l,m,n]*.conf /tmp/mytest3 [root@centos ~]# ls /tmp/mytest3 latrace.conf libaudit.conf logrotate.conf mke2fs.conf nsswitch.conf numad.confld.so.conf libuser.conf ltrace.conf nfsmount.conf ntp.conf [root@centos ~]#
原创文章,作者:lucklyme,如若转载,请注明出处:http://www.178linux.com/49296
评论列表(1条)
基础知识和实战总结的非常不错。