(u盘安装kali无法挂载安装光盘)

一. 常见的操作系统

服务器版(企业版)和客户端版(个人版)

window:

server: windows server 2000/2003/2008/2012

client: 电脑xp win7 win8 vista win10

linux:

enterprise: 企业版

rhel red hat enterprice linux

ubuntu

debian

commity: 社区版

CentOS

desktop: 桌面版

fedora (rhel/centos)

ubuntu

opensuse

unix: 商业版系统(与linux七成是相似的)

IBM AIX

HP hp-unix

sun/oracle solaris

freebsd

二. 安装linux系统

安装方法:

1,光盘

2,U盘

3,硬盘 拷盘

4,网络安装(批量自动化安装 ks文件)

网络安装需要的条件:

1,服务器 (安装并启动服务,提供系统镜像)

2,客户端 更改BIOS(basic input and output system)启动顺序

PXE技术

NFS安装路径:

IP: 10.0.0.2

路径: /yum

2. linux设备命名

sda

s代表磁盘接口类型 SCSI,SATA (如果是IDE接口,第一个用h字母表示 )

d代表disk

a代表第一个disk,同理b代表第二个,c代表第三个...以此类推(sda,sdb,sdc...)

sda1 第一个磁盘的第一个分区

sda2 第一个磁盘的第二个分区

sda3 第一个磁盘的第三个分区

sda4 第一个磁盘的第四个分区

sde4 代表第五个磁盘的第四个分电脑

3. 分区信息存放在分区表

分区表存放在MBR (Master bootloader record 主引导记录)

MBR在你BIOS设定的启动硬盘最前面512个字节

512=446+64+2 其中这64个字节是用来存放分区表的

16个字节一个分区,所以64个字节只能存放4个分区

主分区只能有4个

如果想超过4个分区是可以的

主分区 primary P

扩展分区 extend E

逻辑扩展分区 logical L

3P + 1E

MSDOS分区 BIOS (4个主分区;3主分区+1逻辑分区)

GPT分区 (不受4个主分区这种限制,单个分区支持大于2TB) EFI/UEFI

linux分区最简单的分法是只分一个根分区 /

在这里学习建议的分区规则:

分区 挂载目录 大小

/dev/sda1 /boot 100M-200M

/dev/sda2 / 100G

/dev/sda3 swap 4G (可以与你的内存一样大)

/dev/sda4 extend 余下的所有空间

/dev/sda5 /soft 100G

/dev/sda6 /vm 100G以上

三.终端

1. pts终端(图形下终端)

打开终端方式:

右键点桌面,选择open in terminal

快捷键alt+f2,输入gnome-terminal或konsole

ctrl+shift+加号+加号 放大

ctrl+减号+减号 缩小

ctrl+shift+t 再开一个终端

2. tty终端(文本终端)

ctrl+alt+F2到F6 文本终端(F2(tty2),F3(tty3)...)

ctrl+alt+F1 切回图形(F1(tty1)),需要安装桌面软件(gnome,kde)

四. linux文件系统组织结构

1. 文件系统

windows文件系统

硬盘

├── C:\ 分区

├── D:\ 分区

├── E:\ 分区

└── F:\ 分区

区别:

windows上叫文件夹(folder)

linux上叫目录(directory)

linux文件系统:

树状目录结构

/etc/skel /etc/ssl 等等

|--------|

bin sbin etc home var tmp root dev 等等

| | | | | | | |

|--------------------------------- |

/根目录

2. 目录存放的内容

bin:(binary)放命令文件,一般是普通用户能使用的命令

sbin: 放命令,是管理员使用的命令

usr:放用户数据的(编译安装的软件,用户的软件源码,等等,相当于是一个用户的根)

dev:设备目录(linux下有一句话可以这样说,任何设备都是文件)

计算机的物理硬件都对应一个或多个文件。

/dev/pts pts终端

/dev/tty tty终端(w,who am i,tty)

/dev/ram 内存条

/dev/input 输入设备

/dev/sda 硬盘

/dev/sda1 第一个分区

/dev/stdin 标准输入设备(键盘)

/dev/stdout 标准输出设备(显示器)

/dev/stderr 标准输出设备(显示器)

lib或lib64:放库文件(.so动态库文件 .a静态库文件)(C:\WINDOWS\system32下的.dll)

root:超级管理员的家目录

home:其它普通用户的家目录

tmp:临时目录,存放很多软件运行的一些临时文件(这个目录所有都可以使用,权限是1777)

boot:存放开机启动有关的一些文件(单独分区)

etc:大部分的软件的配置文件和操作系统的配置文件都存放在这

proc: 这两个是伪文件系统,记录系统动态的一些信息(当前系统的各种状态,系统自动维护,无需干预)

sys:

(以前就只有一个proc,现在分成了两个proc就是processes的缩写,sys是system的缩写)

var:一个比较综合的目录,存放了日志,pid文件,邮件等等(variable,可变的)

selinux:存放selinux(security enhanced linux)规则的目录

mnt nfs

media u盘

misc 光盘

三个空目录,一般用于挂载用的(外设:u盘,移动硬盘)

opt 空目录,用于安装扩展软件包(optional)

3. 相对路径和绝对路径

绝对路径:以/开头的目录

cd /etc/abrt/

相对路径:不是以/开头的目录

cd plugins/

# tty

/dev/pts/1 --绝对路径

# who am i

root pts/1 2016-01-06 11:45 (:0.0) --相对路径

4. 家目录

# pwd --查看你当前在哪个目录

/root/Desktop --这个就是你的桌面

# nautilus /root/ --图形方式打开目录

进入家目录:

cd 回车 --最快

cd ~ --~表示家目录

管理员进入普通用户家目录:

cd ~user1

普通用户家目录:

/home/user1

/home/user2

五. 命令基础

1. 内部命令

内部命令:bash软件自带的命令

查看当前使用的shell

echo $SHELL

终端相当于bash的接口

用户

|

终端

|

shell(壳) bash ksh csh --解释命令

内核

# cat /etc/shells --系统上支持的shell

/bin/sh

/bin/bash

/sbin/nologin

/bin/tcsh

/bin/csh

man cd

bash, :, ., [, alias, bg, bind, break, builtin, caller,

cd, command, compgen, complete, compopt, continue,

declare, dirs, disown, echo, enable, eval, exec, exit,

export, false, fc, fg, getopts, hash, help, history, jobs,

kill, let, local, logout, mapfile, popd, printf, pushd,

pwd, read, readonly, return, set, shift, shopt, source,

suspend, test, times, trap, true, type, typeset, ulimit,

umask, unalias, unset, wait - bash built-in commands, see

bash(1)

退出按q

2. 外部命令

除了内部命令以外的都叫外部命令

3. 获取帮助

man是manual的缩写,manual是手册

man man --man手册的帮助

The standard sections of the manual include:

1 User Commands --用户命令

2 System Calls --系统调用

3 C Library Functions --C语言开发库函数

4 Devices and Special Files --设备和特殊文件

5 File Formats and Conventions --文件格式和转换

6 Games et. Al.

7 Miscellanea

8 System Administration tools and Deamons

man -f passwd

passwd (1) - update user's authentication tokens

passwd (5) - password file

man 1 passwd

man 5 passwd

man ls

ls --help --这2种方式都可以获得帮助信息

help cd --只有内部命令才能用

help ls --ls是外部命令,不能这样获得帮助

ls /usr/share/man/ --man文档的位置

man的数字只是一个分类而已,不用太在意

# man zcat --有文档

# mv /usr/share/man/man1/zcat.1.gz /root/

# man zcat --还是有文档,但是换成了1p这个分类里的文档

# mv /usr/share/man/man1p/zcat.1p.gz /root/

# man zcat --没有了

No manual entry for zcat

# mv /root/zcat.1.gz /usr/share/man/man2/ --移回来,但是没有放到1分类,而是放到2分类里,结果是看不到的

# man zcat

No manual entry for zcat

# mv /usr/share/man/man2/zcat.1.gz /usr/share/man/man1/

# mv /root/zcat.1p.gz /usr/share/man/man1p/ --都移回云还原

六. 命令串讲

1. 文件操作有关的命令

ls --查看目录内容

ls [OPTION]... [FILE]... --[]扩起来的内容可选的,可有可无

常用选项:

-a,--all --所有的文件,linux系统中,以点开头的文件是隐藏文件

-A --所有的文件,不包括.和.. .表示当前目录 ..表示当前目录的上一级目录

-d --目录本身

-h --文件大小的单位

-i --显示i节点信息

-l --长格式

-S --按照文件大小排序

短选项不分先后,可以一起写(长选项不能一起):

ls -l -a 或 ls -a -l 或 ls -al 或 ls -la

which

which ls --查看ls命令路径和别名情况

alias ls='ls --color=auto'

/bin/ls

# which man

/usr/bin/man

# which reboot

/sbin/reboot

alias --别名

# alias

alias cp='cp -i'

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 c='clear' --给clear命令取别名

# unalias c --取消别名

# dir --没色彩

# alias dir='dir --color=auto' --做个别名

# dir --有了

# unalias dir --取消别名

永久有效:

# gedit ~/.bashrc

加入自己定义的别名:

alias c='clear'

alias dir='dir --color=auto'

# source ~/.bashrc --让配置文件生效

# . ~/.bashrc --让配置文件生效

# clear --清屏命令

ls -l

看到的内容第一位表示文件类型,总共七种类型

- 普通文件(文本文件和二进制文件)

d directory目录

p pipe管道文件

s socket文件(套接字文件)

l link链接文件(windows快捷方式类似)

b block块设备文件(硬盘,内存条)

c character字符型设备文件

file命令查看文件类型

file filename

# mkfifo pipe --产生管道文件

# echo 123 > pipe --终端1

# cat pipe --终端2

123

# mksock socket --创建socket文件

# nc -lU /tmp/socket

# nc -U /tmp/socket

cd --进入某个目录 (change directory)

pwd --显示当前工作目录(print working directory)

mkdir --创建目录(make directory)

# mkdir aaa --在当前目录创建一个目录

# mkdir bbb ccc ddd --在当前目录创建多个目录

# mkdir /opt/eee --在/opt目录下创建一个目录

# mkdir -p a/b/c/d --用于常见多级目录; p参数执行多次,不报错

touch --创建一个普通文本文件

# touch 1 --创建空文件名为1 (更准确的说法为改变文件时间戳)

# touch 2 3 4 5 --创建多个文本文件

# stat 1

File: `1'

Size: 0 Blocks: 0 IO Block: 4096 regular empty file

Device: 802h/2050d Inode: 4718598 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2015-07-02 15:32:50.951967259 +0800

Modify: 2015-07-02 15:32:50.951967259 +0800

Change: 2015-07-02 15:32:50.951967259 +0800

block 块,操作系统块是一次IO的单位,系统块默认大小为4096字节(类似windows簇)

inode 是文件系统给文件的一个编号,类似于文件的一个门牌号码

块大小为4096的情况,一个文件占4097个字节,那么他要占两个块

一个优化有关的问题:

块大好,还小好?

块大,一次IO数据量大,IO吞吐量大,空间浪费较多

块小,正好和块大相反

我想创建多个文件怎么做?

第一种:touch {1..10} --中间的.只能有2个

第二种:seq 11 2 20 |xargs touch --seq产生一个序列, |符号是管道(表示把前面的结果传到后面)

第三种:写shell脚本做循环

产生一个序列:

# echo {1..10} --产生一个序列的数字,从1到10

1 2 3 4 5 6 7 8 9 10

# echo {10..1}

10 9 8 7 6 5 4 3 2 1

# echo {1..10..2} --2是步长

1 3 5 7 9

# seq 1 10 | xargs

1 2 3 4 5 6 7 8 9 10

# seq 1 2 10 | xargs

1 3 5 7 9

# seq -s \" \" 10 20 --s参数数字间的分割符

# seq -w -s \" \" 1 100 --宽度相等

# seq -f \"%.2f\" 1.111 10.14 --小数序列

touch {a..z} -- 产生字母序列

touch {a..z..2}

touch {A..Z}

touch {A..Z..2}

电脑

touch a{1..5}

touch a{1..5}.txt

touch {1..5}{a..f}

cp --copy,复制/拷贝; 拷贝普通文件和目录,拷贝其他类型的文件有问题

cp SOURCE DEST --source是要复制的文件,dest是复制到的地方

-r --复制目录

# cp 1.txt /test/ --复制文件

# cp abc /test/ --不加-r参数会报错

cp: omitting directory `abc'

# cp -r abc /test/ --r拷贝目录

mv --move,移动文件或重命名文件

mv SOURCE DEST --source是要移动的文件,dest是移动到的地方

# mv 1.txt /test/ --移动文件

# ls /test/

1.txt

# mv abc/ /test/ --移动目录,直接移,不需要加参数

# mv 1.txt 2.txt --重命名

# mv 1.txt /root/2 --移动文件时重命名

# cp 2 /share/1.txt --复制时重命名

rm --remove,删除文件

-i --询问

-f --force,强制删除,不询问

-r --递归,用于删除目录

# rm 1.txt -f

# rm aaa --删除目录出错

rm: cannot remove `aaa': Is a directory

# rm aaa -rf --删除目录

# rm -rf /

rm: it is dangerous to operate recursively on `/'

rm: use --no-preserve-root to override this failsafe

--强烈建议:敲命令多使用TAB键自动补全

2. 文件查看有关的命令

cat --查看文件内容

# cat 1.txt --查看文本文件内容

# cat -n 1.txt --显示行号,空行也算一行

# cat -nb 1.txt --显示行号,空行忽略

head --显示文件前十行的内容(默认)

# head 1.txt

# head -n 20 1.txt --显示文件前20行的内容

# head -20 1.txt --显示文件前20行的内容

tail --查看文件最后十行的内容(默认)

# tail -n 5 1.txt --最后5行

# tail -5 1.txt --最后5行

小实验;

一个终端 tail -f 1.txt

另一个终端echo \"hello\" >> 1.txt

再观察第一个终端的变化

more

# more 1.txt --分页显示,回车显示下一行,空格显示下一页,q退出

less --分页显示,回车显示下一行,空格显示下一页,q退出,/string查找string

# less 1.txt

tac --文件内容的输出上下反,不影响源文件

# tac 1.txt tac 反过来 cat

rev

# rev 1.txt --左右反,不影响源文件

批量重命名

# touch {1..100}.php

问题:把这100个.php结尾的文件重命名成.html结尾

提示:man rename

# rename .php .html *.php


电脑