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
友情提示:使用前请三思哦!