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)备份

  1. cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为
  2. 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" 



posted @ 2024-03-28 18:32  红荼  阅读(9)  评论(0编辑  收藏  举报