Linux目录操作(pwd、cd、ls、alias、du、mkdir、touch)

查看切换显示统计目录

pwd(打印当前目录)

[root@localhost ~]# pwd //显示当前路径
/root
[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 8月 6 20:57
/bin -> usr/bin
[root@localhost bin]# pwd -P
/usr/bin
#-P 显示真实路径 快
捷方式 不是文件真正的路径
[root@localhost opt]#ln -s /opt/ky18/
/mnt/k18
#设置软连接
[root@localhost opt]#cd /mnt/k18/
#切换到软连接
[root@localhost k18]#ls
#
[root@localhost k18]#pwd #显示的是当前路径
/mnt/k18
[root@localhost k18]#pwd -P #文件的真实路径
/opt/ky18

 

cd(### 切换目录)

命令 效果
cd 或 cd ~ 若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd - 到前一次目录
一个点号“.”开头 表示以当前的工作目录作为起点
两个点号“..”开头 表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头 表示以指定用户的宿主目录(家目录)作为起点
"."开头文件 表示隐藏文件

[root@localhost ~]# cd /etc/
[root@localhost etc]#
[root@localhost ~]# cd
[root@localhost ~]#
[root@localhost ~]# cd ~
[root@localhost ~]#

ls

ls [选项] [文件或目录… ]

命令选项:

选项 说明
-l 以长格式显示文件和目录列表 ll=ls -l
-a 显示全部包括隐藏文件
-A 显示全部文件或隐藏文件,但不包括 . 和..
-d 只显示当前目录
-h 友好显示文件大小
-R 递归显示该目录及该目录的子目录下的所有内容
--color 显示颜色
-S 按从大到小排序
-i 显示inode号

[root@localhost mnt]# ll //长格式
总用量 0
drwxr-xr-x 3 root root 16 8月 21 10:39
aa

第一个字段 d 代表文件类型比如 d是目录 - 是普 通文件
第2-9(rwxr-xr-x)字母表示该文件的权限
root 文件所有者
root 文件所属组
16 文件大小
21 10:39 文件的最近使用时间
aa 文件或目录名称


[root@test1 ~]# ls -a //显示所有 包括隐藏文件
[root@test1 ~]# ls -A
#显示所有 不包括. ..的隐藏文件
[root@test1 ~]# ls -d //只显示本目录
.

[root@test1 ~]# ls -lh //加单位k友好显示
总用量 16K
-rw-------. 1 root root 1.6K 6月 18 23:13 anaconda-ks.cfg

[root@test1 opt]# ls -R //递归显示
123456.txt 123.txt 1.txt 2.txt abc.txt rh test.txt
./rh:
aaa
./rh/aaa:

文件类型

第 一 个 字 符 文件类型
- 普通文件,包括纯文本文件、二进制文件、各 种压缩文件等。
d 目录,类似 Windows 系统中的文件夹。
b 块设备文件,就是保存大块数据的设备,比如 最常见的硬盘.
c 字符设备文件
s 套接字文件,通常用在网络数据连接,可以启 动一个程序开监听用户的要求,用户可以通过 套接字进行数据通信。
p 管道文件,其主要作用是解决多个程序同时存 取一个文件所造成的错误。
l 链接文件,类似 Windows 系统中的快捷方式。

 

 

通配符

去匹配文件名(包括文件夹)ls

符号 效果
匹配一个字符 f?.txt
* 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10} 1到10
{a..z} a b c ...z
{A..Z} A B C .....Z
[123] 包含其中之一就显示,没有也无所谓(此处括号里只表示单个字符)
[0-9] 匹配数字范围(0123456789),表示单个数字
[a-z] 范围需要注意 (表示从aA、bB到z,不含Z),表示单个字母
[A-Z] 从A到Z(只含大写)中的任意一个字母
\ 转义符,表示原来的意思
[[:lower:]] 小写字母表示 a-z
[[:upper:]] 大写字母表示 A-Z
[^zhou] 匹配列表中的所有字符以外的字符
[[:digit:]] 任意数字,相当于0-9

[root@localhost data]# ls -a *
1
#不显示隐藏文件
[root@localhost data]# ls -a
. .. 1
#显示隐藏文件
[root@localhost data]# ls *
# *不包括.开头的 l
s: 无法访问*: 没有那个文件或目录

[root@localhost data]# ls .*   //包括了 .. 上层目录
.:
..:
aaa boot dev home lib64 misc net proc run   sdb1 sys usr bin data etc lib   media mnt   opt root sbin srv   tmp var


[root@localhost data]# touch f{a..z}.log
[root@localhost data]# touch f{A..Z}.log
[root@localhost data]# ls
123456.txt fa.log     fe.log fj.log fo.log ft.log fy.log
123.txt     f{A.Z}.log ff.log fk.log fp.log fu.log fz.log 1.txt
fb.log     fg.log fl.log fq.log fv.log rh
2.txt       fc.log     fh.log fm.log fr.log fw.log test.txt
abc.txt     fd.log      fi.log fn.log fs.log fx.log
[root@localhost data]# ls f[zhou].log   //包含z、h、o、u四个字母中的任意一个就会显示(只匹配单个字符)  
fh.log fo.log fu.log fz.log
[root@localhost data# ls f[x-z].log     //显示xXyYz,不包括Z
fx.log fX.log fy.log fY.log fz.log
[root@localhost data]# ls f[a-c].log     //显示aAbBc,不包括C
fa.log fA.log fb.log fB.log fc.log  
[root@localhost data]# ls f{a..c}.log   //显示abc所有小写
fa.log fb.log fc.log

[root@localhost data]# ls 1[[:lower:]]*     //显示小写字母
1a1.txt 1e1.txt 1i1.txt 1m1.txt 1q1.txt 1u1.txt 1y1.txt
1b1.txt 1f1.txt 1j1.txt 1n1.txt 1r1.txt 1v1.txt 1z1.txt

[root@localhost data]# ls 1[[:upper:]]*     //显示大写字母
[root@localhost data]# ls 1[[:upper:]]*
1A1.txt 1E1.txt 1I1.txt 1M1.txt 1Q1.txt 1U1.txt 1Y1.txt

 

[root@localhost data]# touch f{1..9}.txt
[root@localhost data]# touch f{10..20}.txt
[root@localhost data]# ls f[0-9].txt           //[0-9]只能匹配10以下的数字
f1.txt f2.txt f3.txt f4.txt f5.txt f6.txt f7.txt f8.txt f9.txt
[root@localhost data]# ls f[0-9][0-9].txt     //两个[0-9]可以匹配双数字
f10.txt f11.txt f12.txt f13.txt f14.txt f15.txt f16.txt f17.txt f18.txt f19.txt f20.txt
[root@localhost data]# ls f{10..20}.txt       //{10..20}可以匹配双数字
f10.txt f11.txt f12.txt f13.txt f14.txt f15.txt f16.txt f17.txt f18.txt f19.txt f20.txt
[root@localhost data]# ls f??.txt       //两个?号可以匹配两个字符
f10.txt f11.txt f12.txt f13.txt f14.txt f15.txt f16.txt f17.txt f18.txt f19.txt f20.txt
[root@localhost data]# ls f*.txt         //*可以匹配任意字符
f10.txt f12.txt f14.txt f16.txt f18.txt f1.txt  f2.txt f4.txt f6.txt f8.txt
f11.txt f13.txt f15.txt f17.txt f19.txt f20.txt f3.txt f5.txt f7.txt f9.txt

 

[root@localhost data]# ls /etc/.*   //显示隐藏文件也包括..的上层目录
[root@localhost data]# ls /etc/.* -d   //如果不想看上层目录 就要加-d 只显示当前目录
/etc/. /etc/.. /etc/.java /etc/.pwd.lock /etc/.updated

alias

临时修改(关机或退出终端会自动消失)

  • alias 命令别名 = ’命令‘

  • unalias 别名命令 删除别名

  • \加别名命令 (显示原始命令)

  • [root@localhost dev]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
    [root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33' ​

    [root@localhost dev]# alias myls=ls -alh //如果不加引号,无法识别
    -bash: alias: -alh: 未找到

    [root@localhost dev]# ls
    [root@localhost dev]# \ls     //就想使用原来的命令,在命令前加转义符\

    [root@localhost dev]# unalias myvim   //删除别名
    [root@localhost dev]# myvim
    bash: myvim: 未找到命令...    

永久修改

  • 在/etc/.bashrc 会影响全部

  • /root/.bashrc只影响当前用户

永久修改

  • 在/etc/.bashrc 会影响全部

  • /root/.bashrc只影响当前用户

du

统计目录或文件所占磁盘空间大小

du [选项] [文件或目录… ]

选项 说明
-a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录(包括隐藏文件)
-h 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n 最大显示到第n层 (-d n)
--exclude 排除某些文件后,显示剩余大小

[root@localhost etc]#du -d1   //只显示etc目录下的第一层

注意:

  • -a -s无法同时使用。
  • du显示的是文件占磁盘大小,不是文件的实际大小。
  • 每个磁盘分块,每块(4K)只能存一个文件,当文件不足4K时,du统计也会按4K计算。
  • 创建

  • 文件名最长255个字节
  • 包括路径在内文件名称最长4095个字节
  • 除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用

创建目录 mkdir

mkdir -p 递归创建 没有文件夹 会自动递归创建
mkdir [选项] 目录位置及名称…

[root@localhost data]# mkdir e d f g //创建多个目录
[root@localhost data]# ls e d f g

[root@localhost data]# mkdir -p eee/ddd/fff   //递归创建目录
[root@localhost data]# ls
e eee ffff
[root@localhost data]# tree //以树状图形式列出目录的内容,显示出文件目录结构
.
├── e 
├── eee
│   └── ddd
│       └── ffff
├── g
├── f
└── g
[root@localhost data]# mkdir `date` //创建含有当天日期、时间的目录
[root@localhost data]# ls 07月 15:26:53 24日 2022年 CST 星期日

创建文件 touch

  • touch 新文件…(可为空)

  • touch 不会破坏已有文件 刷新时间

每个文件有三个时间戳:

  • access time 访问时间,atime,读取文件内容

  • modify time 修改时间,mtime,改变文件内容(数据)

  • change time 改变时间,ctime,元数据发生改变(文件大小、权限等属性)

[root@localhost data]# touch 1 2 3   //创建新文件,或空的新文件
[root@localhost data]# ls 1  2  3
[root@localhost data]# echo "" > 4   //创建4的空文件 [root@localhost data]# ls
1  2  3  4


[root@localhost bin]# stat /etc/passwd   //查看三种时间
文件:"/etc/passwd"
大小:2337     块:8         IO 块:4096   普通文件
设备:fd00h/64768d Inode:9381005     硬链接:1
权限:(0644/-rw-r--r--) Uid:(    0/   root)   Gid:(    0/   root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-28 22:53:51.539000016 +0800
最近更改:2021-08-27 16:48:55.881739056 +0800
最近改动:2021-08-27 16:48:55.881739056 +0800

[root@localhost bin]# touch /etc/passwd //刷新三种时间
[root@localhost bin]# stat /etc/passwd
文件:"/etc/passwd"
大小:2337     块:8         IO 块:4096   普通文件
设备:fd00h/64768d Inode:9381005     硬链接:1
权限:(0644/-rw-r--r--) Uid:(    0/   root)   Gid:(    0/   root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-29 01:43:01.305128380 +0800
最近更改:2021-08-29 01:43:01.305128380 +0800
最近改动:2021-08-29 01:43:01.305128380 +0800
创建时间:-

ln(硬连接与软连接文件)

硬链接

同一个文件取不同的名或者叫多个名字(比如 苏轼 字子瞻 号东坡居士 苏二 谥号文忠 )不支持文 件夹,创建一个连接数加一,多路径访问。

注意:

  • 硬链接只能对已存在的文件进行创建 。
  • 不支持给目录创建硬链接;
  • 不支持跨分区创建硬链接。
  • 硬链接文件不占用存储空间。
  • 修改源文件或者目标文件,对应另外一个文件也会发生相应修改。
  • 删除源文件或者目标文件,对另外一个文件没有影响。

软链接

软链接又叫符号链接,这个文件包含了另一个文件的路径名。 可以是任意文件或目录,可以链接不同文件系统的文件。

注意:

  • 可对不存在的文件或目录创建软链接,可交叉文件系统。

  • 删除源文件无法访问,再新建同名文件后依然可以访问。

对比:

 

 

对比项 硬链接 软链接
本质 本质是同一个文件 本质不是同一个文件
inode 和源文件相同 和源文件不同
链接数 创建新的硬链接,链接数会增加;删除硬链接,链接数减少 删除新建不会改变
目录 不支持 支持
删除源文件 只是链接数减一,但链接文件的访问不受影响 无法访问链接文件
文件类型 和源文件相同 链接文件,和源文件无关
文件大小 和源文件相同 源文件的路径的长度

创建

  • ln 源文件 目标文件:创建硬链接文件
  • ln -s 源文件 目标文件:创建软连接文件

硬链接:

[root@localhost data]# ln /data/f1.txt /data/f11.txt                //给文件创建硬链接
[root@localhost data]# ls
f1.txt f11.txt

[root@localhost data]# ln /data/f1.txt /boot/f111.txt          //不能跨分区创建硬链接
ln: 无法创建硬链接"/boot/f111.txt" => "/data/f1.txt": 无效的跨设备连接

[root@localhost tmp]# ln /tmp/ceshi ceshi01           //不支持给目录创建硬链接
ln: "/tmp/ceshi": 不允许将硬链接指向目录

软链接:

[root@localhost test]# ln -s file1.txt soft.txt //给文件创建软链接
[root@localhost test]# ls
file1.txt soft.txt

[root@localhost test]# ln -s /tmp/dir01 dir02 //给目录创建软链接
[root@localhost test]# ls
file1.txt soft.txt dir02

[root@localhost lianjie2]# find file99.txt
find: ‘file99.txt’: 没有那个文件或目录
[root@localhost lianjie2]# ln -s file99.txt soft99.txt   //可对不存在的文件或目录创建软链接
[root@localhost lianjie2]# ls
file1 file2 hard.txt soft1 soft99.txt soft.txt

 

 

友情提示:使用前请三思哦!

 

posted @ 2022-09-19 15:59  风夏呀  阅读(715)  评论(0)    收藏  举报