常见文件管理命令及bash特性

cat:查看文件文本内容

 -n:显示行号
 [root@study ~]# cat -n /etc/passwd
 1  root:x:0:0:root:/root:/bin/bash
 2  bin:x:1:1:bin:/bin:/sbin/nologin
 3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4  adm:x:3:4:adm:/var/adm:/sbin/nologin
 5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 6  sync:x:5:0:sync:/sbin:/bin/sync
 7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 8  halt:x:7:0:halt:/sbin:/sbin/halt
 9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

cat还可以结合管道命令,把一段内容写到指定文件,多用于脚本

 [root@study ~]# cat > test <<EOF
 > hello
 > world
 > EOF
 [root@study ~]# cat test 
 hello
 world

more:查看文本内容,空格往后跳转,b往前跳转,但是跳至末端后,不能再往前跳转

less:与more相似,但跳至末端后,还能往前跳转

head:显示文件的头几行

[root@study ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

tail:显示文件的末尾几行

[root@study ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
kang:x:1000:1000:kang:/home/kang:/bin/bash

其中tail还有一个很重要的参数f,能持续输出文件的末行。一般用于查看日志排错等。

mkdir:创建目录

mkdir -p 递归创建新目录
[root@study ~]# ll
total 12
-rw-------. 1 root root 1170 Oct 26 08:08 anaconda-ks.cfg
-rw-r--r--. 1 root root   17 Nov  3 01:54 test
-rw-r--r--. 1 root root   16 Nov  3 01:40 uni-bank
 例如在当前目录下创建目录/x/y/z
[root@study ~]# mkdir -p x/y/z
[root@study ~]# tree x
x
└── y
    └── z
mkdir -m 可以在创建目录时指定目录权限,例如
[root@study ~]# mkdir -m 644 z
drw-r--r--. 2 root root    6 Nov  7 02:44 z

rmdir:删除目录

cp:复制文件

 -r:递归复制文件
 -f:强制复制,一般用于覆盖已有文件

mv:移动文件,类似于剪切。在linux中也常用作改名字

[root@study ~]# ll
total 12
 -rw-------. 1 root root 1170 Oct 26 08:08 anaconda-ks.cfg
 -rw-r--r--. 1 root root   17 Nov  3 01:54 test
 -rw-r--r--. 1 root root   16 Nov  3 01:40 uni-bank
 drwxr-xr-x. 3 root root   14 Nov  7 02:52 x
 drw-r--r--. 3 root root   14 Nov  7 02:52 z
将z移到x目录下
[root@study ~]# mv z x
[root@study ~]# tree -L 1 x
x
├── y
└── z
把x改名为y
[root@study ~]# mv x y
[root@study ~]# ll
total 12
 -rw-------. 1 root root 1170 Oct 26 08:08 anaconda-ks.cfg
 -rw-r--r--. 1 root root   17 Nov  3 01:54 test
 -rw-r--r--. 1 root root   16 Nov  3 01:40 uni-bank
 drwxr-xr-x. 4 root root   22 Nov  7 02:56 y

rm:删除文件,rm是Linux文件管理里面非常危险的一条的命令,如果删除了一个文件将无法恢复。尤其是在脚本中使用该命令时必须再三确认。例如rm -fr ./* 该命令是删除当前目录下所有文件,如果忘了加.,就会变成删除根目录。

-r:递归删除文件
-f:强制删除,不需要交互
[root@study ~]# rm -rf y 该命令会将上面创建的y目录及其子目录删除。

bash:一般用echo $?查看命令查看命令状态返回值,0为执行成功,1~255为执行失败。个人理解可用于脚本条件判断,同时可通过指定错误返回值,得知错误原因。

[root@study ~]# mkdir x
[root@study ~]# echo $? 
0
[root@study ~]# ll
total 12
 -rw-------. 1 root root 1170 Oct 26 08:08 anaconda-ks.cfg
 -rw-r--r--. 1 root root   17 Nov  3 01:54 test
 -rw-r--r--. 1 root root   16 Nov  3 01:40 uni-bank
 drwxr-xr-x. 2 root root    6 Nov  7 03:14 x
 由上例可以看出状态返回值为0,x目录成功创建。如果删除一个不存在的目录y
[root@study ~]# rm y
rm: cannot remove ‘y’: No such file or directory
[root@study ~]# echo $?
1

习题

1.请使用命令行展开功能来完成以下练习:
(1)创建/tmp目录下的:ac, ad, bc, bd

[root@study tmp]# mkdir -pv /tmp/{a_c,a_d,b_c,b_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’

(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@study ~]# 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}}  

[root@study ~]# 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
    └── run

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

[root@study ~]# stat x
File: ‘x’
Size: 6               Blocks: 0          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 67551725    Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-11-07 03:14:10.716034498 +0800
Modify: 2016-11-07 03:14:10.716034498 +0800
Change: 2016-11-07 03:14:10.716034498 +0800
Birth: -

修改时间戳命令:stat。

 -a     change only the access time
 -m     change only the modification time
 -t     use [[CC]YY]MMDDhhmm[.ss] instead of current time
 修改上述x的时间戳
 [root@study ~]# stat x
 File: ‘x’
 Size: 6               Blocks: 0          IO Block: 4096   directory
 Device: fd00h/64768d    Inode: 67551725    Links: 2
 Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 Context: unconfined_u:object_r:admin_home_t:s0
 Access: 2015-11-06 18:42:30.000000000 +0800
 Modify: 2015-11-06 18:42:30.000000000 +0800
 Change: 2016-11-07 03:36:10.077054798 +0800
 Birth: -
 上例可以看出,用stat指定时间戳不能修改ctime,可以用-m参数修改
 [root@study ~]# touch -m 1511061842.30 x
 [root@study ~]# stat x
 File: ‘x’
 Size: 6               Blocks: 0          IO Block: 4096   directory
 Device: fd00h/64768d    Inode: 67551725    Links: 2
 Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 Context: unconfined_u:object_r:admin_home_t:s0
 Access: 2015-11-06 18:42:30.000000000 +0800
 Modify: 2016-11-07 03:38:52.620057299 +0800
 Change: 2016-11-07 03:38:52.620057299 +0800
 Birth: -

touch也可新建一个不存在的文件。

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

[root@study ~]# alias clear=cls 此时cls可以作为清屏命令

使用管道可以引用另一个命令的执行结果

[root@study ~]# top|grep Mem
KiB Mem :  1001360 total,   739256 free,   119120 used,   142984 buff/cache

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

[root@study ~]# ls -ld /var/l*[0-9]*[a-z]
drwxr-xr-x. 2 root root 6 Nov  7 03:50 /var/lda34a

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

[root@study ~]# ls -ld /etc/[0-9]*[^0-9]
drwxr-xr-x. 2 root root 6 Nov  7 03:53 /etc/1adb

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

[root@study ~]# ls -ld /etc/[^a-z][a-z]*
drwxr-xr-x. 2 root root 6 Nov  7 03:53 /etc/1adb

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

[root@study etc]# mkdir -pv /etc/tfile`date +%F-%H-%M-%S`
mkdir: created directory ‘/etc/tfile2016-11-07-04-08-18’

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

[root@study etc]# cp /etc/p*[^0-9] /tmp/mytest1
cp: omitting directory ‘/etc/pam.d’
cp: omitting directory ‘/etc/pki’
cp: omitting directory ‘/etc/plymouth’
cp: omitting directory ‘/etc/pm’
cp: omitting directory ‘/etc/popt.d’
cp: omitting directory ‘/etc/postfix’
cp: omitting directory ‘/etc/ppp’
cp: omitting directory ‘/etc/prelink.conf.d’
cp: omitting directory ‘/etc/profile.d’
cp: omitting directory ‘/etc/python’

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

[root@study ~]# cp /etc/*.d /tmp/mytest2
cp: omitting directory ‘/etc/bash_completion.d’
cp: omitting directory ‘/etc/binfmt.d’
cp: omitting directory ‘/etc/chkconfig.d’
cp: omitting directory ‘/etc/cron.d’
cp: omitting directory ‘/etc/depmod.d’
cp: omitting directory ‘/etc/dnsmasq.d’
cp: omitting directory ‘/etc/dracut.conf.d’
cp: omitting directory ‘/etc/grub.d’
……

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

[root@study ~]# cp /etc/[lmp]*.conf /tmp/test3/
[root@study ~]# ll /tmp/test3/
total 32
 -rw-r--r--. 1 root root   28 Nov  7 04:16 ld.so.conf
 -rw-r-----. 1 root root  191 Nov  7 04:16 libaudit.conf
 -rw-r--r--. 1 root root 2391 Nov  7 04:16 libuser.conf
 -rw-r--r--. 1 root root   19 Nov  7 04:16 locale.conf
 -rw-r--r--. 1 root root  662 Nov  7 04:16 logrotate.conf
 -rw-r--r--. 1 root root 5171 Nov  7 04:16 man_db.conf
 -rw-r--r--. 1 root root  936 Nov  7 04:16 mke2fs.conf

原创文章,作者:N24_小康,如若转载,请注明出处:http://www.178linux.com/58002

(0)
N24_小康N24_小康
上一篇 2016-11-06
下一篇 2016-11-06

相关推荐

  • Linux之查找命令find简介

    查找命令find简介    Linux使用过程中难免会遇到查找功能,类似于Windows中的搜索功能,如果想要找某个文件在什么地方,什么格式的文件等等。在Linux中我们可以使用find、locate、which、whereis等命令。接下来我们就简单说一下如何使用这几个命令查找文件。 一、which which命令的作用是,在PATH变…

    Linux干货 2015-05-18
  • 文件系统的挂载使用总结

    文件系统使用 除根文件系统以外的文件系统创建后要使用需要先挂载至挂载点后才可以被访问,挂载点即分区设备文件关联的某个目录文件,挂载命令mount和 卸载命令umount; 挂载点: mount_point,作为被挂载的文件系统的访问入口; 作为挂载点需要满足三个条件:  (1)这个目录事先存在  (2)使用未被或不会被其他进程使用到的目录…

    系统运维 2016-11-19
  • 练习正则表达式

        正则表达式可以通过元字符(规则)来匹配查找相关的的字符集合。他与通配符是有区别的。而且相关的使用工具对正则表示的元字符的是有区别的。     首先我们先来了解下常用的元字符及含义(并不是所有的元字符) 字符匹配       &nbs…

    Linux干货 2015-04-15
  • 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)

    1.概述 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各个对象中。 对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,每一个对象都知道其他所有的对象,这无疑复杂化了对象之间的联系。虽然将一个系统分割成许多对象通常可以增强可复用性,但是对象…

    Linux干货 2015-07-20
  • Linux 2.6.39-rc3的一个插曲

    2011年4月12日,Linux 2.6.39-rc3发布了,Linus Torvalds写了一个发布邮件,其中包含了一个长长的为这个版本做过贡献的人员名单,这个名单中有很多看上去应该是中国人的名字,我挺为他们感到骄傲的(不知道你是否还记得以前本站的”Linux是由谁写的“)。 不过,没过一会,发现了一个bug,经过大家的调查(2.6.38版没有发现这个问题…

    Linux干货 2016-06-09
  • 推荐-CentOS 6的系统启动流程

    一、POST加电自检     按下电源后ROM芯片中的CMOS程序执行并检测CPU、内存等设备是否存在并正常运行,CMOS中的程序叫BIOS,可以设置硬盘接口,网卡声卡开关之类的简单设置。一般PC机主板上有一个纽扣电池,这个电池就是给ROM供电的,可以保证主板断电后BIOS的一些基本设置不会重置。  &nb…

    Linux干货 2016-04-10

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-10 19:46

    总结的比较还是比较详细的,继续加油~