3.2-Linux文件类型和文件相关命令

无论你犯了多少错,或者进步得有多慢,你都走在了那些不曾尝试的人的前面。

关键字: ls 、cd、pwd ;文件增删改:cp、rm、mv
正则表达式字符是计算机图灵实现的根本;
文件类型:Linux一切皆对象;
数据类型:数据 与 元数据;

1. pwd

pwd 判定当前目录在文件系统内的确切位置;

pwd=echo $PWD #显示变量PWD的值

1. 目录连接链接时,pwd -P  显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径
[root@localhost soft]# cd /etc/init.d
[root@localhost init.d]# pwd
/etc/init.d

[root@localhost init.d]# pwd -P
/etc/rc.d/init.d

2.绝对路径与相对路径

绝对路径:以斜线开始的,从/开始的路径。

/etc/syscofnig/network-scrpits

绝对路径分为两段,dirname和basename:

相对路径:不以斜线开始的路径,以 . 开始的命令;

xxx/yyy :当前目录下的xxx子目录的yyy子目录
.:当前目录
..:上级目录
~:用户的家目录,
-:切换上次输入的目录,和命令配合使用

tips:-原理,系统记住上一个工作目录,存储在环境变量OLDPWD,可以用echo $OLDPWD查看到;
相对路径: ./bin #当前目录下的文件夹;
绝对路径: 完整路径;

3. cd:切换目录

change directory

cd:切换到家目录
cd ~:切换到家目录
cd ~USERNAME:切换到用户USERNAME的家目录
cd -:在上一次所在目录与当前目录来回切换(PWD to OLDPWD)
cd ..:切换到上级目录
cd /path/to/directory 切换到一个绝对目录
cd path/to/directory:切换到一个相对目录

/ #左撇 当前目录;
\ #右撇 转义

4. ls \ ll :列出内容

-:常规文件类型(内部类型是什么,用file命令)
d:directory,目录文件
b:blobk device,块设备文件,支持以“block”为单位进行随机访问
major number:主设备号,用来表示设备类型,进而确定要加载的驱动程序
minor number:次设备号,用于表示同一类型中的不同设备。
c:字符设备;
l:符号链接文件;
P:管道文件pipe,FIFO(First In,First Out)
S:套接字文件socket

list(用/var目录做例子)

-a: --all:列出所有文件包含隐藏文件
-A:--almost all:列出除...之蛙所有的文件
-F:-F参数在目录名后加了正斜线(/),以方便用户在输出中分辨它们。类似地,它会在可执行 文件(比如上面的my_script文件)的后面加个星号,以便用户找出可在系统上运行的文件。
-l:--long:长格式信息,列出文件的详细属性,命令可以简写为llalias ll='ls -l --color=auto'
-h:--human-readable:size用人类可读的格式表示
-d:--directory:查看目录本身而非内部的文件详情
-r:--reverse:反转排序(降序)
-R: --recursive 递归显示(基本不用这个,递归显示用tree命令更直观)
-t:按修改时间排序

5. stat 查看文件状态

  1. 每一个文件都有三个时间戳;
  2. 元数据改变,内容不一定改变;内容改变,元数据一定改变;
  3. 可以看到atime(Access)、mtime(Modify)、Ctime(Change),还有文件的权限,文件拥有者和拥有组,还有文件大小相关的内容。
[root@centos7 ~]# stat /etc/issue
  File: ‘/etc/issue’
  Size: 23          Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 134320235   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2017-05-22 09:07:34.832999490 +0800
Modify: 2016-11-30 02:12:59.000000000 +0800
Change: 2017-05-17 16:53:20.670996867 +0800
 Birth: -

6. 文件通配符(globbing)

  • :匹配零个或多个字符
  • ? :匹配任何单个字符
  • ~ :当前用户家目录
  • ~longdream :用户longdream的家目录
  • ~+ :当前工作目录
  • ~-:前一个工作目录
  • [0-9]:匹配数字范围,匹配一个
  • [a-z]或[A-Z]:字母,不区分大小写
    tips:因为不区分大小写,[a-d]代表的就是匹配AaBbCcDd中的一个
  • [a-z0-9]:字母或数字
  • [wang]:匹配列表中的任何的一个字符,匹配wang
  • [^wang] 匹配列表中的所有字符以外的字符,除了wang

只显示隐藏文件:

预定义的字符类:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符

练习
练习1:显示/var/log目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录。
练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录。
练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其他任意长度任意字符的文件或目录。
练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录到/tmp/test目录。
练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/test/man目录下。
练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录到/tmp/conf.d/目录下。

答案:
ls -d /var/l?[[:lower:]]
ls -d /etc/[0-9]*[^0-9]
ls -d /etc/[^a-z][a-z]*
mkdir /tmp/test
cp -r /etc/m*[^0-9] /tmp/test/
mkdir /tmp/test/man
cp -r /usr/share/man/man[0-9] /tmp/test/man
mkdir /tmp/conf.d
cp -r /etc/[mnrp]*.conf /tmp/conf.d/

7. touch

touch [OPTION]... FILE...
-a :仅改变 atime和ctime
-m :仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]:指定atime和mtime的时间戳
-c :如果文件不存在,则不予创建

touch 命令可以修改文件的时间;
!touch #找最近的 touch命令;
!stat #找最近的 stat命令;

ctime指的是当前时间;可以改a\m time,一定会改ctime时间;

9.文件的增删改 cp、mv、rm

9.1 cp:copy

cp使用方法;
cp /etc/fstab /app :复制单个文件到目录下面。
cp /etc/{fstab,issue} /app/dir/,cp /etc/fstab /etc/bashrc /app/dir/:复制多个文件到某目录下。
cp /etc/fstab /app/1.txt:复制并覆盖目标文件(没有则创建)。

参数

  • -f--force:强制覆盖目标文件。
  • -r-R,--recursive:递归复制目录 (-r==-R)。cp -r /var/log /app/log`
  • -d:复制符号链接本身,而不是他指向的文件。cp -d /etc/system-release /app
  • -a--archive:归档,等同于-dr
  • -p:复制文件的原来属性,等同于下面的--preserv=[mode,ownership,timestamp]
  • --preserv[=ATTR_LIST]
    • mode:权限
    • ownership:属主属组
    • timestamp:时间戳
    • links:复制链接的源文件
    • xattr
    • context
    • all
  • -v, --verbose:看到详细信息

练习:

  1. 定义别名命令baketc,每天将/etc/目录下所有
    文件,备份到/testdir独立的子目录下,并要求子目 录格式为 backupYYYY-mm-dd,备份过程可见
  1. 创建/testdir/rootdir目录,并复制/root下所有 文件到该目录内,要求保留原有权限
    解答:1) alias baketc=cp -av /etc/* /testdir/date -u
    2)cp -ap /root/* /testdir/rootdir
    tips: 小技巧 利用通配符来复制:
    cp -a /etc/passwd{,.bak}
    相当于 cp -a /etc/passwd /etc/passwd.bak
9.2 mv

mv:move
-f 强制移动或覆盖
移动文件(不在同一目录下),重命名文件(在同一目录下)
移动目录或重命名目录

9.3 rm (生产环境下,任何文件都不要删除)

rm :remove
删除文件
-i:interactive,交互式

-r 递归删除
-f 强制删除

rm -rf /(5是可以删除根的,6和7是不可以删除的)

我们可以留一个习惯:
不用的文件,不要直接删除,可以用mv move到某个专用目录(比如都移动到/tmp下)


10 基本命令tree 、mkdir 、rmdir

10.1 tree

参数:
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径

10.2 mkdir rmdir

mkdir:make directory
-p 递归创建
-v :verbose,创建目录的详情
-m mode,权限

rmdir:remove empty directory(只能删除空目录)

练习1:创建test1/x/y1, test1/x/y2, test1/x/y1/a, test1/x/y1/b
练习2: test2目录下面创建a_c, a_d,b_c, b_d
练习3:在test3目录下创建以下目录结构:
练习3:创建`/testdir/dir1/x`, `/testdir/dir1/y,` `/testdir/dir1/x/a`, `/testdir/dir1/x/b`, `/testdir/dir1/y/a`, `/testdir/dir1/y/b`
练习4:创建`/testdir/dir2/x`, `/testdir/dir2/y`, `/testdir/dir2/x/a`, `/testdir/dir2/x/b`
练习5:创建/`testdir/dir3`, `/testdir/dir4`, `/testdir/dir5`, `/testdir/dir5/dir6`, `/testdir/dir5/dir7`

答案:
mkdir -pv test1/x/{y1/{a,b},y2}       #递归创建
mkdir -pv test2/{a,b}{c,d}
mkdir -pv test3/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}
mkdir -pv /testdir/dir1/{x,y}/{a,b}
mkdir -pv /testdir/dir2/{x/{a,b},y}
mkdir -pv /testdir/dir{3,4,5/dir{6,7}}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351