Linux快速上手(一)

Linux系统

开机会启动很多程序,在windows这些东西叫做 服务(service),在Linux这些叫做守护进程(daemon)

用户登录的三种方式:

  • 命令行登录 用户名 密码,Linux上,输入密码,它是不会提示的,你就正常输入回车即可!
  • ssh登录,远程连接使用,工具十分多,自由选择即可
  • 图形界面登录,和windos一样,无脑登录

Linux的最高权限账户为root,可以操作一切,包括rm -rf /*,不要测试!

关机:命令shutdown 关机命令

# 关机之前的良好习惯,就是先将数据从内存同步到硬盘上!
sync
# 关机指令
shutdown
# 帮助命令,可以查看这个命令的所有帮助信息 man 指令
man shutdown
# 定时关机
shutdown -h 10   	# 10分钟后关机
shutdown -h  now    # 立马关机
shutdown -h  22:00  # 晚上10点关机

shutdwon -r  now    # 重启命令
reboot              # 重启命令
shutdown  -p now    # 关机

halt                #关机整个系统,等价于 shutdown -h now 和 poweroff

Linux下的目录结构:(一定要了解)
树,挂载的状态,最高的节点就是 /
ls命令,查看根目录下的所有文件!
在这里插入图片描述
在这里插入图片描述
基本的目录结构:
在这里插入图片描述
在Linux中,一切皆文件,包括你外界的硬盘,设备都是文件!
在Linux中,如果没有报错,就是执行成功

目录作用:

  • /bin :这个目录中,存放我们要经常使用命令
  • /boot : 这里就是存放的启动Linux使用的一些核心文件
  • /dev: 设备,一般存放Linux的外部设备。在这里面都是文件
  • /etc:所有的配置文件,我们都放在这里
  • /home: 用户的主目录,在Linux中,每个用户都会有自己的目录
  • /lib:动态链接库,就好比widows DII文件
  • /lost+found:假设系统非法关机,这里就会存放一些文件,默认也是空的
  • /media:存放一些设备,U盘,光驱这样的,Linux识别后,就会放到media目录下
  • /mnt:临时挂载目录,将硬盘挂载在这个目录
  • /opt:让电脑安装一些额外的软件使用,redis…数据库…,默认都是空的
  • /root :系统管理员的目录。系统管理员主目录
  • /sbin:Super User,存放管理员才能使用的程序。
  • /tmp:使用重要,临时文件
  • /usr:这是一个很重要的目录,很多程序和文件都放在这个目录下
  • /usr/bin:普通用户的程序
  • /usr/sbin: 管理员的程序
  • /var :进程修改的文件目录一般都放在这里,包括日志文件等等,这个文件可能会不断的扩充…
  • /www:存放一些网站程序,比如说,论坛,博客,项目之类的
  • /www/server:存放一些服务器的环境 NGINX Tomcat MySQL PHP Apache…

在Linux中,用户的权限很重要!通过这个目录结构就可以看出来,管理员和普通用户都是分开放置的。

目录管理

注意,相对路径和绝对路径的问题:
在这里插入图片描述
绝对路径都是 / 开头的,相对路径都是相对于当前目录写起!

# Linux中的所有命令一般都使用空格隔开,参数都是用 -xxx 拼接
cd ..  上一级目录
cd /    回到根目录
cd ~   用户目录

处理文件的常用命令:

  • ls 列出文件
ls -参数 目录
ls 当前目录
参数
	-a  全部的文件,包括隐藏文件都会显示
	-l    列表格式化输出
	
[root@shiqi /]# ls -a
.  ..  .autorelabel  bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@shiqi /]# ls -al
total 68
dr-xr-xr-x. 18 root root  4096 Dec 19 15:42 .
dr-xr-xr-x. 18 root root  4096 Dec 19 15:42 ..
-rw-r--r--   1 root root     0 Aug 18  2017 .autorelabel
lrwxrwxrwx.  1 root root     7 Aug 18  2017 bin -> usr/bin
dr-xr-xr-x.  4 root root  4096 Dec 19 15:09 boot
drwxr-xr-x  19 root root  2960 May 10 10:47 dev
drwxr-xr-x. 82 root root  4096 May 10  2020 etc
drwxr-xr-x.  5 root root  4096 Jan  9 15:12 home
lrwxrwxrwx.  1 root root     7 Aug 18  2017 lib -> usr/lib
lrwxrwxrwx.  1 root root     9 Aug 18  2017 lib64 -> usr/lib64
drwx------.  2 root root 16384 Aug 18  2017 lost+found
drwxr-xr-x.  2 root root  4096 Nov  5  2016 media
drwxr-xr-x.  2 root root  4096 Nov  5  2016 mnt
drwxr-xr-x.  2 root root  4096 Nov  5  2016 opt
dr-xr-xr-x  89 root root     0 May 10 10:47 proc
dr-xr-x---.  7 root root  4096 Jan  9 15:52 root
drwxr-xr-x  21 root root   600 May 10 10:48 run
lrwxrwxrwx.  1 root root     8 Aug 18  2017 sbin -> usr/sbin
drwxr-xr-x.  2 root root  4096 Nov  5  2016 srv
dr-xr-xr-x  13 root root     0 May 10  2020 sys
drwxrwxrwt.  9 root root  4096 May 10 11:02 tmp
drwxr-xr-x. 13 root root  4096 Jan  9 14:55 usr
drwxr-xr-x. 19 root root  4096 May 10  2020 var
  • cd 切换目录
    # Linux中的所有命令一般都使用空格隔开,参数都是用 -xxx 拼接
    cd ..  上一级目录
    cd /    回到根目录
    cd ~   用户目录
    
  • pwd 显示当前目录
    pwd 显示当前的用户在哪个目录
    # 如果是链接,要显示它的真实位置,可以使用 -p 参数
    [root@shiqi tmp]# pwd -P
    /var/tmp
    
  • mkdir 创建目录
    # 创建单个目录
    [root@shiqi home]# mkdir test
    # 递归创建目录
    [root@shiqi home]# mkdir -p test1/test2/test3/test4
    
  • rmdir 删除一个目录
    # 移除单个目录
    [root@shiqi home]# rmdir test
    [root@shiqi home]# ll
    total 16
    drwxr-xr-x 3 root  root  4096 Jan  9 15:12 data
    drwxr-xr-x 5 root  root  4096 Jan  9 15:26 logs
    drwx------ 2 mysql mysql 4096 Dec 19 16:43 mysql
    drwxr-xr-x 3 root  root  4096 May 10 11:43 test1
    [root@shiqi home]# rmdir test1
    rmdir: failed to remove ‘test1’: Directory not empty
    [root@shiqi home]# rmdir -p test1
    rmdir: failed to remove ‘test1’: Directory not empty
    # 递归删除目录,一定要是空的 注意rmdir 只能删除空的目录,如果不是空的目录,就需要使用rm 命令!
    [root@shiqi home]# rmdir -p test1/test2/test3/test4/
    [root@shiqi home]# ll
    total 12
    drwxr-xr-x 3 root  root  4096 Jan  9 15:12 data
    drwxr-xr-x 5 root  root  4096 Jan  9 15:26 logs
    drwx------ 2 mysql mysql 4096 Dec 19 16:43 mysql
    
  • rm [-fir]移除文件或目录
-f : force, 忽略不存在的文件,不会出现任何警告!
-r :递归删除!尽量不要使用
-i : 互动,在删除前会提问你是否进行删除!

# 提示删除
[root@shiqi test]# rm -i install.sh
rm: remove regular file ‘install.sh’? y

# 递归强制删除
[root@shiqi test]# rm -rf test/
[root@shiqi test]# 

# 尽量不要在服务器上使用 rm -rf /
  • cp 复制文件或目录
   # cp -[参数] 复制源文件地址 复制目标地址
参数
 -r 递归
 -i 询问,已经存在了,是否还复制!
 
[root@shiqi home]# cp -r /root/test2/   /home
[root@shiqi home]# ls
data  logs  mysql  test  test2

万能的帮助命令 man 命令!

基本属性

Linux是一个多用户系统,不同用户就处于不同的地位 ,拥有不同的权限!
对于同一个文件夹,不同的访问,有不同的权限操作!

ll可以显示一个文件的属性和这个文件所属的用户(属性)和用户(属组):
在这里插入图片描述
d 第一个属性,代表这是一个文件夹!
在Linux中第一个字符代表你这个文件是目录,还是文件还链接地址…

  • 【d】目录
  • 【-】文件
  • 【l】link链接
  • 【b】代表存储设备(可随机存取装置)
  • 【c】鼠标键盘之类的(一次性读取装置)

接下的字符,每三个为一组,rwx,read可读,write 可写 execute 可执行,这里的所有位置都是固定的。

如果没有权限,就会展示-。
在这里插入图片描述
我们可以使用 0~9来表示对应位置
1 4 7 表示 读的权限 r
2 5 8 表示 写的权限 w
3 6 9 表示 执行权限 x

修改文件的属性

[root@shiqi home]# ll
total 16
drwxr-xr-x 3 root  root  4096 Jan  9 15:12 data
drwxr-xr-x 5 root  root  4096 Jan  9 15:26 logs
drwx------ 2 mysql mysql 4096 Dec 19 16:43 mysql
drwxr-xr-x 2 root  root  4096 May 10 13:08 test2

# 更改文件的属组
[root@shiqi home]# chgrp rwx test2
chgrp: invalid group: ‘rwx’

# 更改文件的属主
[root@shiqi home]# chown hhzz test2
chown: invalid user: ‘hhzz’

# 更改文件的九个属性,这个就是万能,我们必须要掌握!
[root@shiqi home]# chmod 777 test2
[root@shiqi home]# ll
total 16
drwxr-xr-x 3 root  root  4096 Jan  9 15:12 data
drwxr-xr-x 5 root  root  4096 Jan  9 15:26 logs
drwx------ 2 mysql mysql 4096 Dec 19 16:43 mysql
drwxrwxrwx 2 root  root  4096 May 10 13:08 test2

own grp other
rwx r-x r-x 我们都可以使用数字带代表各个权限
7 0 0
r 4
w 2
x 1
我们平时可以使用这个来进行快捷操作,大部分时间都是这么使用的!

文件查看

[root@shiqi network-scripts]# pwd
/etc/sysconfig/network-scripts   # Linux网络配置的目录文件

# cat 从一行开始展示我们的文件内容
[root@shiqi network-scripts]# cat ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

# tac 从最后一行开始逆向展示我们的文件内容
[root@shiqi network-scripts]# tac ifcfg-eth0
ONBOOT=yes
BOOTPROTO=dhcp
DEVICE=eth0

# 展示行号的信息
[root@shiqi network-scripts]# nl ifcfg-eth0
     1	DEVICE=eth0
     2	BOOTPROTO=dhcp
     3	ONBOOT=yes
 
 # more 一页一页的翻动
more /etc/profile # 就当于我们window下的环境变量目录!
# 查看的时候的指令说明
空格 代表像下面翻页
回车 代表翻一行
/字符串 要搜索这个字符串
q 立刻离开more,不再显示
b 往回翻页
# less 一页一页的翻动
less /etc/profile
空格(键盘上下也可以使用) 代表像下面翻页
/字符串 要搜索这个字符串 (向下搜索)
?字符串 要搜索这个字符串 (向上搜索)
n 向下重复搜索
N 向上重复搜索
q 退出
# whereis 文件 全局搜索!会显示出他所在的路径!
| 管道符
将第一个命令的结果给第二个命令
cat 文件名 | grep "内容"
# head 只看文件的前几行
[root@shiqi etc]# head -n 20 profile    # 只显示文件的前20行 -n 数字可以直接换

# tail 只看文件的后面行
[root@shiqi etc]# tail -n 30 profile   # 只显示文件的后30行 -n 数字可以直接换

Link链接

Linux 链接,分为 硬链接 和 软连接!
硬链接:
硬链接 直接进行链接,Linux中,保存在磁盘分区中的文件,不管是什么类型,都会给他分配一个编号,索引节点。多个文件名,可以指向同一个索引节点。A 是 B 的硬链接,就是代表 A 和 B 指向的节点是一样的。我们通过 A 或者 B,都可以访问到这个文件,现在我删除 A,B依旧可以访问!
硬链接的作用,允许一个文件拥有多个有效的路径名,可以建立硬链接,保护我们的重要文件,防止误删!。
软连接:
(符号链接),快捷方式,删掉快捷方式(软连接)没关系,但是源文件删除后,软连接就会失效!

[root@shiqi home]# touch f1   # 创建一个文件
[root@shiqi home]# ls
data  f1  logs  mysql
[root@shiqi home]# ln f1 f2   # 创建f1一个硬链接f2
[root@shiqi home]# ls
data  f1  f2  logs  mysql
[root@shiqi home]# ln -s f1 f3  # 创建f1一个软链接f3
[root@shiqi home]# ls
data  f1  f2  f3  logs  mysql
[root@shiqi home]# ll
total 12
drwxr-xr-x 3 root  root  4096 Jan  9 15:12 data
-rw-r--r-- 2 root  root     0 May 10 13:25 f1
-rw-r--r-- 2 root  root     0 May 10 13:25 f2
lrwxrwxrwx 1 root  root     2 May 10 13:26 f3 -> f1
drwxr-xr-x 5 root  root  4096 Jan  9 15:26 logs
drwx------ 2 mysql mysql 4096 Dec 19 16:43 mysql
[root@shiqi home]# ls -li   # -i就是现实 文件的 inode节点信息
total 12
394715 drwxr-xr-x 3 root  root  4096 Jan  9 15:12 data
393231 -rw-r--r-- 2 root  root     0 May 10 13:25 f1
393231 -rw-r--r-- 2 root  root     0 May 10 13:25 f2
393233 lrwxrwxrwx 1 root  root     2 May 10 13:26 f3 -> f1
393371 drwxr-xr-x 5 root  root  4096 Jan  9 15:26 logs
393227 drwx------ 2 mysql mysql 4096 Dec 19 16:43 mysql

再次测试

[root@shiqi home]# echo "hello world" >> f1  # 向f1 中写入文件
[root@shiqi home]# cat f1
hello world
[root@shiqi home]# cat f2
hello world
[root@shiqi home]# cat f3
hello world
[root@shiqi home]# rm -rf f1  # 删除源文件 f1
[root@shiqi home]# cat f3  # f3 软链接失效
cat: f3: No such file or directory
[root@shiqi home]# cat f2  # f2 硬链接依旧OK!
hello world

果创建了硬链接,就要把这个连接所有的文件都删掉, f1,f2,都删除,这样才算是真正的删除!

vim便捷器(便捷文件的,IDE)

什么是vim编辑器
在这里插入图片描述
vim键盘图:
在这里插入图片描述
Vim 核心:就是三种模式而已!

  • 命令模式
    • 我们输入了vi/vim 文件,就会进入命令模式
      [root@shiqi home]# vi f2
      [root@shiqi home]# vim f2
  • 输入模式
    • 在命令模式下面输入 i ,进入输入模式,就可以编辑任意的东西了
      在这里插入图片描述
    • 在输入模式中,esc 退出输入模式,就回到了命令模式
  • 底线命令模式
    命令模式下 输入 : , 进入底线命令模式,在这里可以输入底线命令!保存,退出,搜索等等!
    vim 流程:
    在这里插入图片描述
    基本的命令:
    命令模式下:
    • x 删除当前光标所在的字符
    • : 进入底线命令模式
    • i 进入输入模式
    • S 删除当前行并插入

输入模式:

  • 字符串,直接输入
  • 回车 换行
  • 空格 空格键
  • 删除 DEL
  • 移动光标 上下作用
  • HOME/END 移动光标到行首行尾
  • Page UP / Page Down 上下翻页
  • Insert ,切换光标状态 | —。 输入到替换
  • ESC 退出

底线命令模式:

  • q 退出程序
  • w 保存文件
  • !代表强制
  • esc 退出底线模式
快速上手Linux内核,您可以按照以下步骤进行: 1. 了解Linux内核的基本概念:学习Linux内核的基础知识,如进程管理、内存管理、文件系统、设备驱动等。可以阅读相关的书籍、在线教程或参考官方文档。 2. 设置开发环境:在您的计算机上设置Linux开发环境。可以选择一个流行的Linux发行版(如Ubuntu、Fedora等),安装开发工具链和必要的软件包,以便进行内核编译和调试。 3. 下载并编译内核源代码:从Linux官方网站(https://www.kernel.org/)下载最新版本的内核源代码。按照官方提供的说明进行编译,生成可执行的内核映像文件。 4. 阅读和理解内核代码:开始阅读内核源代码,了解其结构和组织方式。可以从一些简单的模块或驱动程序开始,逐渐深入理解内核的不同部分。 5. 参与开发社区:加入Linux内核开发社区,参与讨论和交流,在邮件列表、论坛或IRC频道上与其他开发者互动。这将帮助您获得更多实践经验和指导。 6. 进行实际编程和调试:尝试编写简单的内核模块、驱动程序或补丁,并进行调试和测试。通过实际编程和解决实际问题,加深对内核的理解和掌握。 7. 学习内核调试技术:了解内核调试工具和技术,如GDB、Kprobes、Ftrace等。这些工具可以帮助您分析和调试内核代码,定位和修复问题。 8. 深入研究特定领域:根据自己的兴趣和需求,选择一个特定的领域进行深入研究,如网络协议栈、虚拟化、安全性等。探索Linux内核的各个子系统,并尝试在特定领域做出贡献。 请注意,学习Linux内核需要耐心和持续的努力。这只是一个快速上手的指南,真正的深入学习和掌握需要更多的时间和经验。建议在学习过程中保持对官方文档、书籍和其他资源的持续学习和参考。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值