01-linux练习01

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

  • Linux发行版=Linux内核+商业软件
  • 联系:
    • 1.都是基于GNU项目下的GPL协议。
    • 2.基本上可以分为三大系类:Slackware、RedHat、Debian
    • 3.每个系列最具代表性的商业服务器级的发行版,分别是SUSE Linux Enterprise ; Red Hat Enterprise Linux ;Ubuntu Server,简称Ubuntu;
    • 4.还有基于这三大系列和其他分支的一些社区发布版本,比如:基于Slackware下的OpenSUSE ;基于RedHat的CentOS 、Fedora,基于Debian下的mimt Linux,knopix ,以及Gentoo、ArchLinux、国内Linux红旗、麒麟Linux等。
  • 区别:
    • 1.按软件包管理系统的不同,例如:分以Redhat的rmp包管理系统和Ubuntu的基于DPKG包管理系统。
    • 2.Redhat的rmp包管理系统发行版包括SLES、Fedora、openSUSE、centos、RHEL等文件以rpm为扩展名;Ubuntu的基于DPKG包管理系统包括Ubuntu系列,Debian系列等,包文件以deb为扩展名。
    • 3.详细说明:
      • Red Hat ,是redhat发行的企业版
      • Fedore是一款基于linux的操作系统,也是一组维持计算机正常运行的软件集合。由红帽公司赞助。
      • suse linux,针对个人用户。
      • 红旗linux的发行版,包括桌面版、工作站版、数据中心服务器版、HA集群版和红旗嵌入式linux等产品,是中国较大、较成熟的linux发行版之一。
      • debian,三大发行版中唯一以社区形式运作,不以商业公司形式运作。是一个致力于创建自由操作系统的合作组织。而且debian开发者所创建的操作系统中绝大部分基础工具来自于GNU工程。
      • Ubuntu(乌版图)是一个以桌面应用为主的linux操作系统。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。
      • Centos是一个基于redhat linux 提供的可自由使用源代码的企业级linux发行版本。目前Centos已被redhat收购

2、安装Centos7.9和ubuntu操作系统,创建一个自己名字的用户名,并可以正常登录

  

    

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

#方法1:
cat /etc/profile.d/env.sh
export HISTTIMEFORMAT="%F %T "
#方法2:
echo -e "export HISTTIMEFORMAT='%F %T '" >>/etc/profile
source /etc/profile
#方法3:
#history
USER_IP=`who -u am i 2>/dev/null|awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/usr/share/.history
if [ -z $USER_IP ];then
    USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ];then
    mkdir -p $HISTDIR && chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ];then
    mkdir -p $HISTDIR/${LOGNAME} && chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4000
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null

4、总结Linux哲学思想。

  • 一切皆文件
  • 小型、单一用途的程序
  • 链接程序,共同完成复杂的任务
  • 避免令人困惑的用户界面
  • 配置数据存储在文件中

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

命令格式:COMMAND [OPTIONS...] [ARGUMENTS...]

命名 [选项...] [参数...]

echo命令

  • 功能:显示字符
  • 语法:echo [-neE] [字符串]
  • 选项:
    • -E (默认)不支持 \ 解释功能
    • -n 不自动换行
    • -e 启用 \ 字符的解释功能
  • 显示变量
    • echo "$VAR_NAME" 变量会替换,弱引用
    • echo '$VAR_NAME' 变量不会替换,强引用

screen

  • 功能:Linux 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 [SESSION]
    • 加入screen会话:screen –x [SESSION]
    • 退出并关闭screen会话:exit
    • 剥离当前screen会话:Ctrl+a,d
    • 显示所有已经打开的screen会话:screen -ls
    • 恢复某screen会话:screen -r [SESSION]

date

  • 功能:显示或设定系统的日期与时间
  • Linux的两种时钟
    • 系统时钟:由Linux内核通过CPU的工作频率进行的
    • 硬件时钟:主板
  • 时间参数:
    • % : 印出 %
    • %n : 下一行
    • %t : 跳格
    • %H : 小时(00..23)
    • %I : 小时(01..12)
    • %k : 小时(0..23)
    • %l : 小时(1..12)
    • %M : 分钟(00..59)
    • %p : 显示本地 AM 或 PM
    • %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
    • %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
    • %S : 秒(00..61)  
    • %T : 直接显示时间 (24 小时制)
    • %X : 相当于 %H:%M:%S
    • %Z : 显示时区
  • 日期参数:
    • %a : 星期几 (Sun..Sat)
    • %A : 星期几 (Sunday..Saturday)
    • %b : 月份 (Jan..Dec)
    • %B : 月份 (January..December)
    • %c : 直接显示日期与时间
    • %d : 日 (01..31)
    • %D : 直接显示日期 (mm/dd/yy)
    • %h : 同 %b
    • %j : 一年中的第几天 (001..366)
    • %m : 月份 (01..12)
    • %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
    • %w : 一周中的第几天 (0..6)
    • %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
    • %x : 直接显示日期 (mm/dd/yy)
    • %y : 年份的最后两位数字 (00.99)
    • %Y : 完整年份 (0000..9999)
  • 实例:
    • date 显示和设置系统时间
      • date +%s
      • date -d @1509536033

hwclock,clock: 显示硬件时钟

  • -s, --hctosys 以硬件时钟为准,校正系统时钟
  • -w, --systohc 以系统时钟为准,校正硬件时钟
  • 时区:ll /etc/localtime
  • 列出时区:timedatectl list-timezones
  • 显示日历:cal –y
  • 同步服务器时间:ntpdate ip地址

ifconfig

  • ifconfig命令用于显示或设置网络设备。
  • ifconfig可设置网络设备的状态,或是显示目前的设置。
  • 语法:
  • ifconfig [网络设备][down up -allmulti -arp -promisc][add][del][][io_addr][irq][media][mem_start][metric][mtu][netmask][tunnel][-broadcast][-pointopoint][IP地址]
  • 选项:
    • add 设置网络设备IPv6的IP地址。
    • del 删除网络设备IPv6的IP地址。
    • down 关闭指定的网络设备。
    • 设置网络设备的类型与硬件地址。
    • io_addr 设置网络设备的I/O地址。
    • irq 设置网络设备的IRQ。
    • media 设置网络设备的媒介类型。
    • mem_start 设置网络设备在主内存所占用的起始地址。
    • metric 指定在计算数据包的转送次数时,所要加上的数目。
    • mtu 设置网络设备的MTU。
    • netmask 设置网络设备的子网掩码。
    • tunnel 建立IPv4与IPv6之间的隧道通信地址。
    • up 启动指定的网络设备。    
    • -broadcast 将要送往指定地址的数据包当成广播数据包来处理。
    • -pointopoint 与指定地址的网络设备建立直接连线,此模式具有保密功能。
    • -promisc 关闭或启动指定网络设备的promiscuous模式。
    • [IP地址] 指定网络设备的IP地址。
    • [网络设备] 指定网络设备的名称。
  • 实例:
    • 显示网络设备信息:ifconfig
  • 启动关闭指定网卡:
    • ifconfig eth0 down
    • ifconfig eth0 up

exportexport

  • 命令用于设置或显示环境变量。在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
  • 参数:
    • -f  代表[变量名称]中为函数名称。
    • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
    • -p  列出所有的shell赋予程序的环境变量。
  • 实例:
    • 列出当前的环境变量值:export -p
    • 定义环境变量并赋值:export MYENV=7

 6、描述Linux发行版的系统目录名称命名规则以及用途。

linux系统目录命名规则:

  • 使用LSB(Linux Standard Base)分层结构
  • 遵循FHS (Filesystem Hierarchy Standard) 标准
  • 文件名最长255个字节
  • 包括路径在内文件名称最长4095个字节
  • 颜色区分:
    • 蓝色-->目录
    • 绿色-->可执行文件
    • 红色-->压缩文件
    • 浅蓝色-->链接文件
    • 灰色-->其他文件
  • 6、除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
  • 7、标准Linux文件系统(如ext4),文件名称大小写敏感

linux系统目录架构及用途:

  • /:根目录,位于Linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件数据,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。
  • /bin:提供用户使用的基本命令, 存放二进制命令,不允许关联到独立分区,OS启动会用到里面的程序。
  • /boot:用于存放引导文件,内核文件,引导加载器.
  • /sbin:管理类的基本命令,不能关联到独立分区,OS启动时会用到的程序(重要的命令通常处于bin,不重要的则安装在sbin)。
  • /lib:存放系统在启动时依赖的基本共享库文件以及内核模块文件. 系统使用的函数库的目录 也存放了大量的脚本库文件 ,程序在执行过程中,需要调用时会用到
  • /lib64:存放64位系统上的辅助共享库文件.
  • /etc: 系统配置文件存放的目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件 。
  • /home:普通用户主目录,当新建账户时,都会分配在此,建议单独分区,并分配额外空间用于存储数据。
  • /root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
  • /media:便携式移动设备挂载点目录.
  • /mnt:临时文件系统挂载点.
  • /dev:设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件 (b 随机访问,c 线性访问)
  • /opt:第三方应用程序的安装位置.
  • /srv:服务启动之后需要访问的数据目录,存放系统上运行的服务用到的数据,如www服务需要访问的网页数据存放在/srv/www内。
  • /tmp:存储临时文件, 任何人都可以访问,重要数据一定不要放在此目录下。
  • /usr:应用程序存放目录,/usr/bin 存放保证系统拥有完整功能而提供的应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,_/usr/local 存放软件升级包,第三方应用程序的安装位置,/usr/share/doc _系统说明文件存放目录。
  • /var:放置系统中经常要发生变化的文件,如日志文件。/var/log 日志目录及文件./var/tmp:保存系统两次重启之间产生的临时数据.
  • /proc: 用于输出内核与进程信息相关的虚拟文件系统,目录中的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间
  • **/sys **:用于输出当前系统上硬件设备相关的虚拟文件系统.
  • /selinux:存放selinux相关的信息安全策略等信息.

7、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录

cp -r /etc/* /home/nameke/workdir/
chown -R nameke:nameke /home/nameke/workdir/
[nameke@vb01 ~/workdir]$ ls -d /home/nameke/workdir/[!^[:alpha:]][[:alpha:]]* 
/home/nameke/workdir/1abao.log   /home/nameke/workdir/4da46o.log
/home/nameke/workdir/1baa24test  /home/nameke/workdir/_dirtest123
[nameke@vb01 ~/workdir]$ ls -d /home/nameke/workdir/[^[:alpha:]][[:alpha:]]* 
/home/nameke/workdir/1abao.log   /home/nameke/workdir/4da46o.log
/home/nameke/workdir/1baa24test  /home/nameke/workdir/_dirtest123
故命令为:
ls -d /home/nameke/workdir/[^[:alpha:]][[:alpha:]]*

 

8、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

[nameke@vb01 ~/workdir]$ ls -d /etc/p*
/etc/pam.d    /etc/pkcs11    /etc/pm        /etc/postfix         /etc/printcap   /etc/protocols
/etc/passwd   /etc/pki       /etc/polkit-1  /etc/ppp             /etc/profile    /etc/python
/etc/passwd-  /etc/plymouth  /etc/popt.d    /etc/prelink.conf.d  /etc/profile.d
[nameke@vb01 ~/workdir]$ 
[nameke@vb01 ~/workdir]$ ls -d /etc/p*[![:digit:]$]
/etc/pam.d    /etc/pki       /etc/popt.d   /etc/prelink.conf.d  /etc/profile.d
/etc/passwd   /etc/plymouth  /etc/postfix  /etc/printcap        /etc/protocols
/etc/passwd-  /etc/pm        /etc/ppp      /etc/profile         /etc/python
[nameke@vb01 ~/workdir]$ ls -d /etc/p*[^[:digit:]] 
/etc/pam.d    /etc/pki       /etc/popt.d   /etc/prelink.conf.d  /etc/profile.d
/etc/passwd   /etc/plymouth  /etc/postfix  /etc/printcap        /etc/protocols
/etc/passwd-  /etc/pm        /etc/ppp      /etc/profile         /etc/python

9、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

[nameke@vb01 ~]$ cat /etc/issue
\S
Kernel \r on an \m
[nameke@vb01 ~]$ cat /etc/issue|tr "a-z" "A-Z"
\S
KERNEL \R ON AN \M

[nameke@vb01 ~]$ cat /etc/issue|tr "a-z" "A-Z" >/tmp/issue.out
[nameke@vb01 ~]$ cat /tmp/issue.out 
\S
KERNEL \R ON AN \M

 

posted @ 2022-03-29 01:03  西瓜的春天  阅读(150)  评论(0)    收藏  举报