linux笔记

linux

1.linux目录结构和文件类型

命令的格式:命令 [选项]...... [参数]......

命令必须要写,但有些命令可以不带选项,也可以带多个选项,例如:-l --help

参数:同选项

ls命令

1.列出根目录内容
[root@localhost ~]# ls /
afs  boot  etc   lib    media  opt   root  sbin  sys  usr
bin  dev   home  lib64  mnt    proc  run   srv   tmp  var
​
2.ls常用参数:
-a:显示指定目录下所有子目录与文件,包括隐藏文件(隐藏文件.开头)
-A:与a一样,但不列出.和..(当前目录和副目录)
-l:以列表方式显示文件的详细信息
-h:配合 -l 以人性化的方式显示文件大小
-d:看当前目录(和l配合使用,查看当前目录本事的信息)
(l和a也可配合使用)
​
注意:.代表上级目录
​
3.ls -l /   长列表列出根目录下的文件信息【元数据】,最后一列为文件名
dr-xr-xr-x.   2 root root    6  8月 10  2021 afs
lrwxrwxrwx.   1 root root    7  8月 10  2021 bin -> usr/bin  #二进制文件所在的目录,命令的可执行文件所在目录
dr-xr-xr-x.   5 root root 4096  9月 12 21:13 boot  #内核(核心代码)核心文件(镜像文件,链接文件)
drwxr-xr-x.  20 root root 3400  9月 13 17:37 dev  #设备文件所在目录
drwxr-xr-x. 133 root root 8192  9月 13 17:42 etc  #配置(系统配置)文件所在目录
drwxr-xr-x.   3 root root   23  9月 12 21:14 home  #普通用户家目录
lrwxrwxrwx.   1 root root    7  8月 10  2021 lib -> usr/lib  #库文件
lrwxrwxrwx.   1 root root    9  8月 10  2021 lib64 -> usr/lib64  #库文件(64位)
drwxr-xr-x.   2 root root    6  8月 10  2021 media  #挂载点目录(系统默认)
drwxr-xr-x.   3 root root   18  9月 12 20:58 mnt  #挂载点目录(手动挂载)
drwxr-xr-x.   2 root root    6  8月 10  2021 opt  #第三方软件包所在目录
dr-xr-xr-x. 350 root root    0  9月 13 17:36 proc  #虚拟的文件系统(数据存储在内存)
dr-xr-x---.  15 root root 4096  9月 13 17:44 root  #root用户家目录
drwxr-xr-x.  45 root root 1160  9月 13 17:36 run  #程序运行文件所在目录(ssh)
lrwxrwxrwx.   1 root root    8  8月 10  2021 sbin -> usr/sbin  
drwxr-xr-x.   2 root root    6  8月 10  2021 srv  #第三方服务产生的文件所在目录
dr-xr-xr-x.  13 root root    0  9月 13 17:36 sys  #虚拟文件系统
drwxrwxrwt.  21 root root 4096  9月 13 19:37 tmp  #临时文件所在目录(例如定闹钟)
drwxr-xr-x  .  12 root root  144  9月 12 20:56 usr  #软件资源
drwxr-xr-x.  20 root root 4096  9月 12 21:12 var  #可变化数据所在目录(cat  /var/log/messages   系统日志)
​
文件类型:一切皆文件
d   目录文件
l   软链接文件--快捷方式
-   普通文件,例如文本文件,但不是所有普通文件都能查看。
b   块设备文件--存储设备(硬盘)
c   字符设备文件(键盘鼠标)
p   管道文件(同一主机不同进程间通信)
s   套接字文件(不同主机间通信)
​
用户的权限:r读 w写 x可执行
文件的所属者rwx  文件的所属组rwx  其他人rwx
​
总的来说文件结构为:
文件的类型 文件的权限 acl访问控制列表 硬链接次数 文件的所属者 文件的所属组 文件的大小(b字节) 文件的mtime修改时间 文件名
​
man手册:
例如 man ls
/ +关键字:按关键字查看命令信息

stat命令

stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。

stat命令可以查看的信息包括:

--File:显示文件名 --Size:显示文件大小 --Blocks:文件使用的数据块总数 --IO Block:IO块大小 --regular file:文件类型(常规文件) --Device:设备编号 --Inode:Inode号 --Links:链接数 --Access:文件的权限 --Gid、Uid:文件所有权的Gid和Uid --access time:表示我们最后一次访问(仅仅是访问,没有改动)文件的时间 --modify time:表示我们最后一次修改文件的时间 --change time:表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等 --Birth time : 文件创建时间,crtime,不过据查此属性linux已废弃,目前状态显示结果均为-

stat [文件或目录]
​
查看文件状态信息
[root@localhost ~]# stat /home/xuehanwen
  文件:/home/xuehanwen
  大小:4096       块:8          IO 块:4096   目录
设备:fd00h/64768d Inode:631597      硬链接:14
权限:(0700/drwx------)  Uid:( 1000/xuehanwen)   Gid:( 1000/xuehanwen)
环境:unconfined_u:object_r:user_home_dir_t:s0
最近访问:2023-09-13 18:07:33.711123885 +0800
最近更改:2023-09-12 21:20:03.174595190 +0800
最近改动:2023-09-12 21:20:03.174595190 +0800
创建时间:2023-09-12 21:14:25.968189756 +0800
​
​
stat -f:查看文件所在文件系统的状态信息
[root@localhost ~]# stat -f /home/xuehanwen
  文件:"/home/xuehanwen"
    ID:fd0000000000 文件名长度:255     类型:xfs
块大小:4096       基本块大小:4096
    块:总计:4452864    空闲:3386905    可用:3386905
Inodes: 总计:8910848    空闲:8781852
​
​
inode:硬盘的最小存储单位叫做扇区。每个扇区存储512字节,而连续的8个扇区组成了一个块(block),大小为4kb。文件数据都存储在块中,为了能够方便找到存储数据的位置我们还必须找到一个地方存储文件的属性,这种存储文具属性信息的区域叫做inode(索引节点)

2.文件管理

查看文件内容:cat、tac

cat 由第一行开始显示文件内容,tac 从最后一行开始显示

选项与参数:
-b :列出行号,空白行不标行号
-n :列出行号,连同空白行也会有行号
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-v :列出一些看不出来的特殊字符
-E :将结尾的断行字节 $ 显示出来;
-T :将 [tab] 按键以 ^I 显示出来;
​
[root@localhost ~]# cat 文档/test.txt
i love linux
i love c++
i love python
​
[root@localhost ~]# cat -b 文档/test.txt
     1  i love linux
     2  i love c++
     3  i love python
​
[root@localhost ~]# tac 文档/test.txt
i love python
i love c++
i love linux

分屏显示:more、less

[root@www ~]# more /etc/man_db.config 
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%)  <== 光标在这里等待命令
​
more运行时可以输入的命令有:
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
​
​
​
[root@www ~]# less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
:   <== 这里可以等待你输入命令!
​
less运行时可以输入的命令有:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;

2.1目录文件的管理

1、创建、删除

[root@localhost ~]# mkdir -pv /root/dir3/dir33
mkdir: 已创建目录 '/root/dir3'
mkdir: 已创建目录 '/root/dir3/dir33'
-p:如果创建文件的父目录不存在,则先创建父目录
-v:显示创建成功或失败信息
​
#同时创建多个文件
[root@localhost ~]# mkdir -pv /root/dir4 /home/dir1
mkdir: 已创建目录 '/root/dir4'
mkdir: 已创建目录 '/home/dir1'
[root@localhost ~]# mkdir -pv /{root,home}/dir6
mkdir: 已创建目录 '/root/dir6'
mkdir: 已创建目录 '/home/dir6'
[root@localhost ~]# mkdir -pv /root/dir{7,8,9}
mkdir: 已创建目录 '/root/dir7'
mkdir: 已创建目录 '/root/dir8'
mkdir: 已创建目录 '/root/dir9' 
[root@localhost ~]# mkdir -pv /root/dir{10..15}
mkdir: 已创建目录 '/root/dir10'
mkdir: 已创建目录 '/root/dir11'
mkdir: 已创建目录 '/root/dir12'
mkdir: 已创建目录 '/root/dir13'
mkdir: 已创建目录 '/root/dir14'
mkdir: 已创建目录 '/root/dir15'

2、编辑

#目录文件的内容是很多文件
可以在目录文件下面创建:目录文件mkdir,普通文件,软链接,块设备文件

3、查看内容

1.查看目录本身信息
[root@localhost ~]# ls -ld
dr-xr-x---. 27 root root 4096  9月 15 00:40 .
​
2.*表示零个或多个任意字符
[root@localhost ~]# ls -ld /root/dir*
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir10
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir11
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir12
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir13
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir14
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir15
drwxr-xr-x. 3 root root 19  9月 14 22:32 /root/dir3
drwxr-xr-x. 2 root root  6  9月 14 22:33 /root/dir4
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir6
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir7
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir8
drwxr-xr-x. 2 root root  6  9月 14 22:34 /root/dir9
​
3.查看目录的内容
[root@localhost ~]# ls -l /root/dir10
总用量 0
也可以用ll命令,是ls -l的别名
​
4.用tree查看
[root@localhost ~]# tree /root/dir3
/root/dir3
└── dir33
​

4、删除

#删除目录必须使用-r选项
不然就会发生
[root@localhost ~]# rm /root/dir3
rm: 无法删除 '/root/dir3': 是一个目录
正确的:
[root@localhost ~]# rm -r /root/dir3
rm:是否进入目录'/root/dir3'? y
rm:是否删除目录 '/root/dir3/dir33'?y
rm:是否删除目录 '/root/dir3'?y
#删除目录时会询问是否删除,此时可以使用-f选项强制删除
[root@localhost ~]# rm -rf /root/dir*
这样root目录下的所有dir*文件都会删除
#删库跑路,直接把根目录下所有文件删除
rm -rf /*

2.2普通文件的管理

1、创建

touch用法1:如果文件存在会更新文件的时间:atime,mtime,ctime
touch用法2:创建普通文件
touch /root/file1 /root/file2 /root/file{1..5}

2、编辑

#1.将命令执行后的标准输出写入文件,>重定向:可将命令执行后的标准输出重定向到文件;>>追加重定向:将命令执行后的标准输出追加到文件
标准输出:命令成功执行后在屏幕上输出的内容
标准错误输出:命令执行失败后在屏幕上输出的内容
[root@localhost ~]# pwd > /root/file1
[root@localhost ~]# cat /etc/redhat-release >> /root/file1
[root@localhost ~]# cat /root/file1
/root
Red Hat Enterprise Linux release 9.1 (Plow)
标准错误输出写入文件用2>
[root@localhost ~]# ls -l /root/file11
ls: 无法访问 '/root/file11': 没有那个文件或目录 
[root@localhost ~]# ls -l /root/file11 2> /root/file1 
[root@localhost ~]# cat /root/file1
ls: 无法访问 '/root/file11': 没有那个文件或目录
​
#2.使用echo指定要输出的内容,再使用重定向写入指定文件
[root@localhost ~]# echo hello linux
hello linux
[root@localhost ~]# echo hello linux >> /root/file1
[root@localhost ~]# cat /root/file1
ls: 无法访问 '/root/file11': 没有那个文件或目录
hello linux
#HOME是系统定义好的变量
[root@localhost ~]# echo $HOME
/root
​
#3.vim编译器:vim/vi
1.所有的linux操作系统中都会安装vi编译器
2.当你在使用一些对系统做设置的时候其实就是改变一些系统文件,此时会调用vi编译器
3.vim可以通过颜色显示代码的语法正确性
4.一些特殊的服务配置文件(sshd)也会有颜色显示
​
[root@localhost ~]# vim /root/file1
命令模式:
    光标的跳转:gg,G【跳转到文件内容的行首和行尾第一个字符】 10gg或者10G, ^,$【将光标跳转到光标所在行的第一个字符和最后一个字符】,w,b【按单词前后跳转】
    复制:yy、3yy
    粘贴:p,P
    删除:dd,2dd,dgg,dG
    撤销:u
插入模式:i、a
    i 在光标前插入内容
    I 在光标所在行第一个非空字符前插入内容
    a 在光标后插入内容
    A 在光标所在行的行尾插入
    s 删除光标所在字符并进入插入模式
    S 删除光标所在行并进入插入模式
    o光标所在行的下一行插入内容
    O 光标所在行的上一行插入内容
末行模式:
    :w  保存内容   :w /dir/file 另存为
    :q  退出
    :wq  保存退出
    :q!  强制退出不保存
    :wq!  强制保存退出
    :r /dir/file1  将dir/file1文件内容写入到当前文件光标所在行的下一行
    /keywords  查找关键字。可以使用n,N在找到的字符之间跳转
    :%s/old/new/g  %表示整个文档,old是被替换的内容,new是新内容 ,g表示替换每一个old
    :1,5s/old/new/g
    
拓展:1、可视化模式,ctrl+v
    通过移动上下左右键选择块内容,y表示复制,p表示粘贴
    在所有行行首加入#字符,先按ctrl+v,接着选中每一行的每一个字符,然后按I,接着写入#,最后按esc
    2、同一个窗口编辑多个文件
        :sp /dir/file
    使用ctrl+ww可以在几个文件中跳转光标

3、查看

  • 整个文档内容查看

    #将文件内容全部输出到屏幕上
    cat -n    显示行
    #通过less程序查看文件内容,按q退出,空格和b翻页,/keywords查找关键字
    [root@rhel9-1 ~]# less -N /etc/ssh/sshd_config
    #查看文件前10行
    [root@rhel9-1 ~]# head /etc/ssh/sshd_config
    [root@rhel9-1 ~]# head -6 /etc/ssh/sshd_config
    #查看文件后10行
    [root@rhel9-1 ~]# tail /var/log/messages
    [root@rhel9-1 ~]# tail -1 /var/log/messages
    #追踪系统日志文件
    [root@rhel9-1 ~]# tail -f /var/log/messages
    ​
    |管道符。将管道前面指令的输出给管道后面的指令进行处理
    查看第10-20行的内容
    [root@rhel9-1 ~]# head -20 /etc/ssh/sshd_config | tail -10

  • 文档行内容和列内容处理后查看

    [root@rhel9-1 ~]# cat /root/file1
    xiaoming:60
    xiaohong:80
    xiaolan:90
    xiaobai:100
    xiaohei:50
    #cut指令-d选项指定分隔符,-f指定几个字段
    [root@rhel9-1 ~]# cut -d : -f 1 /root/file1
    xiaoming
    xiaohong
    xiaolan
    xiaobai
    xiaohei
    [root@rhel9-1 ~]# cut -d : -f 2 /root/file1
    60
    80
    90
    100
    50
    #sort指令-t选项指定分隔符,-k表示第几个字段 -n升序 -nr降序
    [root@rhel9-1 ~]# sort -t : -k 2 -n /root/file1 
    xiaohei:50
    xiaoming:60
    xiaohong:80
    xiaolan:90
    xiaobai:100
    ​
    #uniq去重,uniq -c统计
    #面试题:我们有一个服务器,日志为/root/access.log,找出访问服务器次数最多的IP地址
    [root@rhel9-1 ~]# cat /root/access.log
    2022/12/01 12:00 10.0.0.2 chrome
    2023/01/01 13:00 192.168.1.2 firefox
    2023/06/06 15:00 10.0.0.2 firefox
    2023/07/01 14:00 10.0.0.2 IE
    2023/07/01 14:00 10.0.0.1 IE
    [root@rhel9-1 ~]# cut -d " " -f 3 /root/access.log | sort | uniq -c | sort -t " " -k 1 -nr | head -1
          3 10.0.0.2
    ​

  • 搜索文件内容查看:列出有关键字的行

    [root@rhel9-1 ~]# cat /root/file2
    root 123
    ROOT
    123 root
    456 root 789
    test
    ceshi
    #列出有root的行
    [root@rhel9-1 ~]# grep root /root/file2
    root 123
    123 root
    456 root 789
    #-i忽略大小写
    [root@rhel9-1 ~]# grep -i root /root/file2
    root 123
    ROOT
    123 root
    456 root 789
    #-v匹配到没有root的行
    [root@rhel9-1 ~]# grep -v root /root/file2
    ROOT
    test
    ceshi
    #-vi忽略大小写
    [root@rhel9-1 ~]# grep -vi root /root/file2
    test
    ceshi
    #匹配到root开头的行
    [root@rhel9-1 ~]# grep ^root /root/file2
    root 123
    #匹配到root结尾的行
    [root@rhel9-1 ~]# grep root$ /root/file2
    123 root
    #匹配到有t或c的行,[0-9],[a-Z]
    [root@rhel9-1 ~]# grep [tc] /root/file2
    root 123
    123 root
    456 root 789
    test
    ceshi
    #匹配到t或c开头的行
    [root@rhel9-1 ~]# grep ^[tc] /root/file2
    test
    ceshi

4、删除

[root@rhel9-1 ~]# rm -rf file*

2.3软链接文件的管理

#创建 ln -s
[root@rhel9-1 ~]# echo "this is a test" > /root/test
[root@rhel9-1 ~]# ln -s /root/test /root/test.link
​
[root@rhel9-1 ~]# ln -s /home/xuehanwen /redhat1
[root@rhel9-1 ~]# ll -d /redhat1
lrwxrwxrwx. 1 root root 15  9月 17 00:48 /redhat1 -> /home/xuehanwen
#编辑
取决于软链接文件所连接的文件类型
#查看
取决于软链接文件所连接的文件类型
#删除:如果删除目录文件,特别注意文件名后不要补全/,而且注意小心使用-rf强制删除
rm /root/test.link
rm /redhat

2.4块设备文件

[root@rhel9-1 ~]# ls -l /dev | grep ^b
brw-rw----. 1 root disk    253,   0  9月 16 14:09 dm-0
brw-rw----. 1 root disk    253,   1  9月 16 14:09 dm-1
brw-rw----. 1 root disk    259,   0  9月 16 14:09 nvme0n1
brw-rw----. 1 root disk    259,   1  9月 16 14:09 nvme0n1p1
brw-rw----. 1 root disk    259,   2  9月 16 14:09 nvme0n1p2
brw-rw----+ 1 root cdrom    11,   0  9月 16 14:10 sr0
​
[root@rhel9-1 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0            11:0    1  8.4G  0 rom  /run/media/root/RHEL-9-1-0-BaseOS-x86_64
nvme0n1       259:0    0   20G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]

2.5文件的复制和移动

#复制目录文件或普通文件至目录(源文件不丢失)
[root@rhel9-1 ~]# mkdir /root/hostname
[root@rhel9-1 ~]# cp /etc/hostname /root/hostname/
[root@rhel9-1 ~]# cp -r /etc/ssh/ /root/hostname/
​
​
#复制文件时,如果目标文件不存在,则会创建目标文件,可以利用此特性做备份
[root@rhel9-1 ~]# cp /root/test{2,.bak}
#移动文件,源文件会消失,可以利用此特性进行文件重新命名
[root@rhel9-1 ~]# mv /root/test1 /root/test2
[root@rhel9-1 ~]# mv test{1,2}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值