Linux学习笔记(2)----命令的学习

Linux的文件系统

linux采用目录树结构,所有的文件都保存在根目录’/'下。在linux系统中一切皆文件,一些硬件设备也以文件的方式存储在根目录 的dev目录下。

文件系统相关命令

首先我们通过df查看磁盘的使用情况和挂载情况(-h 使用人类可读的方法显示):

[root@node01 /]# df
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/sda3      204156736 934760 192851368   1% /
tmpfs             502204      0    502204   0% /dev/shm
/dev/sda1         198337  27802    160295  15% /boot
[root@node01 /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       195G  913M  184G   1% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       194M   28M  157M  15% /boot

我们可以非常清楚的看到/boot这个目录挂载在第一块磁盘下的第一个分区(sda1),我们首先将他umount掉,然后再重新进行挂载:

[root@node01 /]# umount /boot
[root@node01 /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       195G  913M  184G   1% /
tmpfs           491M     0  491M   0% /dev/shm
[root@node01 /]# mount dev/sda1 /boot
[root@node01 /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       195G  913M  184G   1% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       194M   28M  157M  15% /boot

umount 卸载/挂载。

mount [dev/sda1] [/boot]

这就是卸载和挂载的简单使用了。

Linux启动时文件挂载的变化

在linux启动时会从根目录’/'下面读取kernel,如下图kernel文件实际上是在/下面,但是当我们启动后在根目录下面找不到kernel文件。在计算机启动的时候是首先将/目录挂载在sda1这个分区下面,读取里面的引导文件。 然后kernel会重新挂载根/,然后将原来的根挂载到 /boot。然后从/sbin 找一个程序 init,init进程是linux启动后的第一个进程。
在这里插入图片描述

du -sh ./* 查看使用的磁盘空间

[root@node01 /]# du -sh ./*
5.8M	./bin
22M	./boot
216K	./dev
25M	./etc
4.0K	./home
130M	./lib
20M	./lib64
16K	./lost+found
4.0K	./media
4.0K	./mnt
4.0K	./opt
du: cannot access `./proc/1133/task/1133/fd/4': No such file or directory
du: cannot access `./proc/1133/task/1133/fdinfo/4': No such file or directory
du: cannot access `./proc/1133/fd/4': No such file or directory
du: cannot access `./proc/1133/fdinfo/4': No such file or directory
0	./proc
88K	./root
14M	./sbin
4.0K	./selinux
4.0K	./srv
0	./sys
8.0K	./tmp
453M	./usr
80M	./var

软连接和硬链接。

当我们使用ls -l(或ll)命令时可以看到如下输出:

[root@node01 ~]# ll
total 36
-rw-------. 1 root root  900 Sep 28 03:35 anaconda-ks.cfg
-rw-r--r--. 1 root root 8815 Sep 28 03:35 install.log
-rw-r--r--. 1 root root 3384 Sep 28 03:35 install.log.syslog
-rw-r--r--  1 root root 1796 Oct 23 04:46 profile
-rw-r--r--  1 root root   45 Oct 11 00:06 xie.log
-rw-r--r--  1 root root   91 Oct 10 23:51 xie.txt
drwxr-xr-x  2 root root 4096 Oct 10 22:28 xzy

其中第一位表示文件描述符: b字符流,d目录, - 普通文件,c i/o文件, s socket(tcp链接), p 管道,l 表示链接文件。

后面有9位,每3位一组,代表权限。(用户,组,other)
r 读 w 写 x 执行。

接下来的数字表示链接的数量(包括硬链接和软连接)。

ln命令:

分为软连接和硬链接,软连接就是windows中的快捷方式。ln命令默认创建硬链接。

ln -s 创建软连接。软连接和硬链接的区别主要在于删除的时候的区别。

/proc 目录

proc 是内核的映射。里面有进程id 描述每个进程的状态,里面有个fd,代表文件描述符。首先进入1058进程fd目录,

[root@node01 fd]# pwd
/proc/1058/fd
[root@node01 fd]# ll
total 0
lrwx------ 1 root root 64 Oct 28 02:09 0 -> /dev/null
lrwx------ 1 root root 64 Oct 28 02:09 1 -> /dev/null
lrwx------ 1 root root 64 Oct 28 02:09 2 -> /dev/null
lr-x------ 1 root root 64 Oct 28 02:09 3 -> pipe:[9508]
l-wx------ 1 root root 64 Oct 28 02:09 4 -> pipe:[9508]
lrwx------ 1 root root 64 Oct 28 02:09 5 -> socket:[9426]
lrwx------ 1 root root 64 Oct 28 02:09 6 -> /var/spool/postfix/public/qmgr
lrwx------ 1 root root 64 Oct 28 02:09 7 -> socket:[9547]
lrwx------ 1 root root 64 Oct 28 02:09 8 -> [eventpoll]

0标准输入
1标准输出
2错误输出

/dev -> device 设备被抽象成文件。

/bin 放程序 可执行程序

/sbin 放程序 可执行程序

/etc 配置文件

/home 用户家目录

/lib /lib64 放扩展库

/media /mnt 做挂载用的

/usr 安装的程序释放目录(program file)

/opt 释放第三方程序

/var 存放程序产生的数据文件

mkdir xzy直接创建

mkdir -p ./xzy/a/b/c (-p 可以解决多层创建)

花括号{}扩展,mkdir ./xzy/{a,b,c} 可以在xzy目录下创建a,b,c三个文件夹。

注意 rm -rf /不要操作。

cp 命令:

cp [origin] [distination]。

cp命令也可以用 {}来进行多文件拷贝 (通配符的使用)

cp /etc/{profile,/init.d/network} ~。 把 /etc/profile 和 /etc/init.d/network 拷贝到当前用户的根目录下。

stat 元数据

元数据————描述数据的数据

Access:读取文件后,access会改变。

Modify:对文件进行修改后,modify会改变

Change:修改元数据后,change会改变。

touch 命令:

使得access modify change时间一致

touch 后接一个不存在的文件名,可以创建文件。

管道的基本应用

cat命令

more(分屏,从上往下)

less(从上往下,可以回退,b回退,空格前进)

head(前n行,n默认为10)

tail(最后的n行,n为10)

可以利用管道来实现显示中间的某些行。使用|来进行例如:

head -3 anaconda-ks.cfg | tail -1 读anaconda-ks.cfg的前5行,得到的结果再去倒数第1行。

ls -k | more
管道 | 衔接前后命令的输入输出。
例子:
echo “/” | ls -l

echo “/” | xargs ls -l

ls | xargs ls -l | less

xargs可以将输入流作为后面命令的参数。

重定向 >>

tail -f filename 会阻塞,不动。可以通过这种方式查看报错。动态追踪日志。

vi编辑器

高级的记事本。
打开文件:vi [文件路径]

set nu 显示行号。

vi +11 [文件路径] 打开文件并显示到第11行。如果不加11直接定位到最后一行(或者打开文件后按shift+G)

vi有三个模式: 编辑模式(默认模式),末行模式,输入模式

编辑模式进入输入模式:

i(在光标前插入),a(在光标后插入),o(在当前光标下),O(在光标上面)

I(当前光标行末),A(在光标行首插入)

输入模式->编辑模式: ESC

末行模式,输入 : 进入末行模式。

编辑模式

移动光标: h左 j下 k右 l上

单词: w移动到下一个单词的词首 e跳到当前或下个单词的词尾 b跳到当前或下个单词的词首。

行内: 0绝对行首, ^行首的非空白字符, $绝对行尾。

行间: G文字末尾,3G第三行,gg文章的开头。

翻屏: ctrl+ f,b

Xshell卡死的原因 Ctrl+S ,使用Ctrl+Q来进行恢复。

删除: x删除光标位置的字符,3x删除光标开始的三个字符,r替换光标位置字符,dd删除一行,dw删一个单词

复制粘贴&剪切粘贴: yy复制一行,yw复制一个单词(p行后,单词后;P行前,单词前)

撤销&重做: u撤销, ctrl+r重做, .重复上一步操作。

末行模式

set: set nu 显示行号 set nonu 不显示行号 set readonly设置只读

/:查找,出来结果后n往后看,N往前看。
?:向上找。
!:将vim最小化,去查看某一目录中的文件。

遇到E325,是因为中途退出了Xshell,导致没有保存,自动生成了swap文件,可以 rm -f .filename.swp来删除。

查找并替换:

s 查找并替换,1, s / 查 找 内 容 / 替 换 内 容 / ; 1 , s/查找内容/替换内容/;1, s///;1,表示1到最后一行;‘/’只是做边界。(如果需要替换的字符中有‘/’,那么可以使用@做边界)

s后可以接/gi g表示一行内全部替换(意思是如果一行内有2个相同的单词,不加g只替换第一个,加了g以后,全部替换),i表示忽略大小写。

范围: n行号,.当前光标的位置, +n偏移n行, $末尾行, %全文。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值