大家好,我是天空之城,今天给大家带来,linux操作系统快速入门。
Linux 内核以及发行版
Linux内核(kernel)
操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。
Linux 内核版本又分为 稳定版 和 开发版,两种版本是相互关联,相互循环
稳定版:具有工业级强度,可以广泛地应用和部署。
开发版:由于要试验各种解决方案,所以变化很快
内核源码网址:
Linux发行版
Linux 发行版:我们常说的Linux操作系统,也是由Linux内核与各种常用软件的集合产品. 类似Windows包含了桌面环境.全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群.
Ubuntu(乌班图)
Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,主要依赖Canonical有限公司的支持,同时也有很多来自Linux社区的热心人士提供协助。
作为Linux发行版之一.Canonical 的Ubuntu 胜过其他所有的 Linux 服务器发行版 ,它简单易用同时又相当稳定,而且具有庞大的社区力量,用户可以方便地从社区获得帮助.Ubuntu在服务器领域是妥妥的赢家.
Ubuntu的目录结构
Ubuntu的目录结构
Ubuntu的主要目录
/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
/bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
/boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有
/etc/inittab
/etc/fstab
/etc/init.d
/etc/X11
/etc/sysconfig
/etc/xinetd.d
~edu 表示用户 edu 的家目录
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
/opt:给主机额外安装软件所摆放的目录
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root:系统管理员root的家目录
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
/usr:应用程序存放目录
/usr/bin:存放应用程序
/usr/share:存放共享数据
/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
/usr/local:存放软件升级包
/usr/share/doc:系统说明文件存放目录
/usr/share/man:程序说明文件存放目录
/var:放置系统执行过程中经常变化的文件
/var/log:随时更改的日志文件
/var/spool/mail:邮件存放的目录
/var/run:程序或服务启动后,其 PID 存放在该目录下
Ubuntu的常见快捷键
可以在System Setting -> Keyboard -> Shortcuts中查看各种快捷键.
终端: Ctrl+Alt+T
终端新建标签页: Ctrl+Shift+T
终端复制粘贴: Ctrl+Shift+C, Ctrl+Shift+V
显示常用快捷键: 按住Super(Win)不动
截活动窗口图: Alt+Print
区域截图: Shift+Print
源切换: Super(Win)+Space
安装: sudo apt-get install
卸载: sudo apt-get remove
移除没用的包: sudo apt-get autoremove
Ubuntu的常见设置
首先语言设置
通过右上角的 设置按钮 找到System Settings…
然后选中Language Support 项
注意Ubuntu的语言选项有多种语言.将第一语言设置为中文(因为如果中文显示不了的,会使用英文显示)
拖动成为第一语言
设置完成后.选择Apply System-wide(应用到整个系统)这时,输入管理员密码以确认.最后点击 Close 按钮关闭对话框,重启电脑。
注意:重启成功后,会让你选择文件夹名称显示.如果是为了学习.我建议大家保持原来的文件夹名称,这样便于后期在学习中熟悉Linux目录结构. 选择Keep Old Names
选择目录显示
Launcher(菜单栏)设置
在系统设置中,找不到菜单栏的位置设置.所以只能通过终端命令进行设置
菜单栏靠左(注意参数首字母大写)
$ gsettings set com.canonical.Unity.Launcher launcher-position Left
菜单栏靠下
$ gsettings set com.canonical.Unity.Launcher launcher-position Bottom
Ubuntu常用软件
设置软件源: 默认的软件源是官方的, 速度慢的令人发指, 所以需要先设置一个速度较快的软件源, System Settings -> Software & Updates -> Ubuntu Software -> Download from选择Others, 然后自动选择一个网速比较快的服务器(多半是某个大学的)即可:
apt(Advanced Packaging Tool) 安装/卸载软件 (Ctrl+Alt+T 调出终端)
安装软件
$ sudo apt install 软件包
卸载软件
$ sudo apt remove 软件名
更新已安装的包
$ sudo apt upgrade 或者 sudo apt-get upgrade
升级
sudo apt-get update.
那么由于有些Ubuntu中没有自带vim 而是 vi 这个古老的编辑器.所以我们需要安装vim
sudo apt-get install vim
在安装过程中有可能出现下列错误
vim : 依赖: vim-common (= 2:7.4.826-1ubuntu1) 但是 2:7.4.1689-3ubuntu1.1 正要被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
解决方案:
sudo apt-get remove vim-common
sudo apt-get install vim
终端命令格式
在我们开始学习一些常见的终端命令之前,我们先对Linux终端命令的格式有个了解。
command [-options] [parameter]
command [-options] [parameter]
命令名称 选项 传递给命令的参数
[ ] 代表内容可选填
那么这些命令的选项和参数在哪里找到呢?接下来我们介绍两个非常有用的命令。
help&&man
–help
command --help
显示command 命令的帮助信息
man
man command
查询command 命令的使用手册
man 是manual的缩写,是Linux提供的手册。
手册中的操作按键
操作按键 功能
空格键 显示下一页
回车键 显示下一行
b back,显示上一页
f forward,向前和空格效果一样
q quit,退出
最常用的Linux命令
有了上面的基本常识之后,我们终于可以开始尝试Linux的命令了!接下来给大家介绍几个简单的命令。
命令 功能
ls list,列表显示当前目录下的内容
pwd print wrok directory ,查看当前所在路径
cd+空格+路径名称 change directory,跳转到指定路径
touch+空格+文件名称 创建这个文件
mkdir+空格+文件夹名称 make directory, 创建这个文件夹
rm+空格+文件名 remove,删除指定的文件
clear 清屏
终端常用快捷键速查表
快捷键 功能
Tab 自动补全
ctrl + shift + + 放大字体
ctrl + - 缩小字体
Ctrl + Alt + t 打开终端窗口
Ctrl + a 光标移动到开始位置
Ctrl + e 光标移动到最末尾
Ctrl + k 删除此处至末尾的所有内容
Ctrl + u 删除此处至开始的所有内容
Ctrl + d 删除当前字符
Ctrl + h 删除当前字符前一个字符
Ctrl + w 删除此处到左边的单词
Ctrl + y 粘贴由Ctrl+u, Ctrl+d, Ctrl+w删除的单词
Ctrl + l 相当于clear,即清屏
Ctrl + r 查找历史命令
Ctrl + b 向回移动光标
Ctrl + f 向前移动光标
Ctrl + t 将光标位置的字符和前一个字符进行位置交换
Ctrl + & 恢复 ctrl+h 或者 ctrl+d 或者 ctrl+w 删除的内容
Ctrl + S 暂停屏幕输出
Ctrl + Q 继续屏幕输出
Ctrl + ← 光标移动到上一个单词的词首
Ctrl + → 光标移动到下一个单词的词尾
Ctrl + p 向上显示缓存命令
Ctrl + n 向下显示缓存命令
Ctrl + d 关闭终端
Ctrl + c 终止进程/命令
Shift + 上或下 终端上下滚动
Shift + PgUp/PgDn 终端上下翻页滚动
Ctrl + Shift + n 新终端
alt + F2 输入gnome-terminal打开终端
Shift + Ctrl + T 打开新的标签页
Shift + Ctrl + W 关闭标签页
Shift + Ctrl + C 复制
Shift + Ctrl + V 粘贴
Alt + 数字 切换至对应的标签页
Shift + Ctrl + N 打开新的终端窗口
Shift + Ctrl + Q 管壁终端窗口
Shift + Ctrl + PgUp/PgDn 左移右移标签页
Ctrl + PgUp/PgDn 切换标签页
F1 打开帮助指南
F10 激活菜单栏
F11 全屏切换
Alt + F 打开 “文件” 菜单(file)
Alt + E 打开 “编辑” 菜单(edit)
Alt + V 打开 “查看” 菜单(view)
Alt + S 打开 “搜索” 菜单(search)
Alt + T 打开 “终端” 菜单(terminal)
Alt + H 打开 “帮助” 菜单(help)
接下来对于几个上一章所讲解的常用命令的选项和参数进行一个简单的扩展。其实后期大家在学习和工作中用到其他的命令,我们完全可以自己在互联网上查询资料。那么前期,我带着大家入门。
ls命令
ls是英文单词list的缩写,他的功能是列出当前目录下的文件列表,是非常常见的Linux命令之一。
Linux下目录特点
以 . 开头的文件是隐藏文件,使用ls查看时,需要加上 -a(all)参数才能显示。
.代表当前目录 …代表上一级目录(可以理解为隐藏的两个文件路径)。我们常用cd…跳到上一级目录。
ls常用选项
选项 功能
[-a] all,显示所有内容,包含隐藏文件
[-l](字母L小写) 显示文件详细信息
[-h] human-readable,需要配合-l(字母L小写)选项,所谓的人性化显示
ls配合通配符
通配符 功能
注意:Linux下 目录名称 以及 文件名称 大小写是有区别的!
命令 功能
cd 切换到当前用户的家目录(home/用户名)
cd ~ 和 cd 效果一样
cd … 跳转到上一级目录
cd - 在最近两个目录来回切换,有点像图形界面的 Alt + Tab切换窗口的感觉
cd后面的路径可以是两种 相对路径 和 绝对路径
相对路径是指相对当前目录的路径
绝对路径是指全路径。可以从 /(根目录)开始,或者是~(家目录)开始。
mkdir命令
创建一个新的目录
选项 功能
[-p] 可以递归创建目录
新建的目录名称不能重名
rm命令
删除文件或目录
选项 功能
[-f] 强制删除,忽略不存在的文件,无需提示
[-r] 递归删除目录下的内容,删除文件夹就用这个选项
cp命令
拷贝文件或者目录,类似DOS中的copy
$cp 源文件 目标文件
选项 功能
[-i] interactive互动,说白了就是覆盖文件时有提示
[-r] 如果cp跟上的时目录,那么将会递归拷贝目录下的所有子目录和文件
mv命令
mv是move的缩写 用来 移动文件/目录
小技巧:如果需要重命名,也可以使用mv命令覆盖当前文件/目录 达到效果
选项 功能
[-i] interactive,覆盖文件时有提示
tree命令
tree命令可以将目录结构显示出来(树状显示)
选项 功能
[-d] directory,只显示目录
有的同学系统中默认没有此命令。所以会提示:
提示
你看写得多清楚,在Ubuntu下使用apt安装。
$ sudo apt-get install tree
查看文件内容相关命令
命令 功能
cat 文件名 concatenate,查看文件内容、创建文件、文件合并、追加文件内容等
more 文件名 more,分屏显示文件内容(内容多一般用more)
grep 搜索内容 文件名 grep,搜索文件内容
cat
查看文件内容、创建文件、文件合并、追加文件内容等
命令会一次性显示所有内容,所以适合查看内容较少的文件
选项 功能
[-b] 显示每一行的行号
[-n] 只显示有内容的行号,空行不算一行
more
此命令可以分屏显示文件内容,每次只显示一页内容。所以适合查看内容多的文件。
使用more的操作按键
操作按键 功能
空格键 显示下一页
回车键 Enter 显示下一行
b back,显示上一页
f forward,向前和空格效果一样
q quit,退出
/ 搜索文字 搜索文本中的内容
grep
(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
选项 功能
[-n] line-number,显示匹配行及行号
[-v] invert-match,选中不匹配的行
[-i] ignore-case,忽略大小写
grep常用查找方式
在file_name中 搜索Hello_world这个单词
g r e p H e l l o w o r l d f i l e n a m e grep Hello_world file_name grepHelloworldfilenamegrep “Hello_world” file_name
在多个文件中查找
grep “Hello_world” file_1 file_2 file_3 …
常用两种模式查找
参数 功能
^hello 行首,搜索以hello开头的行
world$ 行尾,搜索以world结束的行
几个常用符号
重定向符号
Linux中允许将命令执行结果 重定向到一个文件
将本应该显示在终端上的内容 输出/追加 到指定文件中
符号 功能
> 输出重定向到一个文件或设备 覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
echo会在终端中显示参数指定的文字,通常会和 重定向 联合使用
管道符号 |
Linux 允许将 一个命令的输出 可以 通过管道 做为 另外一个命令的输入
command 1 | command 2 | command 3 … …
ls -lah ~| grep -n vi 找到有关vi的命令
关机重/启命令
shutdown命令可以安全关闭 或者 重新启动系统,直接使用 shotdown命令,默认表示1分钟后关机.
命令格式:
$shutdown [选项] <参数>
选项 功能
[-r] 重新启动
[-c] 取消之前的关机计划
参数
[时间]:设置多久时间后执行shutdown指令;
[警告信息]:要传送给所有登入用户的信息。
示例
一分钟以后关机
$shutdown
立刻关机
$shutdown now
在今天的21:30关机
$shutdown 21:30
10分钟以后关机
$shutdown +10
10分钟以后关机,同时发出警告信息
$shutdown +10 “System will shutdown after 10 minutes”
取消关机计划
$shutdown -c
reboot命令也可以用来重新启动正在运行的Linux操作系统。
和 shutdown -r now一样
网络配置命令
命令 功能
ifconfig configure a network interface,查看/配置计算机当前的网卡信息
ping 测试目标ip地址的连接是否正常
ifconfig命令
ifconfig命令被用于配置和显示Linux中网卡信息。
查看网卡信息
$ifconfig
快速定位IP地址
$ifconfig | grep inet
一台计算机中可能会有一个 物理网卡 和 多个虚拟网卡,在Linux中物理网卡名字一般是 ensXX
127.0.0.1这个地址是一个比较特殊的地址,称之为本地回环地址,可以用来测试本机网卡是否正常工作。
ping命令
ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息。一般用于检测计算机之间的网络通讯是否正常。
由于ping命令的工作原理,服务器人员给往往将ping用作动词。经常说:“ping一下某某计算机”
示例:
“ping”目标主机
$ping IP地址
检测本地网卡是否正常
$ping 127.0.0.1
结束ping的执行使用Ctrl+C。在Linux中终止一个终端程序绝大多数都可以使用Ctrl+C
SSH(Secure Shell)
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
OpenSSH
SSH只是一种协议,存在多种实现OpenSSH就是其中一种,它是一款软件,应用非常广泛在Mac以及Ubuntu中都自带OpenSSH。
SSH的登录过程
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。
(2)用户使用这个公钥,将登录密码加密后,发送回来。
(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
SSH客户端命令
ssh [-p port] user@remote
user 是远程端上的用户名,默认是当前用户
remote是远程端的地址,可以是IP/域名
port是远程端的端口,默认是22
Ubuntu下开启SSH
Ubuntu下SSH分
openssh-client(客户端)
openssh-server (服务端)
检测是否有开启ssh服务
hank@ubuntu:~$ ps -e | grep ssh
4910 ? 00:00:00 sshd
其中sshd 为server端的守护进程,如果没有出现sshd,那么很有可能你的系统中没有安装server端。或者ssh服务没有启动。
开启ssh服务
hank@ubuntu:~$ sudo /etc/init.d/ssh start
[ ok ] Starting ssh (via systemctl): ssh.service.
安装openssh-server
如果显示上述命令找不到。那么是因为我们的Ubuntu系统默认没有服务端,所以可以通过下面命令安装。
$ sudo apt-get install openssh-server
可能出现错误
$ sudo apt-get install openssh-server
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:
openssh-server : 依赖: openssh-client (= 1:7.1p1-4)
依赖: openssh-sftp-server 但是它将不会被安装
推荐: ssh-import-id 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
因为openssh-server 需要依赖openssh-client,但是很明显,我们系统自带的版本和目前要安装的server版本不同。所以我们重新安装一下client版本。
hank@ubuntu:~$ sudo apt-get install openssh-client=1:7.1p1-4正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
建议安装:
ssh-askpass libpam-ssh keychain monkeysphere
下列软件包将被【降级】:
openssh-client
升级了 0 个软件包,新安装了 0 个软件包,降级了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 581 kB 的归档。
解压缩后将会空出 36.9 kB 的空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirror.neu.edu.cn/ubuntu xenial/main amd64 openssh-client amd64 1:7.1p1-4 [581 kB]
已下载 581 kB,耗时 33秒 (17.6 kB/s)
dpkg:警告:即将把 openssh-client 从 1:7.2p2-4 降级到 1:7.1p1-4
正在将 openssh-client (1:7.1p1-4) 解包到 (1:7.2p2-4) 上 …
正在处理用于 man-db (2.7.5-1) 的触发器 …
正在设置 openssh-client (1:7.1p1-4) …
正在安装新版本配置文件 /etc/ssh/ssh_config …
这样可以看到降级成功。然后我们再次安装openssh-server就OK了!
hank@ubuntu:~$ sudo apt-get install openssh-server
SCP(Secure copy)
scp scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
命令格式
scp -P port 源文件路径 目标文件路径# 将本地目录下的123.txt拷贝到远程桌面目录下$scp -P port 123.txt user@remote:Desktop/123.txt# 把远程桌面目录下的123.txt文件 复制到 本地当前目录下scp -P port user@remote:Desktop/123.txt 123.txt# 加上 -r 选项可以传送文件夹# 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktopscp -r demo user@remote:Desktop# 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹scp -r user@remote:Desktop demo
选项 功能
-r 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
-P 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口
SSH常用配置
免密登陆
配置公钥
执行 ssh-keygen 即可生成 SSH 钥匙,一路回车即可
上传公钥到服务器
执行 ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥
配置别名
每次都输入ssh -p port user@remote,非常不方便,而且还不好记忆
而 配置别名 可以让我们进一步偷懒,譬如用:ssh mac 来替代上面这么一长串,那么就在 ~/.ssh/config 里面追加以下内容:
Host mac
HostName ip地址
User H
Port 22
保存之后,即可用 ssh mac 实现远程登录了,scp 同样可以使用。