Linux基本命令

265 阅读10分钟

1. 帮助命令

1.1 help

  • 查看内部命令的帮助

格式:help + 内部命令

image.png

  • 查看外部命令的帮助

格式:外部命令 + --help

image.png

1.2 man

  • man分九个章节默认打开第一章节(menu菜单 manual手册)

image.png

2. 查看切换显示目录

2.1 pwd(print work directory)

[root@localhost ~]#pwd  ##查询目录路径
/root

2.2 cd (change directory)

选项说明
cd  cd ~若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd -到前一次目录
cd .表示以当前的工作目录作为起点
cd ..表示以当前目录的上一级目录(父目录)作为起点
cd ~表示以指定用户的宿主目录(家目录)作为起点
相对路径:以当前的工作目录作为起点
绝对路径:以根目录为起点

3. ls

3.1 ls的选项

格式:ls [选项] [文件或目录… ]

选项说明
-l以长式显示文件和目录列表 ll=ls -l
-a显示全部包括隐藏文件
-A显示全部文件或隐藏文件,但不包括 . 和..
-d仅列出目录本身,而不是列出目录内的文件数据
-h友好显示文件大小(human,人性化)
-R递归显示该目录及该目录的子目录下的所有内容
--color显示颜色
-S以文件容量大小排序

3.2  ll

[root@localhost mnt]# ll
    总用量 0
    drwxr-xr-x 2 root root 6 7月  21 15:13 aa

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

 

文件类型

image.png

- 普通文件

d 目录文件directory

l 符号链接文件link

b 块设备block 比如直接读1块 /dev 4k   (512*8(扇区)=4096字节=4k)

c 字符设备character 一个字符一个字符读取/dev/zero (/dev/null)

p 管道文件pipe 两个软件联系 A-管道文件-B AB 读 单向的

s 套接字文件socket 可以双向的
  • ls一般不单独使用

    • 功能有限 要加上选项
    • ls单独使用 显示当前文件夹下的所有文件
  • ls会配合通配符去过滤需要的文件

3.2.1 通配符

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

简要举例: 、*、{1..10}

[root@localhost ~]#touch fff.txt  ##创建fff.txt
[root@localhost ~]#ls f?.txt  ##查询f后一个字符匹配的文件
ls: 无法访问f?.txt: 没有那个文件或目录
[root@localhost ~]#ls  ##查看当前目录的文件
aa  anaconda-ks.cfg  a.txt  fff.txt
[root@localhost ~]#ls f??.txt  ##查询f后两个字符匹配的文件
fff.txt
[root@localhost ~]#ls *.txt
a.txt  fff.txt
[root@localhost ~]#touch {1..10}.txt  ##创建名字1-10的txt文件
[root@localhost ~]#ls {1..10}.txt ##查询名字1-10的txt文件
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

4. alias(临时修改)

4.1 alias

alias 命令别名 = ‘命令’
[root@localhost ~]#alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'  ##创建别名
[root@localhost ~]#myvim  ##使用别名
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=efd7568d-1edb-4fa5-a50e-14f71303df83
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.100
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=8.8.8.8
DNS2=114.114.114.114

4.2 unalias

unalias 别名命令 删除别名
[root@localhost ~]#unalias myvim  ##删除别名
[root@localhost ~]#myvim
-bash: myvim: 未找到命令

4.3 命令优先级别

别名>内部>hash>外部

5. du

du(disk use) 查看文件或目录 占用磁盘的空间大小

选项说明
-a分开显示每个文件的大小
-s显示当前文件夹的 总大小
-h人性化显示

5.1 du和ls的区别

  • du  只是统计文件所占磁盘的大小
  • ls  显示文件实际大小   

5.2  a和s不能同时使用

[root@localhost ~]#du -as
du: 不能既显示总用量,同时又显示每个项目
Try 'du --help' for more information.

5.3  /etc 目录 下 第一层文件夹占用多少磁盘空间?

 du   -d 1  /etc     
 -d   代表目录层数     
  1   代表目录层数的第一层

答案

[root@localhost ~]#du -d 1 /etc/
948     /etc/pki
12      /etc/rpm
40      /etc/yum.repos.d
24      /etc/yum
136     /etc/lvm
0       /etc/pkcs11
0       /etc/cron.monthly
4       /etc/rwtab.d
12      /etc/cron.daily
4       /etc/sasl2
8       /etc/groff
36      /etc/iproute2
72      /etc/grub.d
28      /etc/logrotate.d
68      /etc/openldap
0       /etc/gnupg
8       /etc/dhcp
604     /etc/ssh
4       /etc/depmod.d
4       /etc/my.cnf.d
96      /etc/dbus-1
0       /etc/dracut.conf.d
12      /etc/modprobe.d
0       /etc/binfmt.d
64      /etc/profile.d
0       /etc/modules-load.d
32      /etc/systemd
0       /etc/sysctl.d
4       /etc/rsyslog.d
4       /etc/X11
4       /etc/bash_completion.d
0       /etc/opt
0       /etc/pm
12      /etc/skel
340     /etc/sysconfig
0       /etc/xdg

 

6. mkdir

mkdir (创建空文件夹)

命令格式:mkdir [选项] 需要创建的文件夹
-p  递归创建文件夹
-v  显示详细过程
[root@localhost data]#mkdir a  ##创建一个名叫a的文件夹
[root@localhost data]#ls  ##查看当前目录的文件
a
[root@localhost data]#mkdir -p aa/bb/cc  ##在当前目录下创建aa/bb/cc三层文件夹
[root@localhost data]#tree  ##查看目录分层
.
├── a
└── aa
    └── bb
        └── cc

4 directories, 0 files
[root@localhost data]#mkdir -pv 11/22/33  ##创建分层目录并显示过程
mkdir: 已创建目录 "11"  
mkdir: 已创建目录 "11/22"
mkdir: 已创建目录 "11/22/33"

7. touch

命令格式:touch  需要创建的文件
如果当前文件夹下没有同名的文件,touch   文件名   ##新建一个文件
[root@localhost opt]#touch 1.txt  ##创建1.txt文件
[root@localhost opt]#ls  ##查看当前目录下的文件
1.txt
如果当前文件夹下有同名的文件 ,刷新修改此文件的时间

image.png

8. 软连接和硬连接

软连接格式:ln  -s  源文件(夹)路径    目标文件夹路径
源文件(夹)路径一定是绝对路径
对比项 硬链接软链接
本质本质是同一个文件本质不是同一个文件
inode相同不同
连接数创建新的硬链接,链接数会增加,删除硬链接,链接数减少删除,新建都不会改变
文件夹不支持支持
删除源文件只是链接数减一,但链接文件的访问不受影响无法访问连接文件 
文件类型和源文件相同链接文件,和源文件无关
文件大小和源文件相同源文件的路径的长度
查看Inode号:ls -i

9. cp

命令格式:cp [选项] 需要复制的文件(夹) 复制到的目录
-f有相同文件时强制覆盖不提醒
-i有相同文件时覆盖提醒
-p保留文件的源权限
-r    复制文件夹一定需要
-a  保留权限 更强大 包括连接文件的属性也可以保留建议使用-a  

  image.png

10. mv

命令格式:mv [选项] 需要移动的文件(夹) 移动到的目录
功能:移动和改名
选项说明
-f强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
-n如果目标文件已经存在,则不会覆盖移动,而且不询问用户
-v显示文件或目录的移动过程;

 

[root@localhost opt]#mv /data/ ./dat  ##移动data到当前目录下并改名
[root@localhost opt]#ls  ##查看当前目录下的文件
1.txt  dat

11. rm

命令格式:rm [选项] 要删除的文件或目录
选项说明
-f强制
-i交互
-r递归(删除目录需要)
[root@localhost opt]#ls  /*查看当前目录*/
1.txt  dat
[root@localhost opt]#rm -rf /opt/*  ##强制删除opt目录下的所有文件
[root@localhost opt]#ls  ##查看当前目录
[root@localhost opt]#

12. 查询命令

12.1 which

命令格式:which 需要找的东西

只能找命令的位置:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~]#which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
        /usr/bin/alias
        /usr/bin/which

12.2 locate

工作特点

1.模糊查询
2.不是实时查询
选项说明
-i不区分大小写的搜索
-n#只列举前#个匹配项目
-r支持正则
linux系统中有一个文件数据库,是去找这个数据库,找那些一直不改变的文件
应用范围比较窄
优点:巨快
updatedb  刷新数据库   

 

12.3 find

优点:

  • 默认递归查询

  • 它是真的去硬盘上一个一个文件给你找(实时)

  • 查找条件巨多

  • 精确查找

      基本格式:
           find    [查找范围]    [查找条件表达式]
           [查找范围]: 如果 不写 范围 代表 默认当前目录
    

按查找文件名字查找 -name

[root@localhost data]#find /boot/  -name  'vm*  ##查找名字是以vm开头的文件'     
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/vmlinuz-0-rescue-869dbd607e5e4f758fa152ef2229f2b6

按文件大小查找文件 -size

[root@localhost data]#find /boot/  -size  +1024k  #查找boot目录下  大于1024k 的文件
[root@localhost data]#find /boot/  -size  -1M   #查找boot目录下  小于1M的文件

注意点:文件大小不加加减号是一定的范围,单位越精确越好

[root@localhost data]#find   /boot/  -size  1024k   
[root@localhost data]#find   /boot/  -size  1M            

范围公式:

1024k     1023k    到   1024k
 1M       1字节    到    1M

 

按文件属主查找 -user

属主:文件的拥有者

[root@localhost data]#find /home/ -user can  #找到home 目录下 属于can用户的文件

  按文件类型查找 -type

选项说明
f普通文件
d目录
c字符文件
b块设备
[root@localhost data]#find /dev/ -type b  #找到/dev下的块设备文件

按照 indoe号查找 -inum 

[root@localhost mnt]#ls -i  ##查看inode号
100724114 1.txt     416842 aa   33596393 hgfs
[root@localhost mnt]#find -inum 100724114  ##按照inode号查询
./1.txt

  按照目录层级查找文件 -maxdepth level -mindepth level

[root@localhost ~]#find /boot/ -maxdepth 1 -mindepth 1  ##只看boot目录下的第1层
/boot/efi
/boot/grub2
/boot/grub
/boot/.vmlinuz-3.10.0-693.el7.x86_64.hmac
/boot/System.map-3.10.0-693.el7.x86_64
/boot/config-3.10.0-693.el7.x86_64
/boot/symvers-3.10.0-693.el7.x86_64.gz
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/initrd-plymouth.img
/boot/initramfs-0-rescue-8f6e7ca6206141ecb291f991a1e04432.img
/boot/vmlinuz-0-rescue-8f6e7ca6206141ecb291f991a1e04432
/boot/.vmlinuz-3.10.0-1160.71.1.el7.x86_64.hmac
/boot/System.map-3.10.0-1160.71.1.el7.x86_64
/boot/config-3.10.0-1160.71.1.el7.x86_64
/boot/symvers-3.10.0-1160.71.1.el7.x86_64.gz
/boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64
/boot/initramfs-3.10.0-693.el7.x86_64kdump.img
/boot/initramfs-3.10.0-1160.71.1.el7.x86_64.img
/boot/initramfs-3.10.0-693.el7.x86_64.img

天数查找文件 -mtime       

root@localhost ~]#find /boot/ -mtime +7 -type f -size +1M  ##找到 7天以上且文件类型为普通文件且大于1M的文件 
/boot/grub2/fonts/unicode.pf2
/boot/System.map-3.10.0-693.el7.x86_64
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/initramfs-0-rescue-8f6e7ca6206141ecb291f991a1e04432.img
/boot/vmlinuz-0-rescue-8f6e7ca6206141ecb291f991a1e04432
/boot/System.map-3.10.0-1160.71.1.el7.x86_64
/boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64

处理动作

处理动作说明
print输出屏幕让你看一下
ls      显示详细信息
delete 直接删除
ok     连接符会询问
exec  连接符不会询问
find -name "*.txt"  -ok mv {} /mnt \; ## 找到名字以txt结尾的文件并移动到mnt目录下
-ok  处理动作连接前面后面的命令会询问你要不要这样处理
mv {}  代指前面 find找到的文件 
/mnt 移动到的目录  
\;固定格式

 

find -name '*.txt' -ok  mv {}  /mnt  \;   ## 会询问
find -name '*.txt' -exec mv {} /mnt \;  ##不会询问