Linux基础命令

本文详细介绍了Linux命令行中的别名设置、目录及文件占用统计、创建新目录和空文件、更新文件时间戳、软硬链接的区别与创建、文件及目录的复制、删除和移动,以及查找命令的使用。内容涵盖了常用命令的选项和应用场景,是Linux系统管理的基础教程。
摘要由CSDN通过智能技术生成

设置别名

作用

通过别名机制可以简化我们常用的一些比较长的命令

代码

  • alias 命令别名=‘命令’

注意事项:=号两边不能有空格

  1. 设置别名
[root@localhost ~]# alias myls='ls-alh'
  1. 检查
[root@localhost ~]# type myls
myls 是 `ls-alh' 的别名
  1. 删除别名
[root@localhost ~]# unalias myls

统计目录及文件占用

作用

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

代码

  • du [选项] [文件或者目录]

常用的几个选项

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

注意事项:-a和-s不能同时使用

  • -a表示磁盘内所有文件
[root@localhost ~]# du -a
4	./.bash_logout
4	./.bash_profile
4	./.bashrc
4	./.cshrc
4	./.tcshrc
4	./anaconda-ks.cfg
4	./.cache/dconf/user
4	./.cache/dconf
4	./.cache/imsettings/log
4	./.cache/imsettings
0	./.cache/evolution/addressbook/trash
0	./.cache/evolution/addressbook
0	./.cache/evolution/calendar/trash
0	./.cache/evolution/calendar
0	./.cache/evolution/mail/trash
0	./.cache/evolution/mail
0	./.cache/evolution/memos/trash
0	./.cache/evolution/memos
........
  • -s表示总大小
[root@localhost ~]# du -s
4252	.
  • -h显示大小,默认单位是KB
[root@localhost ~]# du -h
4.0K	./.cache/dconf
4.0K	./.cache/imsettings
0	./.cache/evolution/addressbook/trash
........
  • 组合使用
[root@localhost ~]# du -s -h
4.2M	.
  • du - -max-depeth=1 -h

第一层文件大小,配合-h使用

[root@localhost /]# du --max-depth=1 -h
126M	./boot
0	./dev
12K	./home
du: 无法访问"./proc/42988/task/42988/fd/4": 没有那个文件或目录
du: 无法访问"./proc/42988/task/42988/fdinfo/4": 没有那个文件或目录
du: 无法访问"./proc/42988/fd/4": 没有那个文件或目录
du: 无法访问"./proc/42988/fdinfo/4": 没有那个文件或目录
0	./proc
9.2M	./run
0	./sys
37M	./etc
4.2M	./root
121M	./var
52K	./tmp
3.3G	./usr
0	./media
0	./mnt
0	./opt
0	./srv
0	./222.txt
0	./222
3.6G	.

创建新目录

代码

mkdir[选项]目录位置及名称
-p:一次性创建嵌套的多层目录

  • 创建一个ccc的目录
[root@localhost /]# mkdir ccc
[root@localhost /]# ls
ccc  etc   lib    media  opt   root  sbin  sys  usr
boot  dev  home  lib64  mnt    proc  run   srv   tmp  var
  • 创建目录/aa,在此目录下创建/bb,在/bb目录下创建/cc
[root@localhost /]# mkdir -p /aa/bb/cc

创建空文件

作用

更新文件的时间标记

  • 更新 “4月 7 2021 anaconda-ks.cfg”改文件
[root@localhost ~]# ll
总用量 8
drwxr-xr-x. 2 root root    6 4月   7 13:51 111.txt
-rw-r--r--. 1 root root    0 4月   7 13:55 123.txt
drwxr-xr-x. 3 root root   16 4月   7 15:11 aa
-rw-r--r--. 1 root root    0 4月   7 13:56 aa.txt
-rw-------. 1 root root 1933 4月   7 2021 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 4月   7 13:56 bb.txt
drwxr-xr-x. 2 root root    6 4月   7 15:08 ccc
-rw-r--r--. 1 root root    0 4月   7 13:56 cc.txt
-rw-r--r--. 1 root root 1964 4月   7 15:21 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 4月   7 2021 公共
drwxr-xr-x. 2 root root    6 4月   7 2021 模板
drwxr-xr-x. 2 root root    6 4月   7 2021 视频
drwxr-xr-x. 2 root root    6 4月   7 2021 图片
drwxr-xr-x. 2 root root    6 4月   7 2021 文档
drwxr-xr-x. 2 root root    6 4月   7 2021 下载
drwxr-xr-x. 2 root root    6 4月   7 2021 音乐
drwxr-xr-x. 2 root root    6 4月   7 2021 桌面

  • 日期已更新
[root@localhost ~]# touch anaconda-ks.cfg
[root@localhost ~]# ll
总用量 8
drwxr-xr-x. 2 root root    6 4月   7 13:51 111.txt
-rw-r--r--. 1 root root    0 4月   7 13:55 123.txt
drwxr-xr-x. 3 root root   16 4月   7 15:11 aa
-rw-r--r--. 1 root root    0 4月   7 13:56 aa.txt
-rw-------. 1 root root 1933 4月   7 15:23 anaconda-ks.cfg

常用于创建多个新的空文件

  • 代码:
    touch aa bb
    touch {a,b}.txt
[root@localhost ~]# touch aa.txt
[root@localhost ~]# touch {aa,bb,cc}.txt

创建链接文件

作用

为文件或目录建立链接文件,类似于Windows系统的快捷方式

类型

  • 软链接(又称符号链接)
  • 硬链接

ln代表创建,加上-s就是软链接,不加就是硬链接
创建软链接的时候,源文件一定要用绝对路径表示

对比

在这里插入图片描述

  • 当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名
  • 但是删除一个文件名,不影响别的文件名的访问
  • 删除一个文件名,只会使得"硬链接数"减1
  • 需要注意的是不能对目录做硬链接。在日常工作中几乎不会建立文件的硬链接。

代码

软链接

[root@localhost ~]# ln -s 1.txt a.txt
lrwxrwxrwx. 1 root root    5 4月   7 16:10 a.txt -> 1.txt
  • 在源文件1.txt内编辑内容
[root@localhost ~]# vi 1.txt
  • 查看源文件内容
[root@localhost ~]# cat 1.txt
123456
654322
  • 查看链接文件内容
[root@localhost ~]# cat a.txt
123456
654322
  • 此时我们编辑a.txt内容
[root@localhost ~]# cat a.txt
123456
654322
abcd
dcba
  • 查看1.txt内容
[root@localhost ~]# cat 1.txt
123456
654322
abcd
dcba
  • 继续创建一个abc.txt文件与1.txt链接
[root@localhost ~]# ln -s 1.txt abc.txt
  • 查看abc.txt
[root@localhost ~]# cat abc.txt
123456
654322
abcd
dcba
  • 将abc.txt移动至上层目录
[root@localhost ~]# mv abc.txt ../
  • 查看abc.txt
lrwxrwxrwx.   1 root root    5 4月   7 16:22 abc.txt -> 1.txt
[root@localhost /]# cat abc.txt
cat: abc.txt: 没有那个文件或目录

文件虽然还是和1.txt链接,但是状态已经变红,并且无法查询到

  • 在根目录下创建一个1.txt
[root@localhost /]# touch 1.txt
  • 查看
[root@localhost /]# cat 1.txt
[root@localhost /]# 

总结:在同一目录下,互相链接成功后可以相互修改内容,一旦文件被移动至其他目录时,软链接因为没有使用的是绝对路径,所以内容无法被复制到其他目录,虽然链接方式还存在,但是里面已经不是原先的链接文件了

  • 在根目录下创建绝对路径链接
[root@localhost /]# ln -s /root/1.txt 100.txt
  • 查看100.txt
[root@localhost /]# cat 100.txt
123456
654322
abcd
dcba

设置绝对链接后,即使在其他目录下,依旧能和1.txt进行链接

  • 移动100.txt至其他目录
[root@localhost /]# mv 100.txt /opt
  • 检查
[root@localhost /]# cd /opt
[root@localhost opt]# ls
100.txt  aa  rh                            ###100.txt移动至opt内
[root@localhost opt]# cat 100.txt          ###查看
123456
654322
abcd
dcba

总结:设置绝对路径后,无论怎么移动,链接始终保持为与源文件1.txt链接

硬链接

  • 设置链接2.txt
[root@localhost ~]# ln /root/1.txt 2.txt
  • 删除1.txt
[root@localhost ~]# rm -rf 1.txt
  • 查看2.txt
[root@localhost ~]# cat 2.txt
123456
654322
abcd
dcba
  • 链接3.txt 4.txt
[root@localhost ~]# ln /root/2.txt 3.txt
[root@localhost ~]# ln /root/2.txt 4.txt
[root@localhost ~]# ll
总用量 16
-rw-r--r--. 3 root root   24 4月   7 16:21 2.txt
-rw-r--r--. 3 root root   24 4月   7 16:21 3.txt
-rw-r--r--. 3 root root   24 4月   7 16:21 4.txt
lrwxrwxrwx. 1 root root    5 4月   7 16:10 a.txt -> 1.txt
  • 编辑3.txt
[root@localhost ~]# vi 3.txt
  • 查看2.txt 4.txt
[root@localhost ~]# cat 2.txt
123456
654322
abcd
dcba
33333333
[root@localhost ~]# cat 4.txt
123456
654322
abcd
dcba
33333333

总结:硬链接设置后,无论删除或者修改,所有链接的文件都能同步进行

  • 删除2.txt 3.txt
[root@localhost ~]# rm -rf 3.txt
[root@localhost ~]# rm -rf 2.txt
  • 查看4.txt
[root@localhost ~]# cat 4.txt
123456
654322
abcd
dcba
33333333
  • 链接5.txt,删除4.txt
[root@localhost ~]# ln /root/4.txt 5.txt
[root@localhost ~]# rm -rf 4.txt
  • 查看
[root@localhost ~]# cat 5.txt
123456
654321
abcd
dcba
3333333

总结:硬链接不论怎么连接删除,数据都能保存下来

复制文件或目录

常用选项

  • -f:覆盖目标同名文件或目录时不进行提醒,而直接强制复制
  • -i:覆盖目标同名文件或目录时提醒用户确认
  • -p:复制时保持源文件的权限、属主及时间标记等属性不变
  • -r:复制目录时必须使用此选项,表示递归复制所有文件及子目录

注:复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在

CP默认是加入-i指令的

[root@localhost ~]# type cp
cp 是 `cp -i' 的别名

代码

  • 复制文件
[root@localhost ~]# cp 1.txt abc/1.txt    ###将目录下1.txt文件复制到abc/目录下
cp:是否覆盖"abc/1.txt"? y                 ###默认-i指令
[root@localhost ~]# cd abc/
[root@localhost abc]# cat 1.txt           ###查看
222333
  • 复制目录
[root@localhost ~]# cp -r abc /opt/           ###复制目录进opt内
[root@localhost ~]# cd /opt                   ###进入opt
[root@localhost opt]# ls
100.txt  aa  abc  rh
[root@localhost opt]# cd abc/                 ###进入abc
[root@localhost abc]# ls
1.txt
[root@localhost abc]# cat 1.txt               ###查看1.txt
222333
  • -p
[root@localhost ~]# ll -a
总用量 48
.....                                                ###省略不复制的内容
-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc   ###复制该条信息
.....
[root@localhost ~]# cp -p .bashrc /opt/1234          ###复制进opt内,并改名1234
[root@localhost ~]# cd /opt
[root@localhost opt]# ll -a
总用量 4
....
-rw-r--r--.  1 root root 176 12月 29 2013 1234       ###除名字外,其他信息全部没变
....
[root@localhost opt]#

删除文件或目录

作用

删除指定的文件或者目录

常用选项

  • -f:删除文件或目录时不进行提醒,而直接强制删除
  • -i:删除文件或目录时提醒用户确认。(y表示删除, n表示不删除)
  • -r:删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)

注意:不要直接删除系统中已有的目录或配置文件,以避免出现意外故障

默认指令带有-i

[root@localhost ~]# type rm
rm 是 `rm -i' 的别名

代码

  • -i
[root@localhost ~]# cd /opt         ###进入opt
[root@localhost opt]# ls            ###查看
100.txt  1234  aa  abc  rh
[root@localhost opt]# rm 1234       ###删除1234
rm:是否删除普通文件 "1234"?y
[root@localhost opt]# ls 
100.txt  aa  abc  rh                ###已删除
[root@localhost opt]# 

  • -r
[root@localhost aa]# cd /opt            ###进入opt
[root@localhost opt]# ls
100.txt  aa  abc  rh
[root@localhost opt]# rm -r aa/         ###删除aa目录
rm:是否进入目录"aa/"? y                  ###询问是否进入aa
rm:是否进入目录"aa/bb"? y                ###是否进入bb
rm:是否删除目录 "aa/bb/cc"?y            ###是否删除文件cc   
rm:是否删除目录 "aa/bb"?y               ###依次删除
rm:是否删除目录 "aa/"?y
[root@localhost opt]# ls               ###查看
100.txt  abc  rh
[root@localhost opt]# 

移动文件或目录

作用

  • 将指定的文件或者目录转移位置
  • 如果目标位置与源位置相同,则相当于执行重命名操作

mv命令只能对单个文件重命名,可使用rename命令批量修改文件名

  • rename 旧字符 新字符 目标文件
    例: rename jpg gif *.jpg

代码

  • 移动不改变信息
[root@localhost ~]# ls
1.txt  abc  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost ~]# mv 1.txt /opt/         ###移动1.txt到opt内
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
100.txt  1.txt  abc  rh                    ###无改变转移过来

  • 移动改名
[root@localhost ~]# ls
222.txt  abc  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost ~]# mv 222.txt /opt/333.txt          ###将222改名333
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
100.txt  1.txt  333.txt  abc  rh                     ###改名转移过来
[root@localhost opt]# 
  • 不移动改名
[root@localhost opt]# ls
100.txt  1.txt  333.txt  abc  rh
[root@localhost opt]# mv 333.txt 444.txt         ###不移动文件,使得333改名444
[root@localhost opt]# ls
100.txt  1.txt  444.txt  abc  rh
[root@localhost opt]# 

查找命令文件存放目录

  • 搜索范围由变量PATH决定(echo $PATH)
  • 使用which查找内部命令时,将找不到对应的程序

代码

  • 查看命令位置
[root@localhost opt]# which ls       ##查看ls位置
alias ls='ls --color=auto'
	/usr/bin/ls
[root@localhost opt]# 
  • 分辨命令是内部还是外部
[root@localhost ~]# which txt
/usr/bin/which: no txt in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)            ###找不到对应程序的为内部命令
[root@localhost ~]# which rm
alias rm='rm -i'
	/usr/bin/rm

查找文件或目录

作用

采用递归方式,根据目标的名称、类型、大小等不同属性进行精确查找

  • find [查找范围] [查找条件表达式]
    • 查找范围:查找文件或子目录的目录位置
    • 查找条件表达式:查找条件类型

常用查找条件类型

在这里插入图片描述

各表达式之间使用逻辑运算符

  • “-a” 表示 而且(and)
  • “-o” 表示 或者(or)

代码

  • -type f
[root@localhost boot]# find /boot/ -type f        ###搜索boot下所有的普通文件
/boot/grub2/device.map
/boot/grub2/i386-pc/gcry_rmd160.mod
/boot/grub2/i386-pc/acpi.mod
/boot/grub2/i386-pc/gcry_rsa.mod
/boot/grub2/i386-pc/adler32.mod
/boot/grub2/i386-pc/gcry_seed.mod
/boot/grub2/i386-pc/affs.mod
/boot/grub2/i386-pc/gcry_serpent.mod
.......
  • -name *
[root@localhost boot]# find ./ -name "vm*"          ###查找根目录下文件名称是vm开头的文件
./vmlinuz-3.10.0-693.el7.x86_64
./vmlinuz-0-rescue-54acb63e3efc4724b810aac9ce025cef
[root@localhost boot]# 

  • -size +
[root@localhost boot]# find ./ -size +10M     ###查找根目录下大于10M的文件
./initramfs-0-rescue-54acb63e3efc4724b810aac9ce025cef.img
./initramfs-3.10.0-693.el7.x86_64.img

  • 联合使用
    -name -size

查找img文件并且要小于10M

[root@localhost boot]# find ./ -name "*.img" -a -size -10M 
./grub2/i386-pc/core.img
./grub2/i386-pc/boot.img

exec用法

  • -exec参数后面跟的是Linux命令,它是以分号“;"为结束标志,由于各个系统中分号会有不同的意义,因此在分号前面加上反斜杠转义符“\”

    • {}代表前面find查找出来的文件名
  • find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用Is -|命令将它们列出

    • find ./ -type f -exec Is -I {} \;

代码

  • 查找大于10M的文件或者vm开头文件
[root@localhost boot]# find ./ -size +10M -o -name "vm*" -exec ls -l {} \;
-rwxr-xr-x. 1 root root 5877760 8月  23 2017 ./vmlinuz-3.10.0-693.el7.x86_64
-rwxr-xr-x. 1 root root 5877760 4月   7 19:55 ./vmlinuz-0-rescue-54acb63e3efc4724b810aac9ce025cef

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值