Linux学习笔记-1

1> 初识Linux

1. Linux介绍

Linux系统是一套免费使用自由传播类UNIX操作系统(主要用在服务器上),是一个基于POSIXUNIX多用户多任务支持多线程多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

UNIX:操作系统,是美国AT&T公司贝尔实验室于1969年完成的操作系统,最早由肯·汤普逊(Ken Thompson),丹尼斯·里奇(Dennis Ritchie)开发。在1971年首次对外发布,刚好在1971,丹尼斯·里奇(Dennis Ritchie)发明了C语言,后来在1973,Unix被他用C语言重新编写。Unix前身源自于MultiCS,叫UniCS,后来改名叫Unix。

POSIX:可移植操作系统接口(英语:Portable Operating System Interface of UNIX,缩写为POSIX),是IEEE(电气和电子工程师协会)为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称。

GNU:1983年,Richard Stallman(理查德·马修·斯托曼)创立GNU计划。一套完全自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标(发展出一套完整的开放源代码操作系统来取代Unix),名称来自GNU\’s Not Unix!的递归缩写。

GPL:一种GNU通用公共许可协议,为保证GNU软件可以自由的使用、复制、修改和发布,所有的GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,是一个被广泛使用的自由软件许可协议条款,保证终端用户运行、学习、分享(复制)及编辑软件之自由,GPL是自由软件和开源软件的最流行许可证,特色表现:

•取得软件与原始码:您可以根据自己的需求来执行这个自由软件

•复制:您可以自由的复制该软件

•修改:您可以将取得的原始码进行程序修改工作,使之适合您的工作

•再发行:您可以将您修改过的程序,再度的自由发行,而不会与原先的撰写者冲突

•回馈:您应该将您修改过的程序代码回馈于社群

==不同许可证的区别==

1985年,Richard Stallman又创立了自由软件基金会(Free Software Foundation,FSF)来为GNU计划提供技术、法律以及财政支持。

1990年,GNU计划开发主要项目有Emacs(文本编辑器)、GCC(GUN Compiler Collection,GNU编译器集合)、Bash等,GCC是一套GNU开发的编程语言编译器。还有开发一些UNIX系统的程序库和工具。

Linux操作系统诞生于1991年10月5日(这是第一次正式向外公布时间),与UNIX兼容,并在GPL条款下发布。现在,Linux产生了许多不同的Linux发行版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

1992年,Linux与其他GUN软件结合,完全自由的GNU/Linux操作系统正式诞生,简称Linux

==Linux的基本思想有两点==

第一,一切都是文件

第二,每个软件都有确定的用途

与Unix思想十分相近。

2. Linux特点

1、分时的多用户、多任务操作系统

2、多数网络协议支持、方便的远程管理

3、强大的内存管理和文件系统管理

4、大量的可用的软件和免费的软件

5、优良的稳定性和安全性

6、良好的可移植性和灵活性

7、可供选择的厂商多

3. Linux操作系统架构

补充:linux内核必须加上一个”界面”软件,才能让用户去使用,”界面”分两类:

a、命令行界面CLI SHELL(有很多种,最流行的一种是bash shell)

b、图形界面GUI SHELL(也有很多种,目前最流行的有两种:gnome和kde)

4. Linux内核

严格来讲,Linux不是一个操作系统,Linux只是一个操作系统中的内核。

内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O、进程管理等。

内核官网:[http://www.kernel.org/]{.underline}。目前最新的内核版本:4.13.5

要注意区分linux发型版本和linux内核版本。两者不是同一个事物

下面这位是Linux内核的作者:

这是Linux的logo

logo

5. 常见发行版

红帽企业系统(RedHat Enterprise Linux, RHEL)

全球最大的开源技术厂商,全世界内使用最广泛的Linux发布套件,

提供性能与稳定性极强的Linux套件系统并拥有完善的全球技术支持。

官网:[http://www.redhat.com]{.underline}

社区企业操作系统(CentOS)

最初是将红帽企业系统”重新编译/发布”给用户免费使用而广泛使用,

当前已正式加入红帽公司并继续保持免费(随RHEL更新而更新)。

官网:[http://www.centos.org/]{.underline}

红帽用户桌面版(Fedora [Linux])

最初由红帽公司发起的桌面版系统套件(目前已经不限于桌面版),

用户可免费体验到最新的技术或工具,而功能成熟后加入到RHEL中。

官网:[http://fedora.redhat.com]{.underline}

国际化组织的开源操作系统(Debian)

提供超过37500种不同的自由软件且拥有很高的认可度,

对于各类内核架构支持性良好,稳定性、安全性强更有免费的技术支持。

官网:[http://www.debian.org/]{.underline}

基于Debian的桌面版(Ubuntu)

Ubuntu是一款基于Debian派生的产品,对新款硬件具有极强的兼容能力。

普遍认为Ubuntu与Fedora都是极其出色的LINUX桌面系统。

官网:[http://www.ubuntulinux.org/]{.underline}

当然还有国内的国防科技大学发行麒麟kylin中科院发行红旗RedFlag

2> Linux文件系统

1. CentOS的目录结构

2. 根目录下每个目录的简单解释

/**:**根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中
/bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等
/boot**:**放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可
/dev**:**存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
/etc**:**系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/gateways、/etc/resolv.conf、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。注:/etc/X11存放与x windows有关的设置
/home**:**系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据
/lib:/lib64:/usr/lib:/usr/local/lib**:**系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules
/lost+fount**:**系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found
/mnt:/media**:**光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载
/opt**:**给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE桌面软件,可以将该软件安装在该目录下。以前的Linux系统中,习惯放置在 /usr/local目录下option
/proc**:*此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/等process
/root**:**系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下
/sbin:/usr/sbin:/usr/local/sbin**:**放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能”查看”而不能设置和使用。
/selinux**:**selinux软件目录,用于保证系统安全
/srv**:**服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内service
/sys**:**类似于/proc的特殊文件系统,存放内核数据信息
/tmp**:**一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/usr**应用程序存放目录, /usr/bin 存放应用程序 /usr/share 存放共享数据 /usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件 /usr/local:存放软件升级包 /usr/share/doc: 系统说明文件存放目录 /usr/share/man: 程序说明文件存放目录,使用man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间 usr**:user share resources/unix share resouces
/var**:**放置系统执行过程中经常变化的文件,如: /var/log:随时更改的日志文件 /var/log/message:所有的登录文件存放目录 /var/spool/mail:邮件存放的目录 /var/run:程序或服务启动

使用建议:

  1. 用户应该将文件存储在自己的主目录及其子目录下
  2. 系统绝大多数设置都在/etc目录下
  3. 不要修改/或者/usr目录下的任何内容,除非你真的清楚你在做什么,也就是说/目录最好和安装好系统之初保持一致
  4. 大多数工具和应用软件程序都安装在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin
  5. 文件或者目录都有唯一的绝对路径,没有盘符的概念

3> Linux命令终端

1. Linux 的命令格式:命令选项 命令参数

注意:三者之间要空格隔开,其中命令选项分为长格式和短格式。

短格式用’-‘表示,比如:-l,

长格式用”–”表示,比如:–help,

也可以使用组合格式,比如:-a -l 等价于-la或者-al

2. Linux的默认命令提示符:

#:管理员用户

$:普通用户

PS: Linux以回车键表示命令结束,如果 linux命令需要折行输入,那么可以以 \表示每行结束

4> 常用命令归纳分类

基本命令

文件管理 mkdir, rmdir, mv, rm, cp, touch, cat, tac, echo, more, less, head, tail, file, find, rename, ln, pwd, scp, alias
磁盘管理 ls, cd, du, df, mount, unmounts, fdisk
文档处理 wc, sort, uniq, cut, sed, awk, grep, vi, diff
用户和组 useradd, usermod, passwd, userdel, groupadd, groupdel, chgrp, su
文件传输 get, put, wget
网络通信 telnet, nc, ifconfig, ping, netstat, ip, host
备份压缩 gzip, bzip2, bunzip2, tar, zip
系统管理 exit, kill, last, ps, top, free, pstree, reboot, halt, shutdown, sudo, who, w, whoami, whereis, which, last, whatis
系统设置 clear, set, unset, hwclock, time, date,
其他 history, hostname, nohup, service, init, rpm, ssh, cal, yum

网站速查

http://man.linuxde.net/

http://www.jb51.net/linux/

https://jaywcjlove.github.io/linux-command

ps: 直接在命令行中, 用 man xx, 也可以查看命令信息

5> 常用文件系统命令详解

磁盘管理

cd change directory 常使用方式: cd sourcedir 进入用户主目录 cd ~ 进入用户主目录 cd - 返回进入此目录之前所在的目录 cd .. 返回上级目录(若当前目录为”/“,则执行完后还在”/“;”..”为上级目录的意思) cd ../.. 返回上两级目录
pwd print working directory pwd 显示当前工作目录
ls list:显示目录内容列表 使用格式:ls 选项 目录或文件名 常用选项 -l:详细信息显示 -a:显示所有子目录和文件的信息,包括隐藏文件 -A:类似于“-a”,但不显示“.”和“..”目录的信息 -R:递归显示内容 -h:以友好方式显示文件大小 例子: ls -l ## 列出文件详细信息, 也可以写作 ll ls -lah ## 以友好方式显示包括隐藏文件的详细信息
du disk usage:显示每个文件和目录的磁盘使用空间 使用格式:du 选项 目录或文件名 常用选项: -a:统计时包括所有的文件,而不仅仅只统计目录 -h:以更易读的字节单位(K、M等)显示信息 -s:只统计每个参数所占用空间总的大小 例子: du -ah ##
df disk free:显示磁盘相关信息 常用选项: -h:以更易读的字节单位(K、M等)显示信息 -T:显示分区格式 例子: df -h ## 显示磁盘信息,以友好方式 df -T -h ## 以友好格式显示磁盘信息,并且附加磁盘格式

文件管理

touch 创建空文件 或更新文件时间标记 使用格式: touch 文件名
file 查看文件类型 使用格式: file 文件名 根据文件内容格式判断文件类型。而不是根据后缀名
mkdir 创建文件夹 make directory 使用格式:mkdir 选项 参数 常用选项: -p:已级联的方式创建文件夹 例子: mkdir -p /root/ma/niu/zhu/dagou ## 上级目录不存在自动创建上一级目录,常用
cp 复制文件 使用格式: cp 选项 源文件或目录… 目标文件或目录 常用选项: -r递归复制整个目录树 -p:保持源文件的属性不变 -i:需要覆盖文件或目录时进行提醒
rm 删除文件或目录 使用格式:rm [选项] 文件或目录 常用选项: -f:强行删除文件或目录,不进行提醒 -i:删除文件或目录时提醒用户确认 -r:递归删除整个目录树 例子: rm -rf /root/ma/ ## 不提醒递归删除整个目录,慎用慎用慎用
mv 移动文件 如果与源文件位置一样,则相当于重命名 使用格式: mv [选项]… 源文件或目录… 目标文件或目录 常用选项: -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录 -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作
rmdir 删除空文件夹 常用选项: -p或–parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除; rmdir -p /root/aa/bb/cc/dd/ee 删除文件夹ee,如果删除ee后,dd变为空,则删除dd,依次类推
cat 连接文件并打印到标准输出设备上 常用选项: -n或–number:由1开始对所有输出的行数编号 cat /home/hadoop/data.txt ## 查看文件内容
tac 倒序输出文件内容 tac /home/hadoop/data.txt
echo 输出指定的字符串或者变量 常用选项: -e:若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同; \ 插入\字符; \nnn 插入nnn(八进制)所代表的ASCII字符; 例子: echo ‘ma’ ## 输出ma echo -e ‘ma\n’ ## 打印ma之后换行 echo -ne ‘ma’ ‘zhonghua’ ## 打印完不换行 echo ‘ma’ > ma.dat ## 覆盖 echo ‘ma’ >> ma.dat ## 追加 echo $PWD ## 输出变量内容
head 在屏幕上显示指定文件的开头若干行 默认显示10行 常用选项: -n<数字>:指定显示头部内容的行数; 例子: head -n 5 install.log ## 显示该文件前五行内容
tail 在屏幕上显示指定文件的末尾若干行 常用选项: -f:显示文件最新追加的内容 tail -f install.log ## 显示最新追加的内容 ## 显示文件file的最后10行 tail -1 file ## 显示文件file最后一行的内容 tail -c 10 file ## 显示文件file的最后10个字符
more 显示文件内容,每次显示一屏 使用方式: 按Space键:显示文本的下一屏内容。 按Enter键:只显示文本的下一行内容。 按h键:显示帮助屏,该屏上有相关的帮助信息。 按b键:显示上一屏内容。 按q键:退出more命令。
less 分屏上下翻页浏览文件内容 和more使用方式基本类似 按e键:向上滚动一行 按y键:向下滚动一行 G:跳到文件末尾 gg:跳到文件首行
ln 用来为文件创件连接 软链接 -s 和 硬链接 ln /mnt/cdrom1 /var/www/html/centos/ —>硬链接 ln -s /mnt/cdrom2 /var/www/html/centos/ –>软链接-符号链接
alias 别名 查看别名:alias 定义别名alias la='ll -a 取消别名:unalias la

软/硬 链接相关

软链接, ln -s 文件/文件夹 产生的链接

  1. 创建文件的软链接

    1
    ln -s /tmp/yum.log /root/yuntest
  2. 创建文件夹的软链接

    1
    2
    3
    4
    # 后面的链接不指定名字, 就默认用前面的源文件/文件夹名字
    ln -s /tmp /root
    ---
    lrwxrwxrwx. 1 root root 4 5月 29 20:53 tmp -> /tmp
  3. 如果软链接是指向目录的话, 是可以直接cd进去的, cd进去的是真实的目录!

    1
    2
    pwd -P:  查看软链接的真实指向某目录(物理目录)
    pwd -L: 逻辑目录

硬链接, ln 不加s, 一般不会用

  • 不能链接目录
  • 不能跨分区做硬链接

其它有用的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
man:显示命令帮助信息
clear:清屏,或者按ctrl + l也行
ctrl + c:退出当前进程
ctrl + z:挂起当前前台进程
whatis:命令是什么
whereis:在标准路径下搜索与名称相关的文件,whereis将所有搜索到的文件都显示
whichwhich在设定的搜索路径下进行目录搜索,只显示搜索到的第一个文件
su:切换用户
history:显示历史命令
hostname:显示主机名
set:查看系统变量
get:下载文件
put:上传文件
sudo:以root用户权限执行一次命令
exit:退出登录状态
w:显示当前连接的用户
who:显示当前会话信息
uptime:查看系统运行时间

使用小技巧(重点)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ctrl + u:清除光标前的命令,相当于剪切   	# !
ctrl + k:清除光标后的命令,相当于剪切 # !
ctrl + y:粘贴 # !
ctrl + t:把光标前面的那个字符往后挪动一位
ctrl + l:清屏
ctrl + a: 移到命令行首 # !
ctrl + e: 移到命令行尾 # !
ctrl + ← →: 光标移动一个单词 # !
!!:执行上一次命令 # !
!$:上个命令的最后一个单词
ctrl + w:删除光标前一个单词
cd data; cat sed.txt:表示先执行cd,然后执行cat,工作目录会切换
(cd data; cat sed.txt):跟上个命令相比,不切换工作目录
|:管道符,表示把前面命令内容的输出当做后面命令的输入
>:表示内容覆盖
>>:表示内容追加

# -----
#查看内存 查看剩余内存
xcall.sh "free -h"
#查看剩余硬盘
xcall.sh "df -h"
如果帮到你, 可以给我赞助杯咖啡☕️
0%