操作系统简介

世上本没有路,走的人多了,便变成了路。——鲁迅

这句话真的是鲁迅说的,出自鲁迅的《故乡》,我们可以理解为一个东西用的人多了,自然而然就会把这个东西的使用方式打磨完善了,人类自动获得了智慧开始就掌握了工具的使用方法。众所周知做不同的事情就需要有不同的方法,走不同的路,也就有了不同的工具。

一台机器往往有不同的零件组成,一台电脑也是由很多不同的硬件组成,这么多的硬件设备,就需要有一个系统去代替我们管理好,这个就是操作系统。

操作系统需要完成的任务很简单,就是去学习每个硬件的不同使用方法,专业的术语叫“安装驱动程序”,当操作系统学会了每个硬件的使用方法之后,就会以某种人类可以操作的方式来被人类使用,有的操作系统是图形化界面的,我们可以鼠标点击来操作,有的是命令行的,我们需要输入命令来操作,不管是哪种方式,最终都是让计算机硬件来为我们而工作。

img

Linux操作系统

不同的人对计算机有不同的操作习惯,不同的使用场景对操作系统有不同的挑战,所以当前就出现了多种多样的操作系统

  • Windows
    • 收费闭源操作系统,主要用于日常办公、游戏、娱乐多一些
  • Linux
    • 免费的,开源的,主要用于服务器领域,性能稳定,安全
  • Unix
    • 用于封闭的硬件环境,企业的应用依赖于定制化开发

Linux图谱

Linux发展到今天出现了大量不同的分支。不同的分支都有不同的发展方向,可以扫描下面二维码,查看Linux发现分支图,或者点开此链接

img

Linux名词

  • Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。
  • Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品

vmware安装

双击安装包

img

img

img

img

img

img

输入许可证

img

img

img

Kali Linux介绍

Kali Linux 是一种基于 Debian 的 Linux 发行版,专门用于数字取证和渗透测试。

Kali Linux导入

下载 kali 镜像 https://www.kali.org/get-kali/#kali-virtual-machines

解压文件 kali-linux-2023.1-vmware-amd64.7z

打开 VMware Workstation Pro

image-20230526142454530

找到刚刚解压的文件,双击打开

image-20230526143213119

虚拟机导入成功

image-20230526143333520

给虚拟机拍摄一个快照

image-20230526143531778

初识shell

虽然我们已经安装好了系统,但是光会安装不会操作是不够的。我们还要像玩手机一样熟悉并记忆操作方法。

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上shell是一个命令解释器,它解释用户输入的命令并且把用户的意图传达给内核。(可以理解为用户与内核之间的翻译官角色)

img

我们可以使用shell实现对Linux系统单的大部分管理,例如:

  1. 文件管理
  2. 用户管理
  3. 权限管理
  4. 磁盘管理
  5. 软件管理
  6. 网络管理
  7. ....

使用shell的两种方式

  • 交互式命令行
    • 默认等待用户输入命令,输入一行回车后执行一行命令
    • 效率低 适合少量的工作
  • shell脚本
    • 将需要执行的命令和逻辑判断语句都写入一个文件中,一起运行
    • 效率高 适合完成复杂,重复性工作

bash shell提示符

登录Linux系统之后,默认进入交互式的命令行界面,在光标前边会出现提示符

┌──(root㉿kali)-[~]
└─# 
┌──(用户名㉿主机名)-[目录名]
└─权限标识
  • 用户名
    • 当前登录的用户
  • 主机名
    • 当前这台主机的名字,默认叫localhost
  • 目录名
    • 当前光标所在的目录
    • 当前用户家目录表示成~
  • 权限标识
    • 超级管理员权限就表示为#
    • 普通用户标识为$

shell语法

命令 选项 参数

┌──(kali㉿kali)-[~]
└─$ ls  

┌──(kali㉿kali)-[~]
└─$ ls --long

┌──(kali㉿kali)-[~]
└─$ ls -l

┌──(kali㉿kali)-[~]
└─$ ls -h -l

┌──(kali㉿kali)-[~]
└─$ ls -hl

┌──(kali㉿kali)-[~]
└─$ ls -hl /etc

我们也可以查看这个命令的相关帮助

┌──(kali㉿kali)-[~]
└─$ ls --help |grep human
  -h, --human-readable       with -l and -s, print sizes like 1K 234M 2G etc.

常用命令

Linux的常见命令比较多,这边只列出初学者最常用的部分命令,大家可以根据命令意思去进行练习。

注意Linux会准确的识别出命令的大小写,所以大家需要注意大小写的问题。命令选项和参数之间是用空格进行分隔,请大家在输入的时候注意不要缺失空格。

学习Linux最重要的就是以下三个方面

1. 命令的积累
2. 原理的掌握
3. 大量的实战

下面就是开始第一步,积累基础的命令

修改主机名

临时修改主机名

hostname [hostname]

永久修改主机名

echo kali > /etc/hostname
hostnamectl set-hostname eagle

ls

用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)

 ls [-alrtAFR] [name...]

选项

  • -a:显示所有文件及目录 (.开头的隐藏文件也会列出)
  • -l:除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r:将文件以相反次序显示(原定依英文字母次序)
  • -t:将文件依建立时间之先后次序列出
  • -A:同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
  • -F:在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/",链接加"@"
┌──(root㉿kali)-[~]
└─# ls -F
adjtime                  e2fsck.conf   ld.so.conf                pm/              shadow-
aliases                  environment   ld.so.conf.d/             polkit-1/        shells
aliases.db               ethertypes    libaudit.conf             popt.d/          skel/
alternatives/            exports       libnl/                    postfix/         ssh/
anacrontab               favicon.png@  libuser.conf              ppp/             ssl/
asound.conf              filesystems   locale.conf               prelink.conf.d/  statetab
audisp/                  firewalld/    localtime@                printcap         statetab.d/
audit/                   fstab         login.defs                profile          subgid
bash_completion.d/       gcrypt/       logrotate.conf            profile.d/       subuid
bashrc                   gnupg/        logrotate.d/              protocols        sudo.conf
binfmt.d/                GREP_COLORS   lvm/                      python/          sudoers
centos-release           groff/        machine-id                rc0.d@           sudoers.d/
centos-release-upstream  group         magic                     rc1.d@           sudo-ldap.conf
chkconfig.d/             group-        makedumpfile.conf.sample  rc2.d@           sysconfig/
chrony.conf              grub2.cfg@    man_db.conf               rc3.d@           sysctl.conf
chrony.keys              grub.d/       mke2fs.conf               rc4.d@           sysctl.d/
cron.d/                  gshadow       modprobe.d/               rc5.d@           systemd/
cron.daily/              gshadow-      modules-load.d/           rc6.d@           system-release@
cron.deny                gss/          motd                      rc.d/            system-release-cpe
cron.hourly/             host.conf     mtab@                     rc.local@        terminfo/
cron.monthly/            hostname      my.cnf                    redhat-release@  tmpfiles.d/
crontab                  hosts         my.cnf.d/                 resolv.conf      tuned/
cron.weekly/             hosts.allow   NetworkManager/           rpc              udev/
crypttab                 hosts.deny    networks                  rpm/             updatedb.conf
csh.cshrc                init.d@       nsswitch.conf             rsyslog.conf     vconsole.conf
csh.login                inittab       nsswitch.conf.bak         rsyslog.d/       vimrc
dbus-1/                  inputrc       openldap/                 rwtab            virc
default/                 iproute2/     opt/                      rwtab.d/         wgetrc
depmod.d/                issue         os-release@               sasl2/           wpa_supplicant/
dhcp/                    issue.net     pam.d/                    securetty        X11/
DIR_COLORS               kdump.conf    passwd                    security/        xdg/
DIR_COLORS.256color      kernel/       passwd-                   selinux/         xinetd.d/
DIR_COLORS.lightbgcolor  krb5.conf     pkcs11/                   services         yum/
dracut.conf              krb5.conf.d/  pki/                      sestatus.conf    yum.conf
dracut.conf.d/           ld.so.cache   plymouth/                 shadow           yum.repos.d
  • -R:若目录下有文件,则以下之文件亦皆依序列出
  • -h:将显示出来的文件大小以合适的单位显示出来

实例

  • 查看当前目录下的文件
┌──(root㉿kali)-[~]
└─# ls
  • 查看根目录下的文件,查看/usr目录下的文件
┌──(root㉿kali)-[~]
└─# ls /

┌──(root㉿kali)-[~]
└─# ls /usr
  • 查看当前目录下所有文件,包括隐藏文件
┌──(root㉿kali)-[~]
└─# ls -a
  • 查看当前目录下文件详情,包括隐藏文件
┌──(root㉿kali)-[~]
└─# ls -lha
  • 查看当前目录下的文件,并且显示出目录,文件,程序的区别
┌──(root㉿kali)-[~]
└─# ls -F
anaconda-ks.cfg  dirb/  dird/  file2  file4  ping*
dira/            dirc/  dire/  file1  file3  file5
# 可以看到普通文件只有文件名,可执行文件后面带*,文件夹后面带/
  • 查看当前目录下的文件,如果有文件夹,那么将文件夹中的文件也显示出来
┌──(root㉿kali)-[~]
└─# ls -FR
# dir这是一个目录,在这个目录下的文件也全部显示出来

┌──(root㉿kali)-[~]
└─# ls -FRl
# 显示详细的信息

扩展知识

┌──(root㉿kali)-[~]
└─# ls -ahl
总用量 24K
dr-xr-x---.  3 root root 139 4月   2 14:00 .
dr-xr-xr-x. 17 root root 224 6月  21 2020 ..
-rw-------.  1 root root 128 4月   2 09:37 .bash_history
-rw-r--r--.  1 root root  18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root 176 12月 29 2013 .bashrc
-rw-r--r--.  1 root root 100 12月 29 2013 .cshrc
drwxr-xr-x.  2 root root  32 4月   2 14:00 dir
-rw-r--r--.  1 root root 129 12月 29 2013 .tcshrc
-rw-r--r--.  1 root root   0 4月   2 14:00 test.txt
  1. 第一列共10位,第1位表示文档类型,d表示目录,-表示文件,l表示链接文件,b表示可随机存取的设备,如U盘等,c表示一次性读取设备,如鼠标、键盘等。后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。如:-r-xr-x---的含义为当前文档是一个文件,拥有者可读、可执行,同一个群组下的用户,可读、可写,其他人没有任何权限
  2. 第二列表示链接数,表示有多少个文件链接到inode号码。
  3. 第三列表示拥有者
  4. 第四列表示所属群组
  5. 第五列表示文档容量大小,单位字节
  6. 第六列表示文档最后修改时间,注意不是文档的创建时间哦
  7. 第七列表示文档名称。以点(.)开头的是隐藏文档

cd

用于切换当前工作目录

cd [dirName]

实例

  • 跳转到/usr/bin目录下
┌──(root㉿kali)-[~]
└─# cd /usr/bin
  • 跳到自己的 home 目录
┌──(root㉿kali)-[~]
└─# cd ~
  • 跳到目前目录的上一层
┌──(root㉿kali)-[~]
└─# cd ..

pwd

显示工作目录

pwd [-LP]
  • -L 打印 $PWD 变量的值,如果它命名了当前的工作目录
  • -P 打印当前的物理路径,不带有任何的符号链接

默认情况下,pwd的行为和带-L选项一致

clear

用于清除屏幕

clear

echo

用于字符串的输出

echo [-neE] 字符串

选项

  • -n:不输出行尾的换行符
  • -e:允许对下面列出的加反斜线转义的字符进行解释
    • \ 反斜线
    • \a 报警符(BEL)
    • \b 退格符
    • \c 禁止尾随的换行符
    • \f 换页符
    • \n 换行符
    • \r 回车符
    • \t 水平制表符
    • \v 纵向制表符
  • -E 禁止对在STRINGs中的那些序列进行解释

实例

  • 显示出hello world
┌──(root㉿kali)-[~]
└─# echo "hello world"
  • 用两行显示出hello world
┌──(root㉿kali)-[~]
└─# echo -e "hello\nworld"
  • 输出hello world的时候让系统发出警报音
┌──(root㉿kali)-[~]
└─# echo -e "hello\aworld"

系统命令

poweroff

用于关闭计算器并切断电源

poweroff [-n] [-w] [-d] [-f] [-i] [-h]

选项

  • -n: 在关机前不做将记忆体资料写回硬盘的动作
  • -w: 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
  • -d: 不把记录写到 /var/log/wtmp 文件里
  • -i: 在关机之前先把所有网络相关的装置先停止
  • -p: 关闭操作系统之前将系统中所有的硬件设置为备用模式。

reboot

用来重新启动计算机

reboot [-n] [-w] [-d] [-f] [-i]

选项

  • -n: 在重开机前不做将记忆体资料写回硬盘的动作
  • -w: 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
  • -d: 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
  • -f: 强迫重开机,不呼叫 shutdown 这个指令
  • -i: 在重开机之前先把所有网络相关的装置先停止

whoami

用于显示自身用户名称

[root@localhost ~]# whoami
root

快捷键

快捷键 作用
^C 终止前台运行的程序
^D 退出 等价exit
^L 清屏
^A 光标移动到命令行的最前端
^E 光标移动到命令行的后端
^U 删除光标前所有字符
^K 删除光标后所有字符
^R 搜索历史命令,利用关键词

帮助命令

history

history [n]  n为数字,列出最近的n条命令

选项

  • -c:将目前shell中的所有history命令消除
  • -a:将目前新增的命令写入histfiles, 默认写入~/.bash_history
  • -r:将histfiles内容读入到目前shell的history记忆中
  • -w:将目前history记忆的内容写入到histfiles

实例

  • 将history的内容写入一个新的文件中
┌──(root㉿kali)-[~]
└─# history -w histfiles.txt
  • 情况所有的history记录,注意并不清空~/.bash_history文件
┌──(root㉿kali)-[~]
└─# history -c
  • 使用!执行历史命令。
  • !number执行第几条命令
  • !command从最近的命令查到以command开头的命令执行
┌──(root㉿kali)-[~]
└─# history 
    1  history 
    2  cat .bash_history 
    3  ping -c 3 baidu.com
    4  history 

┌──(root㉿kali)-[~]
└─# !3
# 这里是执行第三条命令的意思

alias

用于设置指令的别名

实例

  • 查看系统当前的别名
┌──(root㉿kali)-[~]
└─# 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'

┌──(root㉿kali)-[~]
└─# ll
总用量 4
-rw-------. 1 root root 1241 8月  22 2018 anaconda-ks.cfg
drwxr-xr-x. 2 root root   19 8月  21 12:15 home

┌──(root㉿kali)-[~]
└─# type -a ls    # 查看命令类型
ls 是 `ls --color=auto' 的别名
ls 是 /usr/bin/ls
  • 修改别名,比如使用wl来查看IP地址相关信息
┌──(root㉿kali)-[~]
└─# alias wl='ip address'

┌──(root㉿kali)-[~]
└─# wl
  • 为了让别名永久生效,可以讲修改别名的命令写入bashrc文件,这个文件中的命令会在每次登陆命令行的时候执行
┌──(root㉿kali)-[~]
└─# echo "alias wl='ip address'" >> /etc/bashrc
学前沿IT,到英格科技! all right reserved,powered by Gitbook本文发布时间: 2025-04-15 20:07:18

results matching ""

    No results matching ""