欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux学习第一周

程序员文章站 2023-02-05 22:28:08
1. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 2. 安装Centos7.6操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图。 3. 配置环境变量,实现执行history的时候可以看到执行命令的时间。 4. 总结Linux哲学思想。 5. 总结Linux常用命 ......
1. 按系列罗列linux的发行版,并描述不同发行版之间的联系与区别
2. 安装centos7.6操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图。
3. 配置环境变量,实现执行history的时候可以看到执行命令的时间。
4. 总结linux哲学思想。
5. 总结linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令

1、按系列罗列linux的发行版,并描述不同发行本之间的联系与区别

linux 发行版本:
slackware:suse ,linux enterprise server(sles) opensuse 桌面
debian:ubuntu,deepin(深度),mint
redhat:redhat enterprise linux ,centos ,fedora
archlinux:轻量简洁,遵循k.l.s.s原则,(keep it simple and stupid)
gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件
lfs:linux from sxrath 自制linux
android:kernel+busybox(工具集)+java虚拟机
linux学习第一周

不同发行版本之间的联系:完整的linux系统都是由linux内核加上各种应用程序组成

区别:

red hat ,是redhat自己的发行的企业版,是redhat的一个重要节点。
fedore是一款基于linux的操作系统,也是一组维持计算机正常运行的软件集合。由红帽公司赞助。
suse linux,针对个人用户。
红旗linux的发行版,包括桌面版、工作站版、数据中心服务器版、ha集群版和红旗嵌入式linux等产品,
是中国较大、较成熟的linux发行版之一。
debian,三大发行版中唯一以社区形式运作,不以商业公司形式运作。是一个致力于创建*操作系统
的合作组织。而且debian开发者所创建的操作系统中绝大部分基础工具来自于gnu工程。
ubuntu,是一个以桌面应用为主的linux操作系统。ubuntu的目标在于为一般用户提供一个最新的、同时
又相当稳定的主要由*软件构建而成的操作系统。
centos,是一个基于redhat linux 提供的可*使用源代码的企业级linux发行版本。目前centos已被收购,
成为redhat旗下的一个组织。

2、安装centos7.6操作系统,创建一个自己的名字的用户名,并可以正常登陆,将主要步骤截图

[root@localhost ~]# useradd tk
[root@localhost ~]# passwd tk
changing password for user tk.
new password: 
bad password: the password fails the dictionary check - it is too simplistic/systematic
retype new password: 
passwd: all authentication tokens updated successfully.
linux学习第一周
linux学习第一周

3、配置环境变量,实现执行history的时候可以看到执行命令的时间

在/etc/profile 下找到histsize并在下面添加 histtimeformt=”%f%t” 
或者histtimeformt=”%y-%m-%d %h:%m:%s”,注意格式%s后面最好有空格这样显示的时候格式
好看 即可,如下:
[root@tk ~]# vim /etc/profile
linux学习第一周
[root@tk~]# source /etc/profile
[root@tk ~]# history
linux学习第一周

4、总结linux哲学思想

a.一切都是一个文件(包括硬件)
b.小型,单一用途的程序
c.链接程序,共同完成复杂的任务
d.避免令人困惑的用户界面
e.配置数据存储在文本中

5、总结linux常用的命令使用格式,并用实例说明,列如echo、screen、date、ifconfig、export等命令

screen:

screen用于命令行终端切换
用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间*切换。gnu screen可以看作
是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
会话恢复:只要screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别
有用——即使网络连接中断,用户也不会失去对已经打开的命令 行会话的控制。只要再次登录到主机上
执行screen  -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里
面的程序正常运行的情况下让screen挂起(切换到后 台)

语法:
screen [-amrvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-s <作业名称>]
选项:

-a  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-r  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-s <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

常用screen参数:

screen -s yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
在每个screen session 下,所有命令都以 ctrl+a(c-a) 开始。
c-a ? -> 显示所有键绑定信息
c-a c -> 创建一个新的运行shell的窗口并切换到该窗口
c-a n -> next,切换到下一个 window
c-a p -> previous,切换到前一个 window
c-a 0..9 -> 切换到第 0..9 个 window
ctrl+a [space] -> 由视窗0循序切换到视窗9
c-a c-a -> 在两个最近使用的 window 间切换
c-a x -> 锁住当前的 window,需用用户密码解锁
c-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows)
丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process
(无论是前台/后台)都在继续执行,即使 logout 也不影响。
c-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
c-a w -> 显示所有窗口列表
c-a t -> time,显示当前时间,和系统的 load
c-a k -> kill window,强行关闭当前的 window
c-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
c-b backward,pageup
c-f forward,pagedown
h(大写) high,将光标移至左上角
l low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
space 第一次按为标记区起点,第二次按为终点
esc 结束 copy mode
c-a ] -> paste,把刚刚在 copy mode 选定的内容贴上
安装screen
流行的linux发行版(例如red hat enterprise linux)通常会自带screen实用程序,如果没有的话,可以从
gnu screen的官方网站下载。
[root@localhost ~]# yum -y install screen

实例:

创建 screen 终端
#screen //创建 screen 终端 
创建 screen 终端 并执行任务
#screen vi ~/main.c //创建 screen 终端 ,并执行 vi命令
使用描述性名称启动屏幕会话是一个很好的做法,这样你可以轻松地记住会话中正在运行的进程。要使用
会话名称创建新会话,请运行以下命令:
screen -s name #将 “name” 替换为对你会话有意义的名字。
从 screen 会话中分离
要从当前的 screen 会话中分离,你可以按下ctrl-a 和 d。所有的 screen 会话仍将是活跃的,你之后可以
随时重新连接。
重新连接到 screen 会话
如果你从一个会话分离,或者由于某些原因你的连接被中断了,你可以使用下面的命令重新连接:
screen -r
如果你有多个 screen 会话,你可以用 ls 参数列出它们。
screen -ls
there are screens on:
7880.session    (detached)
7934.session2   (detached)
7907.session1   (detached)
3 sockets in /var/run/screen/s-root.
在我们的例子中,我们有三个活跃的 screen 会话。因此,如果你想要还原 “session2” 会话,你可以执行:
screen -r 7934
或者使用 screen 名称。
screen -r -s session2
中止 screen 会话
有几种方法来中止 screen 会话。你可以按下 ctrl+d ,或者在命令行中使用 exit 命令。
要查看screen命令所有有用的功能,你可以查看 screen 的 man 手册。man screen

echo:

字符串输出
命令格式:
echo string

实例:

普通字符串输出

[root@localhost ~]# echo im taokui
im taokui
[root@localhost ~]# echo "im taokui"
im taokui
[root@localhost ~]# echo 'im taokui'
im taokui

显示转义字符

[root@localhost ~]# echo \"im taokui\"
"im taokui"
[root@localhost ~]# echo ""\"im taokui\"
"im taokui"

显示变量

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
[root@localhost ~]# vim test.sh
#!/bin/sh
read name
echo "$name im taokui"
[root@localhost ~]# sh test.sh 
wo
wo im taokui

显示换行

[root@localhost ~]# echo -e "tk \n" #-e开启转义,\n表示换行,以下是换行和不换行的效果
tk 
[root@localhost ~]# echo im tk
im tk

显示不换行

[root@localhost ~]# vim test.sh
#!/bin/sh
echo -e “tk \c” #-e开启转义 \c不换行
echo "im taokui"
[root@localhost ~]# sh test.sh 
tk im taokui

显示结果指定向文件

[root@localhost ~]# echo im taokui >a.txt
[root@localhost ~]# cat a.txt 
im taokui

原样输出字符串,不进行转义或取变量(用单引号)

[root@localhost ~]# echo '$name\'
$name\
[root@localhost ~]# echo "$name\" #如果用双引号会是不能原样输出的

显示命令执行结果

[root@localhost ~]# echo date #这里用的是反引号(`)而不是单引号(’),如果用单引号或者双引号
都只会原样输出
sun dec 1 19:16:05 cst 2019

export:

命令用于设置或显示环境变量,可新增,修改或删除环境变量,供后续执行的程序使用,xeport的效力仅限于该次登录操作

语法:

export [-fnp][变量名]=[变量设置值]
-f 代表[变量名称]中为函数名称
-n 删除指定的变量,变量时间上并未删除,只是不会输出到后续指令的执行环境中
-p 列出所有的shell赋予程序的环境变量

列出当前所有的环境变量

[root@localhost ~]# export -p #列出当前所有环境变量 ,由于篇幅原因这里我只复制前半部分
declare -x histcontrol="ignoredups"
declare -x histsize="1000"
declare -x home="/root"
declare -x hostname="localhost"
declare -x lang="en_us.utf-8"
declare -x lessopen="||/usr/bin/lesspipe.sh %s"
declare -x logname="root"

定义环境变量赋值

[root@localhost ~]# export tk=love
[root@localhost ~]# export -p #会看到刚刚定义的变量
declare -x user="root"
declare -x xdg_runtime_dir="/run/user/0"
declare -x xdg_session_id="4"
declare -x tk="love"

定义环境变量

[root@localhost ~]# export tk #定义变量的时候需要大写
[root@localhost ~]# export -p
declare -x ssh_tty="/dev/pts/0"
declare -x term="xterm"
declare -x tk

date:

用来显示或者设定系统的时间和日期
若是不以加号作为开头,则表示要设定时间,而时间格式为 mmddhhmm[[cc]yy][.ss],其中 mm 为月份,dd 为日,hh 为小时,mm 为分钟,cc 为年份前两位数字,yy 为年份后两位数字,ss 为秒数。

语法:

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+format] [mmddhhmm[[cc]yy][.ss]]

参数说明:

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号

date命令的用法 :

date +%y-%m-%d, date +%y-%m-%d 年月日 
date +%h:%m:%s = date +%t 时间 
date +%s 时间戳 
date -d @1504620492 时间戳换算
date -d “+1day” 一天后 
date -d “-1 day” 一天前 
date -d “-1 month” 一月前 
date -d “-1 min” 一分钟前 
date +%w, date +%w 星期

查看当前时间

[root@tk ~]# date
2019年 12月 04日 星期三 02:18:19 cst

查看系统日期

[root@tk ~]# cal
十二月 2019 
日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

查看当前年份(四位显示)

[root@dl-001 shell]# date +%y 
2019

查看当前年份(简化显示)

[root@tkl~]# date +%y 
19

查看当前 年 月 日 时 分 秒 星期

[root@tk ~]# date "+%y-%m-%d %h:%m:%s %w" 
2019-12-04 02:24:44 3

查看当前时间是一年的第几周

[root@tk ~]# date +%w 
48

查看时间戳(显示从1970年1月1日00:00:00到目前经历的秒数)

[root@tk ~]# date +%s
1575397686

时间戳的换算

[root@tk ~]# date -d @1575397686
2019年 12月 04日 星期三 02:28:06 cst

打印指定日期和时间

[root@tk ~]# date -d "-2 day" +%d
02
[root@tk ~]# date -d "-1 year -3 month -1 day" +%y-%m-%d
2018-09-03

手动设置当前时间

[root@tk ~]# date -s "2019-12-4 02:37:40"
2019年 12月 04日 星期三 02:37:40 cst
[root@tk ~]# date
2019年 12月 04日 星期三 02:37:44 cst

同步网络时间

[root@tk~]# yum install -y ntp
[root@tk ~]# ntpdate ntp.ubuntu.com
4 dec 02:38:48 ntpdate[19778]: the ntp socket is in use, exiting
[root@tk ~]# date
2019年 12月 04日 星期三 02:38:53 cst

ifconfig:

用于显示或者设置网络

语法:

ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<i/o地址>][irq<irq地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][ip地址]

参数说明:

add<地址> 设置网络设备ipv6的ip地址。
del<地址> 删除网络设备ipv6的ip地址。
down 关闭指定的网络设备。
<hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
io_addr<i/o地址> 设置网络设备的i/o地址。
irq<irq地址> 设置网络设备的irq。
media<网络媒介类型> 设置网络设备的媒介类型。
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
mtu<字节> 设置网络设备的mtu。
netmask<子网掩码> 设置网络设备的子网掩码。
tunnel<地址> 建立ipv4与ipv6之间的隧道通信地址。
up 启动指定的网络设备。
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
-promisc 关闭或启动指定网络设备的promiscuous模式。
[ip地址] 指定网络设备的ip地址。
[网络设备] 指定网络设备的名称。

实例:

启动关闭指定网卡

#ifconfig eth0 down# ifconfig eth0 up

为网卡配置和删除ipv6地址

ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡诶之ipv6地址
#ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除ipv6地址

用ifconfig修改mac地址

#ifconfig eth0 down //关闭网卡# ifconfig eth0 hw ether 00:aa:bb:cc:dd:ee //修改mac地址# ifconfig eth0 up //启动网卡# ifconfig eth1 hw ether 00:1d:1c:1d:1e //关闭网卡并修改mac地址 # ifconfig eth1 up //启动网卡

配置ip地址

#ifconfig eth0 192.168.1.56 //给eth0网卡配置ip地址# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 // 给eth0网卡配置ip地址,并加上子掩码# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255// 给eth0网卡配置ip地址,加上子掩码,加上个广播地址

启用和关闭arp协议

ifconfig eth0 arp //开启# ifconfig eth0 -arp //关闭

设置最大传输单元

#ifconfig eth0 mtu 1500 //设置能通过的最大数据包大小为 1500 bytes