Linux基础入门笔记

Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux概述
1.1 Unix历史
我们要讲的不是Linux吗?怎么蹦出个Unix,虽然它和Linux长得有点像。因为它们确实有很深的渊源!
Unix 是在1969年美国贝尔实验室的 肯.汤普森开发出来的一款操作系统,什么是操作系统?
大家正在玩的 Windows 和 Max OS就是两个操作系统。操作系统是用户和计算机的接口,同时也是计算机硬件和应用程序的接口,
也就是说我们和计算机打交道以及计算机底层硬件和应用程序打交道都是通过操作系统。如下所示:

而我们所说的Unix也是一个操作系统,其源代码大部分都是用C语言写的。它是一个强大的多用户、多任务操作系统,
而且支持多种处理器架构。在1984年,Unix用户协会颁发了使用标准。
后来IEEE为此制定了POSIX标准(即IEEE1003标准)国际标准名称为ISO/IEC9945,它通过一组最小的功能定义了
在UNIX操作系统和应用程序之间兼容的语言接口。这个标准很重要,后面很多系统的开发都是遵循这个标准来的。

虽然Unix系统这么好用,但是很不幸,它是一个对源代码实行知识产权保护的传统商业软件,也就是说Unix系统
源代码不开源,而且Unix系统也是一个收费软件。这也直接导致了Linux系统的诞生。

1.2 Linux历史
UNIX 最初免费发布,在1990年,UNIX 在服务器市场尤其是大学校园成为主流操作系统,许多校园都有 UNIX 主机,
当然还包括一些研究它的计算机系的学生。这些学生都渴望能在自己的电脑上运行 UNIX 。。不幸的是,从那时候开始,
UNIX 开始变得商业化,它的价格也变得非常昂贵。而唯一低廉的选择就是 MINIX ,这是一个功能有限的类似 UNIX 的
操作系统,作者 Andrew Tanebaum 开发它的目的是用于教学。

1991 年 10 月,Linus Torvalds(Linux 之父)在赫尔辛基大学接触 UNIX ,他希望能在自己的电脑上运行一个类似的操作系统。
可是 UNIX 的商业版本非常昂贵,于是他从 MINIX 开始入手,而 Linus Torvalds 对Minix不是很满意,于是决定自己编写软件。
他以学生时代熟悉的Unix作为原型,在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果
通过互连网与其他同学共享,主要用于学术领域。他第一次发行的版本很快吸引了一些黑客。尽管最初的 Linux 并没有多少用处,
但由于一些黑客的加入使它很快就具有了许多吸引人的特性,甚至一些对操作系统开发不感兴趣的人也开始关注它。每当出现新
问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。得注意的是Linux并没有包括Unix源码,
它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。

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

ls -a -l -lh -ld

Linux操作系统
快捷键



ctrl w 删除前面单词
ctrl d 删除后面字母


su,su –

Password:
[user1@localhost centos]$

Password:
Last login: Tue Sep 14 00:51:14 PDT 2021 on pts/0
[user1@localhost ~]$

前导符

[root@loaclhost~] #
root:用户名
@:间隔符
loaclhost:主机名
:表示当前工作目录,表示家目录

tab

命令补全,常用tab键,如果按一次出不来就按两次,此时表示命令不唯一,如果超过两次还没有出来就表示命令错误。

man

man + 命令 —– man ls

history

!num —- !60
!cmd —- !rm
alias

[root@localhost ~]# alias wk=’pwd’

[root@localhost ~]# alias
alias cp=’cp -i’
alias egrep=’egrep –color=auto’
alias fgrep=’fgrep –color=auto’
alias grep=’grep –color=auto’
alias l.=’ls -d .* –color=auto’
alias ll=’ls -l –color=auto’
alias ls=’ls –color=auto’
alias mv=’mv -i’
alias rm=’rm -i’
alias which=’alias | /usr/bin/which –tty-only –read-alias –show-dot –show-tilde’
alias wk=’pwd’

[root@localhost ~]# wk
/root

[root@localhost ~]# pwd
/root
作业:将自己名字(全称拼音)设置成history,并查看

基本命令

Linux下一切皆文件

命令格式:
ls


命令格式:
ls [OPTION]

-rw——-. 1 root root 2770 Sep 7 01:36 anaconda-ks.cfg
文件类型:
-:普通文件(黑色)
d:目录/文件夹(蓝色)
l:链接文件(天蓝色)
rw——-:文件权限
1:节点数
root:用户名
root:组名
2770:文件大小
Sep 7 01:36:最后一次修改时间
anaconda-ks.cfg:文件夹



命令格式:
ls [选项]… [FILE]

查看文件和文件夹的长格式信息(文件夹的长格式信息要多加一个d)
[root@localhost ~]# ls -l anaconda-ks.cfg
-rw——-. 1 root root 2770 Sep 7 01:36 anaconda-ks.cfg
[root@localhost ~]# ls -l Documents
total 0
[root@localhost ~]# ls -ld Documents
drwxr-xr-x. 2 root root 6 Sep 14 22:32 Documents

绝对、相对路径

绝对:从/开始,具有唯一性
湖北省武汉市洪山区光谷广场
相对:从半路开始
洪山区光谷广场
cd 更改目录

cd (change directory)

1 115 117
/tmp /var /etc cd

cat、more、less 查看文件内容

cat 只适合查看短文件
命令格式:cat [选项] 文件名


命令格式:more 文件名
more 只能下翻,不能上翻


命令格式:less 文件名
less 既可上翻,又可下翻

head、tail 查看文件内容

命令格式:head [选项] 文件名

 # head  -n 3/etc/passwd

命令格式:tail [选项] 文件名

 # tail -n /etc/passwd

touch:1.创建文件;2.刷新时间戳

命令格式:touch 文件名
[root@localhost ~]# touch 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r–r–. 1 root root 0 Sep 15 01:37 1.txt

[root@localhost ~]# touch 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r–r–. 1 root root 0 Sep 15 01:39 1.txt
mkdir:创建文件夹

(建议创建在/下面)

命令格式: mkdir [选项] 目录名

rmdir:删除空文件夹

命令格式:mkdir 文件名
[root@localhost /]# ls /test2/test20/
[root@localhost /]# ls /test3/test30/
[root@localhost /]# ls /test40/
[root@localhost /]# rmdir /test2
rmdir: failed to remove ‘/test2’: Directory not empty
[root@localhost /]# rmdir /test2/test20/
[root@localhost /]# rmdir /test40
rm

-r 递归

-f 强制

命令格式:rm [选项] 文件名
[root@localhost ~]# ls /test3/test30
[root@localhost ~]# rm /test3
rm: cannot remove ‘/test3’: Is a directory
[root@localhost ~]# rm -f /test3
rm: cannot remove ‘/test3’: Is a directory
[root@localhost ~]# rm -r /test3
rm: descend into directory ‘/test3’? y
rm: remove directory ‘/test3/test30’? y
rm: remove directory ‘/test3’? ^C
[root@localhost ~]# rm -rf /test3/
[root@localhost ~]# echo $?

0
date

[root@localhost ~]# date
Wed Sep 15 01:40:00 PDT 2021

date 月日时分年点秒
[root@localhost ~]# date 091516412021.50
Wed Sep 15 16:41:50 PDT 2021
[root@localhost ~]# date
Wed Sep 15 16:41:55 PDT 2021
dd

案例1:cpu爆满

[root@localhost ~]# dd if=/dev/zero of=/dev/null
[root@localhost ~]# top
案例2:制作指定大小的文件

[root@localhost ~]# dd if=/dev/zero of=4M bs=2M count=2
6M(bs大小) 8M(数量) 10M

[root@localhost ~]# dd if=/dev/zero of=6M bs=6M count=1

[root@localhost ~]# dd if=/dev/zero of=8M bs=4M count=2

[root@localhost ~]# dd if=/dev/zero of=10M bs=5M count=2
echo回显

[root@localhost ~]# echo “123”
123
[root@localhost ~]# echo “456”
456
[root@localhost ~]# echo 456
cp (copy)复制

默认复制文件

命令格式:
cp [选项] 源文件 目标文件
[root@localhost ~]# cp 2M /tmp/

[root@localhost ~]# cp test1 /mnt/
cp: omitting directory ‘test1’
[root@localhost ~]#
[root@localhost ~]# cp -r test1 /mnt/

[root@localhost ~]# echo “123456” > 1.txt
[root@localhost ~]# echo “456” > 2.txt
[root@localhost ~]# cat 2.txt
456
[root@localhost ~]# cp 1.txt 2.txt
cp: overwrite ‘2.txt’? y
[root@localhost ~]# cat 2.txt
mv(remove)

命令格式:
mv 源文件 目标文件
[root@localhost ~]# mv 2M /mnt
[root@localhost ~]# ls
1.txt Desktop original-ks.cfg test1
2.txt Documents Pictures Videos
4M Downloads Public
anaconda-ks.cfg Music Templates

[root@localhost ~]# ls
1.txt Desktop original-ks.cfg test1
2.txt Documents Pictures Videos
4M Downloads Public
anaconda-ks.cfg Music Templates
[root@localhost ~]# mv 4M /mnt/10M
破解密码

1.重启虚拟机
2.按↑↓键暂停到启动界面吗,按e进入启动程序
3.找到linux16,并按end跳到行尾,添加rd.break
4.按ctrl x进入系统
5.mount -o remount,rw /sysroot //以读写方式重新挂载系统
6.chroot /sysroot //切换到/sysroot
7.echo “123456” | passwd –stdin root //设置root的密码为123456
8.touch /.autorelabel //给selinux打上下文关系标签
9.exit //退出
10.reboot //重启
|(管道符):将左边的执行结果传到右边

wc统计

命令格式:wc [选项] 文件名
-l 统计行数
-c 统计字符数
-w 统计单词
grep:过滤

命令格式:grep 关键字 文件名
[root@localhost ~]# grep root /etc/passwd
root❌0:0:root:/root:/bin/bash
operator❌11:0:operator:/root:/sbin/nologin

[root@localhost ~]# grep ^root /etc/passwd
root❌0:0:root:/root:/bin/bash

[root@localhost ~]# grep bash$ /etc/passwd
root❌0:0:root:/root:/bin/bash
centos❌1000:1000:Centos7:/home/centos:/bin/bash

原文件:
[root@localhost ~]# cat 1.txt
123 we r tt uy u
root

ROOT

-i 忽略大小写
[root@localhost ~]# grep root 1.txt
root

[root@localhost ~]# grep -i root 1.txt
root

ROOT

-v 取反
[root@localhost ~]# grep -v root 1.txt
123 we r tt uy u

ROOT

^$ 过滤空行
[root@localhost ~]# grep ^$ 1.txt

[root@localhost ~]# grep -v ^$ 1.txt
123 we r tt uy u
root

ROOT

[root@localhost ~]# grep -v “$|#” 1.txt
123 we r tt uy u
root

ROOT
[root@localhost ~]# grep -Ev “^(|^#” 1.txt 123 we r tt uy u root ROOT 1.关键字 2.^关键字 3.关键字)
4.-i
5.-v
6.^$ -v

作业:

1.统计root家目录下有多少文件
[root@localhost ~]# ls | wc -l
11

​ 2.统计anaconda-ks.cfg文件有多少单词和字符
[root@localhost ~]# wc -w anaconda-ks.cfg
283 anaconda-ks.cfg
[root@localhost ~]# wc -c anaconda-ks.cfg
2770 anaconda-ks.cfg

​ 3.过滤出/etc/shadow文件下带centos的行
[root@localhost ~]# grep centos /etc/shadow
centos:(1)c1ZA1AN5$lMitJP.Gyltx2Vo8on8NP0:18877:0:99999:7:::

​ 4.过滤出/etc/shadow文件下以centos开头的行
[root@localhost ~]# grep ^centos /etc/shadow
centos:(1)c1ZA1AN5$lMitJP.Gyltx2Vo8on8NP0:18877:0:99999:7:::
基本命令作业

1.将环境的主机名改为你的姓名,如wangke
2.进入/tmp目录并显示当前工作目录
3.查看/etc/group文件的前3行和后5行
4.在/root下创建10.txt和100.txt,并用长格式显示文件信息
5.修改系统时间,与windows时间保持一致
6.创建文件夹qwer,并在qwer下创建qaz的文件夹
7.在/qwer/qaz下面创建xinchuang20303-4的文件
8.删除qwer目录
9.创建wangke文件夹,并删除
10.将/root下的10.txt复制到/tmp下
11.将/root下的100.txt3到/mnt下并重命名为200.txt
12.过滤出/etc/login.defs的空行和注释行
13.破解密码,将系统密码改为qwer,(把输入的命令截图)
参考答案

通配符

*:匹配一个或多个任意字符

[root@wangke mnt]# ls
1.txt a.txt b.txt
ab.txt A.txt B.txt
[root@wangke mnt]# ls *.txt
1.txt a.txt b.txt
ab.txt A.txt B.txt
?:匹配单个字符

[root@wangke mnt]# ls ?.txt
1.txt A.txt B.txt
a.txt b.txt
[root@wangke mnt]# ls ??.txt
ab.txt
[]:匹配[]内的任意单个字符

[root@wangke mnt]# ls [abc].txt
a.txt b.txt
[^]、[!]:不匹配[]的任意单个字符

[root@wangke mnt]# ls
1.txt a.txt b.txt
ab.txt A.txt B.txt
[root@wangke mnt]# ls [ac].txta.txt
[root@wangke mnt]# ls [!ac].txt
1.txt A.txt b.txt B.txt
[root@wangke mnt]# ls [^ac].txt
1.txt A.txt b.txt B.txt
{}

{a..f}:a到f
[root@wangke mnt]# touch {a..f}.txt
[root@wangke mnt]# ls
a.txt b.txt c.txt d.txt e.txt f.txt

{A,C}:A和C
[root@wangke mnt]# touch {A,C}.txt
[root@wangke mnt]# ls
a.txt b.txt C.txt e.txt
A.txt c.txt d.txt f.txt
vim:创建、查看、编辑文件

vi和vim的区别

vim的vi的升级版
vim有高亮显示
vim的三种模式

命令模式:直接用vim打开文件就是命令模式,标识符:1.光标闪动,2.左下角有文件名、行数、字符数
输入模式:按aio任意字符即可进入输入模式,标识符:输入/中,insert/英文
末行模式:最后一行输入保存退出内容,标识符:”:(冒号)”
三种模式的切换

命令模式 aio —->输入模式

Original: https://www.cnblogs.com/gaoziman/p/linux-blog.html
Author: 爱笑的Gao
Title: Linux基础入门笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609687/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • docker:打包node+npm+pm2运行环境镜像

    最近公司有一个外包项目需要在不能连外网的情况下部署node项目到甲方公司内部。直接使用node官网的安装包可以获得node运行环境,但像pm2这种工具要离线装就会比较费劲,所以最终…

    Linux 2023年6月13日
    088
  • Linux、Windows下Redis的安装即Redis的基本使用详解

    前言 什么是Redis Redis是一个基于 内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件,它是「 Remote Dictionary …

    Linux 2023年6月6日
    0111
  • 【Java】关于Maven仓库地址

    Maven仓库地址 仓库 如果你没有配置阿里云仓库镜像源,可以到这里来找 https://mvnrepository.com/ 如果你配置了阿里云仓库镜像源,可以来这里找 http…

    Linux 2023年6月14日
    091
  • SQL44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005

    本题链接表结构如下所示。 +—-+——–+—————–+————+————+ | id | emp_no | t…

    Linux 2023年6月13日
    095
  • 安装了nodejs,但是npm命令没反应(因环境变量导致的问题)

    解决方法:在环境变量-系统变量的Path里添加nodejs的安装路径地址,默认为”C:\Program Files\nodejs”。 Original: h…

    Linux 2023年6月7日
    092
  • Python之NMAP详解

    NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些…

    Linux 2023年6月14日
    0112
  • 文件夹图标修改软件 FolderIco

    本来文件夹图标是可以自定义的,只要找好图片,在软件中把图片格式转换成ico,再在文件夹属性中设置图标就可以了。 但是我发现转换出来的ico不够清晰,只有256*256,在大图标模式…

    Linux 2023年6月6日
    0105
  • 【原创】Linux v4l2框架分析

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年5月27日
    074
  • OSPF之Default-router-advertise 解析

    1、关于default-route-advertise命令 Ospf是可以通过import-route命令引入外部路由的,但很少有人会注意到,在默认情况下,ospf是不会引入来自外…

    Linux 2023年6月14日
    094
  • 03-MySQL事务

    数据库事务 1、事务特性 1.1、原子性 即不可分割性,事务要么全部被执行,要么就全部不被执行 1.2、一致性 事务的执行使得数据库从一种正确状态转换成另一种正确状态 1.3、隔离…

    Linux 2023年6月7日
    075
  • 网络设备配置–7、配置单臂路由实现跨vlan通信

    一、前言 同系列前几篇:网络设备配置–1、配置交换机enable、console、telnet密码网络设备配置–2、通过交换机划分vlan网络设备配置&#8…

    Linux 2023年6月8日
    0100
  • 嵌入式软件架构设计-模块化

    1 前言 模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功…

    Linux 2023年6月7日
    0106
  • apk自签证书

    需要用到keytool.exe (位于D:\Program Files\Java\jdk1.8.0_291\jre\bin目录下),使用产生的key对apk签名用到的是jarsig…

    Linux 2023年6月8日
    096
  • HTS备份脚本

    #!/bin/bash #program:用于升级前后备份;看时间戳 #author:sundz #version:v1 20220610 创建脚本 备份mysql以及aboss程…

    Linux 2023年6月7日
    065
  • 实验一 密码引擎-3-电子钥匙功能测试

    任务详情 1 解压”龙脉密码钥匙驱动实例工具等”压缩包2 在Ubuntu中运行 “龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf…

    Linux 2023年6月8日
    095
  • Xshell中用./startup.sh启动时候提示权限不够

    授予脚本权限 chmod u+x *.sh 或者使用 chmod 777 ./service-demo.sh Original: https://www.cnblogs.com/q…

    Linux 2023年5月28日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球