Linux进阶命令
Linux进阶命令①
1查看切换显示统计目录
1.pwd(print work directory)
[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
2.cd
[root@localhost ~]# cd /etc/
[root@localhost etc]#
[root@localhost ~]# cd
[root@localhost ~]#
[root@localhost ~]# cd ~
[root@localhost ~]#
家目录:存放用户个性化配置文件的地方
命令 | 效果 |
---|---|
cd cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd - | 到前一次目录 |
一个点号“.”开头(自己) | 表示以当前的工作目录作为起点(已点开头的是) |
两个点号“..”开头(上一级) | 表示以当前目录的上一级目录(父目录)作为起点 |
“~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
"."开头文件 | 表示隐藏文件 |
~ky18 (有个用户叫ky18 家目录为起点) | 表示以指定用户的宿主目录作为起点 |
— rw-r--r--. 1 root root 474 6月 27 11:33 dm.sh
— 普通类型
l 连接
b 磁盘
c 字符文件
d 目录
s 套接字
p 管道
3.ls
生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)
查看当前文件或目录
ls [选项] [文件或目录… ]
-
-l 已长格式显示文件和目录列表 ll=ls -l
-
-a 显示全部包括隐藏文件
-
-A 显示全部文件或隐藏文件,但不包括 . 和..
-
-d 仅列出目录本身,而不是列出目录内的文件数据
-
-h 友好显示文件大小(human,人性化)
-
-R 递归显示该目录及该目录的子目录下的所有内容
-
-t 已时间顺序显示
-
-r 倒序显示
-
--color 显示颜色
颜色表示的文件类型:
- 黑色数据文件 普通文件
- 绿色 可执行文件
- 黄色 块设备文件硬件设备(硬盘)
- 红色 压缩包
- 蓝色 文件夹
- 天蓝色 连接文件(快捷方式)
-
-S 以文件容量大小排序
4 .通配符
去匹配文件名(包括文件夹)ls
符号 | 效果 |
---|---|
? | 匹配一个字符 f?.txt |
* | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
1到10 | |
a b c ...z | |
A B C .....Z | |
[123]([此处括号里值代表一个字符]) | 取其中之一有就显示没有也无所谓 |
[a-z]单个小写字母 | 范围需要注意 |
[0-9]单个数字 | 匹配数字范围(0123456789) |
\ | 转义符,表示原来的意思 |
[[:lower:]] | 小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^zhou] | 匹配列表中的所有字符以外的字符 |
[[:digit:]] | 任意数字,相当于0-9 |
[[:alpha:]] | 任意字母 |
5.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: 未找到命令...
6.du(disk usage)
查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K, 不满4K 按4k算。
du [选项] [文件或目录… ]
选项 | 说明 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s(--summarize) | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
--max-depth=n (-d 1) | 最大显示到第n层 |
--exclude | 不计入统计 |
注意a s无法同时使用
2 创建文件夹
-
文件名最长255个字节
-
包括路径在内文件名称最长4095
-
除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用。
1 .创建目录mkdir make directories
mkdir -p 递归创建 没有文件夹 会自动递归创建
mkdir [选项] 目录位置及名称…
[root@localhost data]# mkdir a b c d
#创建多个文件夹
[root@localhost data]# ls
a b c d
[root@localhost data]# mkdir -p aaa/bbb/cccc
# 递归创建文件夹
[root@localhost data]# ls
a aaa b c d
[root@localhost data]# tree
.
├── a
├── aaa
│ └── bbb
│ └── cccc
├── b
├── c
└── d
mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
#一次建立多个文件
touch
- touch 新文件…(可为空) 文件名 不存在就是新建空文件
- touch 不会破坏已有文件 刷新时间
2 .硬连接与软连接文件
硬连接: 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问。
软连接 : 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件(路径使用绝对路径)
ln 源文件或目录… 链接文件或目标位置(硬链接)
[-s] 加s是软连接
例子
ln -s 绝对路径的源文件 软连接位置
ln 绝对路径源文件 硬连接位置
符号连接
对比项 | 硬链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
硬链接:
[root@localhost data]# mkdir /data
[root@localhost data]# cd /data
[root@localhost data]# cp /etc/passwd /data/f1.txt
[root@localhost data]# ls
f1.txt
[root@localhost data]# ln /data/f1.txt /data/f11.txt
#建立硬连接
#不能跨分区建立连接 无法对文件夹创建
[root@localhost data]# ln /data/f1.txt /boot/f111.txt
ln: 无法创建硬链接"/boot/f111.txt" => "/data/f1.txt": 无效的跨设备连接
#删除硬链接可以继续访问硬链接。
#为什么文件夹的连接数是2?
#.也是名字..也是
软链接:
删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
总用量 8
lrwxrwxrwx. 1 root root 6 8月 26 22:17 f1111.txt -> f1.txt
-rw-r--r--. 3 root root 66 8月 26 21:45 f111.txt
-rw-r--r--. 1 root root 2573 8月 26 11:55 passwd
会认为f1111.txt 与f1.txt在同一目录
################实际运用####################
软件版本升级迭代
开发出 app1.0 做软连接 app
如果有 app2.0 就把 软连接app删除 新建app2.0的软连接app
$PATH 以后自行安装软件 系统不会自行 识别 httpd mysql ls
1将程序文件 放入$PATH 路径 usr/bin
2做软连接 $PATH
3修改$PATH 路径
3 . 复制
cp(copy)备份
- cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为
- cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹
选项 | 说明 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,差异备份(只对文件夹起作用) |
[zhangsan@localhost ~]$ ll
#张三用户新建文件
总用量 0
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 29 11:17 zhansan
[root@localhost zhangsan]# cp -a zhansan /data/
#保留所有权限 包括软连接文件
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 8月 29 11:06 1
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 29 11:17 zhansan
[root@localhost data]# cp -r /etc/ /opt/
#复制文件夹要加 -r 不加不让复制
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#变成 etc.bak 的子目录
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#会问你要不要覆盖,cp是别名 加\cp 直接覆盖
[root@localhost data]# cp /etc/passwd /etc/shadow /opt
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f111.txt
#复制多个文件必须要是目录,不能是文件,且目录要存在。
cp: 目标"/opt/f111.txt"