Linux学习博客2

Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示

目录管理命令:cd, pwd, ls, mkdir, rmdir, tree

  1. cd命令:change directory切换工作目录
  • cd path : 切换至指定目录路径
  • cd : 切换至当前用户的家目录
  • cd - : 切换至上一次工作目录
  1. pwd命令:print working directory显示当前工作目录

  2. ls命令:显示当前路径下的文件

  • ls :显示当前路径下的文件,默认不显示隐藏文件
  • ls -a :显示当前路径下的所有文件
  • ls -A : 与-a选项的唯一区别是不显示 . (当前目录) 和 .. (上一级目录)
  • ls -l : 显示当前路径下的文件,同时展示出详细信息
  • ls -lh : -h(human readable)选项通常与-l选项同时使用,可以使显示结果更利于人类解读
  • ls -d : 显示目录时只显示其本身,而不显示其下的文件列表(通常用于path/*这种用法,如ls-d /etc/* 执行结果为显示etc目录下的所有文件,但是现实etc下的目录时不会显示其下所包含的内容列表,如果不加 -d 选项,ls /etc/* 执行结果在线式etc目录下的目录时也会显示出 这些目录下的内容列表)
  • ls -i : 显示文件的同时显示其inode
  1. mkdir命令:创建目录
  • mkdir [option] /path/to/dirname... : 创建目录,可以同时创建多个,中间以空格分隔
  • -p : 如果目录已存在,不返回错误信息,如果要创建的上级目录不存在,则自动递归创建上级目录
  • -m mode : 在创建目录时为其设定权限
  • -v : verbose显示过程信息
  1. rmdir命令:删除目录
  • rmdir [option] path/to/dirname... : 删除时目标目录可以是多个,中间以空格分隔,需要注意的是这个命令只能删除空目录,所以其不常用,常用的是rm这个功能更强的命令
  1. tree命令:显示某目录的详细路径结构信息(树形结构)
  • tree [option] /path/to/dirname... : 可以指定多个目录对象一同展开,中间以空格分隔
~]# tree /tmp/magedu.com/
/tmp/magedu.com/
├── machine-id
└── mtab
  • -d : 只显示目录
  • -L # :执行显示的层级#
  • -P patten : 进行patten模式匹配执行结果,显示匹配到的内容

文件管理命令:cat, more, less, head, tail, touch, cp, mv, rm

  1. cat命令:查看文本文件内容,一次性输出所有信息
  • cat [option] file...
  1. more命令:查看文本文件内容,提供翻页功能
  • more [option] file...
  1. less命令:查看文本文件内容,比more命令更强大,不仅提供翻页功能,还可以在查看过程中进行匹配搜索等功能
  • less [option] file...
  1. head命令:显示文本文件的开头N行内容,一次性输出
  • head [option] file... 不加选项默认显示头10行信息
  • head -n # [or -#] : 显示头#行信息
  • head -c # : 显示头#个字节的信息,例如head -c 10k 显示头10k Bytes的内容
  1. tail命令:显示文本文件从结尾向上数N行内容,一次性输出
  • tail [option] file... 不加选项默认显示结尾10行信息
  • tail -n # [or -#] : 显示尾#行信息
  • tail -c # : 显示尾#个字节的信息,例如tail -c 10k 显示结尾向前数10k Bytes的内容
  1. touch命令:更改文件的时间戳
  • touch [option] file... 如果文件存在,更改文件的时间戳。如果文件不存在,则新建此文件,因此touch命令也常用于新建空文件
  • -a : 更改文件的access time
  • -m : 更改文件的modify time
  • -t time : 将文件的时间戳修改为指定的时间
  1. cp命令:复制文件
  • cp [option] source... dest
    • 如果source是一个文件,dest也是一个文件,则将source的内容覆盖至dest
    • 如果source是一个文件,dest不存在,则新建dest文件并将source的内容覆盖至dest
    • 如果source是一个目录或多个文件,则dest必须是一个已存在的目录,将source复制到dest目录下面
    • 如果source是一个目录,可以加 -r 选项使得复制成功,执行结果为新建dest目录,并将source目录之下的所有文件递归复制到dest下面
  • cp [option] -t directory source... : 此用法中 -t 之后为复制操作的目标目录
  • 常用的命令选项
    • -r[or R] : 递归复制
    • -i : 交互模式
    • -d : 复制时遇到符号链接仅复制其本身,而不追踪复制符号链接指向的源文件
    • -p : 使复制后的复本保留原有文件的属性
    • -a : 归档复制,相当于 -dpr 3个选项叠加使用
    • -f : 强制复制,忽略且不输出交互信息(如不显示是否覆盖的交互信息而直接覆盖)
    • -v : verbose显示过程信息
  1. mv命令:移动文件
  • mv [option] soure... dest
    • 如果dest存在且是一个目录,则将source移动至dest目录下
    • 如果source是多个文件,则dest必须为一个已存在的目录
    • 如果source是一个文件(目录也是文件),dest(dest=/path/filename)不存在,则将source文件重命名为filename并移动至/path路径下
  • 常用选项
    • -i : 交互模式
    • -f : 强制执行,不输出交互信息
  1. rm命令:删除文件(目录)
  • rm [option] file...
  • -i : 交互模式
  • -r : 递归删除
  • -f : 强制执行删除,不输出交互信息

Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示

  1. Bash的命令执行状态返回值保存在变量"?"中,可以使用 echo $? 输出其值。
  • 值为 0 : 表示命令执行成功
  • 值为 1-255 : 表示命令执行失败
  1. Bash的命令行展开
  • ~: 表示当前用户的家目录
  • ~username: 表示username用户的家目录
  • {x,y,...}: 大括号中的元素集合可以分别展开
    • 例如/tmp/{x,y}表示: /tmp/x /tmp/y

请使用命令行展开功能来完成以下练习

  1. 创建/tmp目录下的:a_c, a_d, b_c, b_d
]# mkdir /tmp/{a,b}
]# touch /tmp/{a,b}/{c,d}
]# tree /tmp/{a,b}
/tmp/a
├── c
└── d
/tmp/b
├── c
└── d
  1. 创建/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

代码如下:

]# mkdir -p /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}}
]# tree /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

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

  1. 文件的元数据包括:名称,路径,大小,inode号,文件类型,硬链接数,权限,时间戳等
  • inode : 文件的元数据保存在磁盘上的inode区域中,每一个文件都有一个对应的inode号码
  • 硬链接数 : 一个文件的硬链接数为N,表示该文件在磁盘上有N个与其对应的inode号码相同的文件
  • 权限 : 文件的权限包括r(读),w(写),x(执行),suid,sgid,sbit这几种权限,它们可以分别对应到文件的属主、属组和其他人上
  • 时间戳 : 包括有访问时间、修改时间、属性更改时间
    • access time(atime) : 访问时间。文件被访问,即文件在使用cat, more, less, head等命令查看,或者cp等命令将其作为源文件复制给其他路径下,或者使用grep命令进行匹配查找等操作时,atime都会改变
    • modify time(mtime) : 更改时间。指文件内容被修改时,mtime会改变
    • change time(ctime) : 属性更改时间。指文件的元数据被改变,例如chmod, chown, mv等命令改变了文件权限名称路径等信息,ln命令增加了文件的硬链接等操作都会改变ctime
  1. stat命令可以显示文件的元数据信息
  • stat [option] file...
  1. touch命令可以用来修改文件的时间戳信息

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

  1. 定义命令别名
  • 直接输入命令(只能对当前shell有效)
    • alias command1=command2定义了command1作为command2的别名
]# alias "abc"="ls -l"
]# abc
total 15088
drwxr-xr-x.  2 root root       24 Dec  9 21:51 a
drwxr-xr-x. 28 1001  1001    4096 Dec  7 16:50 apr-1.6.3
-rwxr-xr-x.  1 root root  1072661 Dec  7 16:47 apr-1.6.3.tar.gz
drwxr-xr-x. 21 1001  1001    4096 Dec  7 16:54 apr-util-1.6.1
-rwxr-xr-x.  1 root root   554301 Dec  7 16:37 apr-util-1.6.1.tar.gz

  • 定义在bash登录执行的配置文件中
]# vim .bashrc

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

  1. 引用另一个命令的执行结果
  • 使用$(command)
]# ls
anaconda-ks.cfg  scripts  vmware-tools-distrib
]# ls $(ls)
anaconda-ks.cfg

scripts:
file_type.sh  num_sum.sh  sum_txt_linecount.sh  sum_uid.sh  sys_info.sh  user_type.sh

vmware-tools-distrib:
bin  caf  doc  etc  FILES  INSTALL  installer  lib  vgauth  vmware-install.pl
  • 使用`command`
  • 使用管道
ls -l /etc | less

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

可以采用glob匹配文件名的机制来完成

]# ls /var
adm  cache  crash  db  empty  games  gopher  kerberos  l2cn1  l4_t  lib  list12a  local  lock  log  mail  nis  opt  preserve  run  spool  tmp  yp
]# ls /var/l*[[:digit:]]*[a-z]
/var/list12a

/var/l4_t:
lu98i

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

]# ls -d /etc/*
/etc/123                      /etc/cron.weekly              /etc/groff          /etc/locale.conf
/etc/1a                       /etc/crypttab                 /etc/group          /etc/localtime
/etc/1A1                      /etc/csh.cshrc                /etc/group-         /etc/localtime.bak
/etc/1.b                      /etc/csh.login                /etc/grub2.cfg      /etc/login.defs
/etc/1b.d
]# ls -d /etc/[0-9]*[^[:digit:]]
/etc/1a  /etc/1.b  /etc/1b.d

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

]# ls -d /etc/[^[:alpha:]][a-zA-Z]*
/etc/1a  /etc/1A1  /etc/1b.d

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

]# touch /tmp/tfile-$(date +"%Y-%m-%d-%H-%M-%S")
]# ls /tmp/tfile*
/tmp/tfile-2017-12-10-09-17-45

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

]# cp -a /etc/p*[^0-9] /tmp/mytest1/
]# ls /tmp/mytest1/
pam.d  passwd  passwd-  pki  plymouth  pm  popt.d  postfix  ppp  prelink.conf.d  printcap  profile  profile.d  protocols  python

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

]# cp -a /etc/*.d /tmp/mytest2/
]# ls /tmp/mytest2/
1b.d               chkconfig.d  dracut.conf.d  init.d        logrotate.d     my.cnf.d  prelink.conf.d  rc1.d  rc4.d  rc.d       statetab.d  tmpfiles.d
bash_completion.d  cron.d       gdbinit.d      krb5.conf.d   modprobe.d      pam.d     profile.d       rc2.d  rc5.d  rsyslog.d  sudoers.d   xinetd.d
binfmt.d           depmod.d     grub.d         ld.so.conf.d  modules-load.d  popt.d    rc0.d           rc3.d  rc6.d  rwtab.d    sysctl.d    yum.repos.d

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

]# cp -a /etc/[lmn]*.conf /tmp/mytest3
]# ls /tmp/mytest3
ld.so.conf  libaudit.conf  libuser.conf  locale.conf  logrotate.conf  man_db.conf  mke2fs.conf  nsswitch.conf
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341