Linux——系统、命令、shell、编译

操作系统的功能:
  存储管理、进程和处理机管理、文件管理、设备管理、用户接口

[mengqc@localhost ~]$ 是shell主提示符。其中

  •  “mengqc”表示当前用户名
  •  “localhost”是默认的主机名
  •  “~” 表示默认用户主目录
  •  “$ ” 表示当前用户是普通用户。对于超级用户来说,该位置出现的标示是“# ”。

linux操作系统常用命令

ls:查看当前目录下的文件夹

  • -a:列出隐藏文件,-A:隐藏. ..文件
  • -l :详细信息
  • -t:修改时间排序
  • -n:uid gid
  • -r:倒序排列
  • -s:打印每个文件以block为单位打印大小
  • ll=ls -l

data:显示时间

cal:显示日历

passwd:更改密码

cp -f file1 file2:复制文件

who:显示谁在登录以及时间

  • $:普通用户。
  • #:root。

pwd:查看当前路径。

man ls :ls的帮助文档。

>;输出重定向,如果一个文件存在,删除后重新建立一个文件。

>>:输出重定向,如果一个文件存在,则追加到原文件末尾。

cat:打开一个文件

history:打开键入的命令列表。

  打开后用!+ 编号 即可执行;!!:运行上一个命令;!-n:运行倒数第n个个命令;!cmd:运行cmd开头的命令。

当敲长命令时,输入几个字母+tab键,可以实现移动补充。

linux用户和组

  介绍:登录用户是进入Linux的途径,系统中将用户看作是32位的二进制数,即是一个userID,用户信息存储在/etc/passwd中,root的ID是0;出于安全考虑,显示密码的第二个字段显示为X,密码存储在/etc/shadow文件中。

passwd文件:
  用户名|x|用户id|用户2所在组id|备注信息|家|登录shell

  • 一般用户:id>=500
  • 超级用户:id=0
  • 系统用户:id<500

shadow文件:
  用户名:加密密码:最近更改密码的日期:密码不可更改的天数:密码更改期限前的警告时间:密码过期的宽限时间:账号失效日期:保留字段
  注:数字是距离1970.1.1多少天到现在

添加用户useradd、adduser

  • useradd username:添加用户
  • passwd username:更改用户密码

  注:此命令实现了1.给用户分配最大的id号 2、在passwd文件中添加一行 3、在/home/下创建用户的家 4、在/etc/group/下添加用户的组

修改用户usermod

  • -c <备注>   修改用户帐号的备注文字。comment
  • -d <登入目录>  修改用户登入时的目录。
  • -e <有效期限>  修改帐号的有效期限。
  • -f <缓冲天数>  修改在密码过期后多少天即关闭该帐号。
  • -g <群组>   将用户只存在到新的组
  • -G <群组> 将用户再加到别的次要组上
  • -l <帐号名称>  修改用户帐号名称。
  • -L   锁定用户密码,使无效。
  • -s   修改用户登入后所使用的shell。
  • -u   修改用户ID
  • -U   解除密码锁定。
  • 删除用户userdel
  • -r 删除用户所有信息
  • -f 删除用户主目录和邮箱 su命令:
    su root:切换用户。
    注:普通用户向根用户和其他用户需要输入口令,超级用户向普通用户跳转不需要输入口令。

用户组:用户组文件的路径在/etc/group/下,用户组也有/etc/gpasswd

group文件内容:groupname:密码:groupID:用户列表

gshadow文件内容:gname:password:管路员列表:成员列表

添加用户组 groupadd

  • groupadd 注:添加用户组;
  • groupdel 注:删除用户组;
  • groupmod 注:修改用户组信息

  -n 修改用户组名
groups 注:显示用户所属的用户组
grpck grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;
gpasswd -a 向名为 group 的组中添加用户 user
-d 从名为 group 的组中移除用户 user。

注:这里有关组安全的问题需要注意,组密码是当组中大于一个用户时,在组安全问题中被提出的,细节之后自己好好看看。

文件和目录:

普通文件:文本文件 二进制文件 数据文件

目录文件:I结点/文件名成对存在

i结点:存储文件相关的属性

文件名:存储的是一个字符串,标识该文件

如此做的目的是文件瘦身

设备文件:Linux把设备看作文件,实现设备无关性

符号链接文件:快捷方式

文件控制块:FCB,在linux中就是I结点

Linux树状目录结构

  • bin:目录包含二进制(binary)文件的可执行程序。
  • sbin:目录中存放用于管理系统的命令。:root权限
  • boot:用于存放引导系统时使用的引导文件,有镜像文件等
  • etc:linux系统配置文件,
  • systemd:配置文件目录
  • hosts:ip与名字的对照表
  • services:定义系统服务与端口的对应关系
  • profile:系统全局环境变量配置文件
  • root:目录是超级用户的目录。
  • dev:设备文件
  • lost+found:目录中存放系统非正常关闭时正在处理的文件,以便下次系统启动时予以恢复。
  • home:目录是用户起始目录的基础目录。通常,用户的主目录就保存在该目录中。
  • lib:目录中保存程序运行时使用的共享库。
  • mnt:目录中存放安装文件系统的安装点。挂载点。linux可以访问机器上的所有分区,只要在授权的情况下
  • /run和/media目录使用来自动挂载的目录
  • proc:目录实际上是一个虚拟文件系统。
  • tmp:目录用于存放程序运行时生成的临时文件。
  • usr:目录中包含了多个子目录,其中保存系统上一些最重要的程序,可供所有用户共享。
  • lib64:64位操作系统的函数库
  • src:核心源代码的位置
  • sbin:超级用户才可以执行的命令:如磁盘修复等
  • bin:用户可执行的命令
  • var:包括系统正常运行时要改变的数据。
  • log:存放各种应用程序的日志信息

绝对路径名:从/下开始,即root目录下实现绝对目录
相对路径名:./表示当前目录下 ../表示父目录

工作目录:用户的当前目录
主目录:注册用户是创建的文件时的总目录,在/home下

改变工作目录
① 将当前目录改到/home/liuzh:
$ cd /home/liuzh
② 将当前目录改到用户的主目录:
$ cd 或 cd ~
③ 将当前目录向上移动两级:
$ cd ../..
④ 进入cauc的主目录:
$ cd ~cauc
⑤ 返回刚才的目录,即上一个工作目录
$ cd —

ls命令列出指定目录的内容

chmod命令
只有文件主或超级用户root才有权用chmod命令改变文件或目录的存取权限。

umask命令:
文件的权限是由666-掩码实现的

cp
-a:保留组信息
-r :复制子目录下的文件
-i:交互式复制
-s:复制为符号链接文件,注意,这里是赋值为符号链接文件

rm
-i:交互式删除
-rf:全部删除

mv 文件或目录 文件或目录

mkdir
-m 700 directory
-p 如果上层目录不存在也进行创建

rmdir
-p :删除此目录以上的所有空目录

cat
-n 显示行号

more
-c 清屏
-10 显示10行
-d 显示百分比
/字符串:向下搜索字符串

less 分屏显示文件

group
-g:添加用户到用户组
-ag:追加用户

head
-5 :显示前5行
-v:显示文件名
--bytes=-100 :显示最后一百个字节其他的所有内容

tail
-5 :显示最后5行
-n +10 :显示第10行开始后的所有内容
-c 100 :显示最后一百个字符

gzip
-r:递归压缩
-dv :解压文件并且显示百分比

uzip :解压zip文件

tar:
-cvzf 归档名.tgz 被归档的文件
-xvzf .tgz 解压

注:硬链接和软链接的区别是什么???

硬连接:创建一个文件的时候,首先在磁盘上申请一块空间,然后在目录文件下创建一个文件,这里面存储的是文件名+I结点号,这个文件指向内存中创建的i结点,硬连接的话,在目录上新建了一个文件,但是他们指向了同一个i结点,所以她们的i结点号是相同的。

软链接:创建了一个链接文件,是实实在在的一个属性为l的文件,系统分配新的节点号,磁盘中创建一个文件,文件内容是被链接文件的文件目录,这时候,如果删除被链接文件,是删除了文件目录下的文件名,而软链接的内容就是定向到这个文件下,所以删除文件后,软链接就找不到了。软连接的权限是777。

eval:
将后面的命令,进行相应的变量替换和命令替换,替换的结果作为一个新的命令行输出,并执行
例:
[root@localhost etc]# echo $cmd
echo a
[root@localhost etc]# eval $cmd
a

expr
例子: `expr $1 + 1` 注意:运算符前后有空格
[root@localhost /]# set 1
[root@localhost /]# `expr $1 + 1`
bash: 2: command not found
[root@localhost /]# echo `expr $1 + 1`
2

awk
模式:awk 'BEGIN { command } Pattern{ command } END{ command }'

每一行的数据复制给$0 ;一行内空格分开的值从$1开始一次

echo -e "1\n2" | sort -rn | awk '{ x+=$0 ;} END{ print x}'

echo
-e:激活转义字符

  • sort :对输入流进行行排序
  • -b:忽略每行前面开始出的空格字符;
  • -c:检查文件是否已经按照顺序排序;
  • -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
  • -f:排序时,将小写字母视为大写字母;
  • -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
  • -m:将几个排序号的文件进行合并;
  • -M:将前面3个字母依照月份的缩写进行排序;
  • -n:依照数值的大小排序;
  • -o<输出文件>:将排序后的结果存入制定的文件;
  • -r:以相反的顺序来排序;
  • -t<分隔字符>:指定排序时所用的栏位分隔字符;

mkfs

  • -t<文件系统类型>:指定要建立何种文件系统;
  • -v:显示版本信息与详细的使用方法;
  • -V:显示简要的使用方法;
  • -c:在制做档案系统前,检查该partition是否有坏轨

进程管理

  • Ss:有子进程
  • S<:优先级高
  • SN:优先级低
  • SR+:

对于并发的程序,通过fork();生成子进程后,资源是两个进程之间各赋值了一份,所以两个进程之间并不影响各进程值的结果。

Linux shell脚本变量的使用

shell有两种执行命令的方式:

  • 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
  • 批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

我们要知道bash和sh不是一个东西,我们需要了解,bash完全兼容sh,也就是说,用sh写的脚本可以不加修改的在bash中执行

编写shell的一般习惯:
   功能;作者;版本信息;历史记录;特殊的命令用绝对路劲表示;预先申明和设置脚本运行时的环境变量;

sheel的变量类型:

  • 局部变量:仅仅用于创建的shell中
  • 环境变量:由子shell继承
  • shell变量:shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

shell用$来解析shell变量;
变量赋值 :=;=两边不能有空格

创建变量:shell变量直接定义;环境变量是先定义一个shell变量,然后将export转换为环境变量

列出环境变量:set

列出已经被导出为环境变量的变量:env

export:实现了将父进程的私有数据转到公有区,当运行一个脚本的时候,实际上是进入了一个新的shell环境,也可以说是一个新的进程,这个进程由父进程创建。当export后,就可以将公有区的数据给子进程再复制一份了,注意这不是fork。

shell中一些比较特殊的变量:
特殊变量含义
$0
当前脚本的文件名
$n
传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#
传递给脚本或函数的参数个数。
$*
传递给脚本或函数的所有参数。
$@
传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?
上个命令的退出状态,或函数的返回值。
$$
当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

注:这些变量我们留在这里备份,有用到就可以查。

HOME:用户主目录的全路径名。如/home/myname
LOGNAME:即用户注册名
PWD:当前工作目录的路径。
PATH:shell查找命令的路径(目录)列表,各个目录用冒号(:)隔开。 用户可以设置它: $ PATH=$PATH:$PWD
PS1:shell的主提示符。 $ PS1="$LOGNAME> "
SHELL:当前使用的shell。通常,它的值是/bin/bash。
TERM:终端类型。
MAIL:系统信箱的路径。

wc [选项] 文件…
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
  - c 统计字节数。
  - l 统计行数。
  - w 统计字数。

vi
进入文本编辑的方式

  • i I
  • a A
  • o O

光标移动
右移 方向键、l
左移 h、方向键
上移:
-:上移到行开头
k
Ctrl+P
方向键


移动到当前行的第一个字符:

  • 0:不论是否是空白字符
  • ^:费空白字符

移动到行尾:$

光标移动到第几行 :
Ctrl + G:显示行数
行号 G

移动那到下一个词的开头:w W

移动到前一个词的开头:b B

如果光标在一个词上,就移动到词尾:e E

文本修改

  • 删除光标所在的字符:
  • x:删除光标所在的字符
  • X:删除光标前面的字符
  • nx,从光标前面的字符开始,向左删除n个字符
  • 删除光标所在的整行 dd
  • 从光标开始删除到行尾 D
  • 删除从光标位置+光标移动命令到大的位置

d0:删到行首
d3l:又删三个字符
d$:删到行尾
d5G:删到第5行
dw:删到词末尾
dL
dH

复员命令
回到插入或删除得上一个状态:u
恢复到刚开始编辑状态:U

修改命令:

取代命令:
r:用随后输入的字符取代光标所在的位置
R:相当于r的重复使用

替换命令:
s:用随后输入的字符取代光标所在的位置
S:用随后输入的字符替代整行

文本行合成 :J:把当前行与下一行和成一行

文本移动命令:
>:
>>
<
<<

!+光标移动命令+linux命令

编辑文件

字符串搜索:

  • f 字符
  • F 字符
  • /字符串/位移
  • ?字符串?位移

字符串替换:
一般格式:g/模式/命令
g/s1/p:打印包含所有s1的行
g/s1/s//s2

shell使用

成组命令:

  • {空格 命令1;命令2;}
  • (命令1;命令2)

字符串匹配
grep:标准的正则表达式匹配
egrep:扩展的正则表达式匹配 相当与 -F
fgrep:快速对字符串进行匹配 相当与 -E

  • -f file :从文件中读取匹配模式进行匹配
  • -i:忽略大小写
  • -l :列出匹配模式的文件名,而非打印
  • -q:如果匹配了,grep会静默的离开,将其不匹配的行写入标准输出,否则不成功
  • -v:显示不匹配的行


shell语言可以说是文本处理语言,但是它应该具备一定的运算能力

变量

环境变量:全局变量,会继承
普通变量:局部变量,不会继承

常量
对变量的管理有 readonly 和 export
shell变量的创建没有啥要求,是一种边定义边赋值的变量,需要的时候直接变量等于什么就好了,例如a=sdad
因为我们说sheel变量就是给一个信息片创建的名字,它没有说什么浮点数之类的,所以说算术运算我们需要在(())中实现,
他对变量的类型只有环境变量等,而且创建环境变量还需要export 普通变量

数组的创建

对于数组的创建一种办法直接就是
a[0]=1
a[1]=2
引用的时候是${a[0]},${a[1]}

或者你可以实现用declare
root@kali:/mnt/bdshare# declare -a c
root@kali:/mnt/bdshare# echo $c

root@kali:/mnt/bdshare# echo ${c[0]}

root@kali:/mnt/bdshare# c[0]=1
root@kali:/mnt/bdshare# echo ${c[0]}
1
root@kali:/mnt/bdshare# echo ${c[1]}

其实没必要declare,想让他是数组就直接写成数组的形式就可以了

或者用圆括号 c=(e1 e2 e3),引用时c[0]

set命令

不加参数:显示已经定义的全部变量
设置指定位置参数
  set 1 2 3:表示$1=1,$2=2,$3=3

env可以显示环境变量:后面还有

unset 用于删除变量和函数

  • -v 删除变量
  • -f 解除指定的函数

替换运算符

echo ${d:-word}:如果变量存在且非空,返回值,否则返回word,use to test the varible exists or null
echo ${d:+word}:如果存在and非空,返回word,to test the exist of varible
echo ${d:=word}:如果存在且非空,返回值,否则,赋值为word,return word
echo ${d:?word}:if exist or is null,print word,and exit the script or command
above all,":" could is choosed or is not choosed,if not is choosed,cancel the option of null or not null

如果一个变量赋值是一个文件夹或者是一个目录,你去cat 或者cd的话是可以实现的,因为他会解析字符串,其实就和我们输入的字符串是一个道理,你把它当作你的文件或目录就行了。

环境变量和普通变量的区别我来好好说一下
1,变量就是给一个信息片创建的名字,那就像是一片空间的数据,引用他就可以了
2,我们说操作系统中的用户环境是怎么构成的?在用户注册过程中,系统首先做的是创建用户环境,所有的进程都有独立且不同与程序本身的环境,linux环境是由许多变量以及这些变量的值构成的,
在操作系统中进程是怎么构成的呢?程序+进程控制块+数据,一个用户环境其实就是一个进程,当你创建多个用户的时候,在不同用户之间切换,其实就是进程之间的切换了。这些变量和变量的值决定了用户环境的外观,shell环境包括shell类型,主目录。

输入输出命令
read:从标准键盘上输入数据
read -p 提示变量名
root@kali:~# read -p "hahaha" x
hahahadsd
echo:直接显示后面的变量名和字符串

条件测试:$1是指输入的第一个参数
三种形式:

  • test -f "$1"
  • [ -f "$1" ]
  • [[ -f "$1"]]

文件方面的测试

  • -f: 普通文件
  • -d:目录文件
  • -b:块设备文件
  • -s:文件长度>0true
  • -r:可读
  • -w:可写
  • -x:可执行
  • -p:pipe文件
  • -c:字符文件
  • -e: 文件存在

字符串方面的测试:注意:符号前后有空格
-z s1:空为真
-n s1:>0 true
s1 = s2 :true
s1 != s2
s1 < s2
s1 > s2

数值方面的测试
n1 -eq n2:==
n1 -ne n2: !=
n1 -le n2: <=
n1 -lt n2: <
n1 -ge n2: >=
n1 -gt n2: >

逻辑运算符
!,-a,  -o

\(表达式\):整体判断

算术运算
(( 算术表达式)):对于这个,只有加入$((算术表达式))才能输出值
let "算术表达式"
例子:
root@kali:~# read x y
1 2
root@kali:~# echo $((x+y))
3
root@kali:~# echo $((z=x+y))
3
root@kali:~# echo z
z
root@kali:~# echo $z
3
root@kali:~# let "z=x*y+y"
root@kali:~# echo $z
4
双引号:除$,"",\,之外均作为普通字符对待

单引号:将所有得到字符都看做普通字符对待

到引号:将其中的内容解析为shell命令,有两种形式
x=`pwd`;将pwd解析的值作为变量x的值
x=$(pwd);和上面是一个道理

顺序执行:;

逻辑与:&&:这个逻辑与是命令之间的与,上一个与是条件测试的与

逻辑或:||

if控制结构

style1:
if 测试条件
then
command1
else
command2
fi
style2:
if 测试条件
then
command1
elif 测试条件
then
command2
else
command3
fi

while语句
while 测试条件
do
command
done

shift命令:将位置参数右移一位

until语句(测试条件为假时,才循环,为真是才终止循环)
until 测试条件
do
command
done

for语句

for 变量 in 值表
do
command
done

for((i=1;i<$1;i++))
do
command
done


$#——除脚本名外,命令行上参数的个数。
$? ——上一条前台命令执行后的返回值(也称“退出码”等)。
$$——当前进程的进程号。
$! ——上一个后台命令对应的进程号。
$*——表示在命令行上实际给出的所有实参。

gcc编译系统

三个过程:
preprocessing
  gcc -E :分析伪指令,头文件 条件编译:生成.i
compiling :进行语法分析
  gcc -S:生成.s的汇编文件
Assembler:将汇编代码翻译为机器代码
  gcc -c :生成.o文件
linking
  gcc -o :生成.out3文件

rpm

  • -i:install
  • -u:update
  • -v:显示执行过程
  • -l:显示文件列表
  • -q:询问:一般和a,l连用
  • -e:卸载
  • -a:显示所有的包

Linux控制台的使用
六个字符控制台
ctrl+alt+f1-f6,是六个字符控制台
Ctrl+alt+f7是图形界面即x+windows
在字符控制台下,Linux使用startx命令进行进入图形界面

linux外在设备的使用

首先我们先来介绍一下分区和挂载的概念
分区是对硬盘进行格式化分区,只有按相应的格式进行分区才能将数据写入磁盘
而挂载呢,就是将逻辑位置的物理位置映射到该分区上,我们说的文件系统类型是什么呢?就是分区的格式,只有确定知道硬盘分区的格式才能写入数据呀。
接下来是设备文件和硬件
Linux中,设备do都是以设备文件的形式存在,那当然,不同的设备类型就有不同得到文件类型了
设备文件的命名方式是主设备号+次设备号,
比如说:
sd:scsi硬盘,sda:scsi硬盘的第一块硬盘,sda1:scsi硬盘的第一块硬盘的第一个分区(u盘被认为是sd类型)
fd是软盘。

常用的文件系统格式

  • msdos:dos文件系统
  • vfat:当成是windows文件系统
  • iso9660:光盘格式的文件系统
  • ext2/ext3/ext4:Linux的主流文件系统
  • xfs:一种高性能得到日志文件系统

了解这些之后,我们就可以挂载使用了,当挂载好后,我们访问这个挂在目录,就可以访问这个设备文件了

挂载方式
mount -t 文件系统类型 设备名就是设备文件 挂载点
例如 mount -t vfat /dev/sda1 /mnt/usb

设备的下载
unmount 挂载目录

Linux操作系统的内核得到功能有
内存管理
进程管理
进程间通信
虚拟文件系统
Linux支持许多种文件系统,它用通用的文件系统模型表示各种不同的文件系统,屏蔽了具体的文件系统之间的差异
可以分为逻辑文件系统和设备驱动程序
逻辑文件系统就是各种文件系统的格式
设备驱动程序就是每一种设备控制器所编写的设备驱动程序模块

网络接口:提供了对各种网络1标准的实现和各种网络硬件的支持

再讲一下linux初始化init系统

从BIOS开始,加载系统镜像到内存,进行内核初始化,内和初始化结束后创建PID=1的进程,然后需要一个系统去初始化init进程的行为,这个系统就是init系统。
这里要介绍一个系统服务管理工具

systemd,它是一个用户级别的管理工具

# 重启系统
$ sudo systemctl reboot

# 关闭系统,切断电源
$ sudo systemctl poweroff

# CPU停止工作
$ sudo systemctl halt

# 暂停系统
$ sudo systemctl suspend

# 让系统进入冬眠状态
$ sudo systemctl hibernate

# 让系统进入交互式休眠状态
$ sudo systemctl hybrid-sleep

# 启动进入救援状态(单用户状态)
$ sudo systemctl rescue

# 立即启动一个服务
$ sudo systemctl start apache.service

# 立即停止一个服务
$ sudo systemctl stop apache.service

# 重启一个服务
$ sudo systemctl restart apache.service

# 杀死一个服务的所有子进程
$ sudo systemctl kill apache.service

# 重新加载一个服务的配置文件
$ sudo systemctl reload apache.service

# 重载所有修改过的配置文件
$ sudo systemctl daemon-reload

# 显示某个 Unit 的所有底层参数
$ systemctl show httpd.service

# 显示某个 Unit 的指定属性的值
$ systemctl show -p CPUShares httpd.service

# 设置某个 Unit 的指定属性
$ sudo systemctl set-property httpd.service CPUShares=500

显示操作系统相关参数
root@kali:~# uname
Linux
root@kali:~# uname -a
Linux kali 4.9.0-kali3-amd64 #1 SMP Debian 4.9.16-1kali1 (2017-03-24) x86_64 GNU/Linux
root@kali:~# uname -m
x86_64
root@kali:~# uname -n
kali
root@kali:~# uname -r
4.9.0-kali3-amd64
root@kali:~#

last:显示过去登陆过系统的用户相关信息
读的是/var/log文件
top:相当于windows的任务管理器

split命令:切割文件
telnet 远程连接 Telnet 主机名+端口号
wget:下载软件

stty 用来控制终端的各种设置
比如
root@kali:~# stty -echo
用来关闭自动打印输入字符的功能,一旦关闭,输入的字符就看不到了
这时候就可以在人工输入密码的时候用到了
read pass < /dev/tty
通过这种方式录入密码从终端,当打开tty这个文件时,linux会自动将他定向到终端。

当然最后要将自动打印输入字符的功能打开
stty echo

MAKEFILE

下载源代码包后解压发现一个configur文件,运行它,它是用来检查当前机器的环境的,然后收集环境信息,如果环境检查通过,会生成一个Makefile文件,这个文件是用来编译的,和configur是同一个文件夹下,这个Makefile文件由make开发工具所能识别的,所以,通过make 编译Makefile文件。插入一个点:Makefile文件是一个文本形式的数据库文件,记录了一系列文件之间的依赖关系上所应执行的命令序列,即那希望文件需要先编译,那些文件重新编译,一旦调用这个make命令,他就会自动查找Makefile文件并且去调用它。当确定好依赖关系后,你就可以通过make install 安装这个源文件了。

 

转载于:https://www.cnblogs.com/mhzhou-whyj/p/9636948.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值