linux 学习 (基于ubuntu)
一. 在虚拟机中安装ubuntu
可参考如下博客: https://blog.csdn.net/u014337397/article/details/80751753
二. 关于linux的发展史
1.设计之初就是为了多用户使用的,所以每个用户对应进去看到文件都是不一样的,私有的,跟Windows有很大的差别,待会儿看到目录树就会清楚
2.版本问题:内核只有一个,各种发行版本都是以内核版本为基础再分装各种功能的,就是发行版=内核+新的功能
3.目录树下几个重要文件夹(/下面所有文件夹都不能动)
a) 根目录(/)
根目录是整个系统最重要的一个目录,因为所有的目录都是由根目录衍生出来的。只有root用户才具有在该目录下写权限。
b) /bin目录 – 用户二进制文件
包含二进制的可执行文件,你需要的常见的Linux命令都位于此目录下。
c) /sbin目录 – 系统二进制文件
这个目录下的命令通常由系统管理员使用, 对系统进行维护。
d) /etc– 配置文件
包含所有程序所需要的配置文件,也包含用于启动/停止单个程序的起动和关闭shell脚本。
e) /dev-设备文件
包含设备文件,包括终端设备、USB或连接到系统的任何设备,如网卡等。
f) /proc-进程信息文件
这是一个虚拟的文件系统,包含有关正在运行的进程信息。
g) /var-变量文件
包含目录下内容可变的文件,例如,系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp)。
h) /tem-临时文件
包含系统和用户创建的临时文件,当系统重启时,文件消失。
i) /usr-用户程序
包含二进制文件、库文件、文档和二级程序的源代码。
/usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。例如:at、awk、cc、less、scp。
/usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。例如:atd、cron、sshd、useradd、userdel。
/usr/lib中包含了/usr/bin和/usr/sbin用到的库。
/usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apache2中
j) /home -HOME目录
包含所有用户的个人档案,Linux是多用户的系统,所以用该目录保存各用户的信息。
k) /boot -引导加载程序
包含引导加载程序相关的文件。
l) /lib -系统库
包含支持位于/lib和/sbin下的二进制文件的库文件。
m) /opt -可选的附加应用程序
n) /mnt -挂载目录
关于目录树:
先看基本常用的命令 apt 的全称是Advanced Packaging Tool是Linux系统下的一款安装包管理工具。
1. sudo apt update #更新可用软件列表
2. sudo apt upgrade #更新已安装的软件
3. sudo apt install 软件名 #安装软件
4. sudo apt remove 软件名 #删除软件
5. sudo apt autoremove 软件名 #用来自动清理不再使用的依赖和库文件
6. sudo apt show 软件包名 #示软件包具体信息。例如:版本号,安装大小,依赖关系,bug报告等等。
7. apt list --upgradeable:显示可升级的软件包。
#sudo为获得管理员权限
接下里操作一下在linux安装常用工具
apt安装软件命令其实不需要记忆,当你在终端中输入软件名事,如果软件未安装,他会提示你安装的
1. sudo apt install ipython #安装python
2. sudo apt install ipython3
3. sudo apt install python-pip
4. sudo apt install python3-pip #安装python工具包
安装远程登录 ssh服务器
1. sudo apt install openssh-server #安装ssh服务器,安装之后才可以在其他系统中通过ssh工具远程登录
接下来练习一下删除命令
例:
1. sudo apt remove libreoffice-commen #删除ubuntu系统内置的一个软件libreoffice
2. sudo apt remove unity-webapp-commen #删除亚马逊
拓展:
1. apt和apt-get都是ubuntu下常用的安装软件命令
2. apt-get是早期的使用方法,从ubuntu16开始,官方建议使用apt
3. 这两个命令的使用方式非常相似
另一种安装方式:Debian
deb是Debian Linux的安装格式,在ubuntu中也可以使用,要安装dep包,需要dpkg这个中端命令
格式: 这种安装方法首先要进入安装包所在位置才能执行
sudo dkpg -i <package.dep>
实战:看一下谷歌浏览器和搜狗输入法的安装
1. 下载deb包
对于谷歌Chrome32位版本,使用如下链接:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb
对于64位版本可以使用如下链接下载:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
必须下载正确的版本否则会出现问题
2. 安装deb包
sudo dpkg -i google-chrome-stable_current_amd64.deb
3. 要是依赖出现问题(修复依赖关系)
sudo apt-get -f install #基本上所有软件都需要加上这步,依赖树来关联
4. 运行chrome
chrome
#下载搜狗输入法的安装包 下载地址为:http://pinyin.sogou.com/linux/ ,如下图,要选择与自己系统位数一致的安装包,我的系统是64位,所以我下载64位的安装包 wget "http://cdn2.ime.sogou.com/dl/index/1524572264/sogoupinyin_2.2.0.0108_amd64.deb?st=tQdHKEaxh6PcyFVf4QfT1A&e=1539855246&fn=sogoupinyin_2.2.0.0108_amd64.deb"
#要去西永设置的语言支持将输入法的系统设置为fcitx
- sudo dpkg -i sogoupinyin_2.1.0.0082_amd64.deb
- sudo apt -f install
- 重启
这边插入一个小方法:(关于在电脑中复制的文本没办法在ubuntu虚拟机中粘贴的问题)
1. sudo apt-get autoremove open-vm-tools 2. sudo apt-get install open-vm-tools 3. sudo apt-get install open-vm-tools-desktop 4. 重启
##这边呀注意的是ubuntu默认输入法切换为Ctrl+ space
三. linux终端命令格式
1. 终端命令的基本格式
commond [options] [parameter]
commond:命令名,相应功能的英文单词或者手缩写
options:可选项,可对命令进行控制,也可省略
parameter:传给命令的参数.可以是一个,也可以是多个
2. 查看命令帮助信息
先了解以下两种方法:
1. --help
commond --help
说明:
显示command帮助信息
2. man
man command
说明:
查阅command的使用手册
man是manual的缩写,是linux提供的一个手册,包含绝大多数命令,函数的使用
3. 常用linux命令
这里要注意的是linux区分大小写:
命令记不全的可以用tab键补全
上面的删除文件命令rm其实也是删除文件夹命令,只不过要加选项
删除文件夹 rm -r 文件夹名
四. 有关文件和目录操作命令
- 查看目录内容
ls
- 切换目录
cd
- 创建和删除
touch
mkdir
rm
- 拷贝和移动
cp
rm
- 查看文件内容
cat
more
grep
- 其他
echo
重定向 > 和 >>
管道 I
1. 终端命令使用技巧
1. 自动补全: 在敲出文件/目录/命令名字前几个字母之后 按下tab键
- 如果没有歧义,会自动补全
- 如果有歧义(就是有多个命令的前几个字母一样的) tab键再按一下,就会打印出命令前几个字母是你输得所有命令
2. 按上/下键 可以在曾经输入的命令中切换
如果想要退出选择,可以快捷键ctrl+c
2. ls命令说明
ls是list的缩写,其功能是列出目录的内容,是最常用的命令之一,类似dos下的dir
linux下文件和目录的特点
-
linux下文件或者目录名称最长256个字符
- 以.开头文件为隐藏文件,需要 -a参数才能显示
- .代表当前目录
- ..代表上一层目录
ls常用选项
通配符的使用
通配符 | 含义 |
* | 代表可以匹配任意个字符 |
? | 代表匹配一个字符 |
[] | 代表匹配字符组中任意一个 |
[abc] | 代表匹配abc中任意一个 |
[a-f] | 代表匹配a-f范围任意字符中的一个 |
3. cd 切换目录 cd是change directory的简写,其功能为切换当前工作目录,也是最常用命令之一
注意:linux下所有目录和文件名都是对大小写敏感的
命令 | 含义 |
cd | 切换到当前用户主目录(/home/用户目录) |
cd~ | 切换到当前用户主目录(/home/用户目录) |
cd . | 保持当前工作目录不变 |
cd .. | 切换到当前目录的上一层目录 |
cd - | 可以在最近工作的两个目录切换(上下键) |
绝对路径和相对路径
#在输入路径时候,最前面不是 / 或者 ~,表示相对当前目录所在的目录位置
#在输入路径的时候,最前面是 / 或者 ~,表示相对当前根目录 /家目录开始的目录位置
4. 创建和删除操作
touch
- 创建文件或者修改文件时间
- 如果文件已经存在,可以修改文件末次次该时间
- 同时创建福讴歌文件 touch file1.txt file2.txt file3.txt
mkdir
- 创建新目录
- 创建多个目录 mkdir -p {d1,d2,d4}
- 递归创建多级目录 mkdir -p a/b/c/d
选项 | 含义 |
-p | 可以递归创建目录 |
rm
删除文件或者目录
注意rm命令的删除是一次性,永久性的,跟windows的回收站不一样
选项 | 含义 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归删除目录下的内容,删除文件夹必须加ci参数 |
5. 拷贝和移动文件
序号 | 命令 | 对应英文 | 作用 |
01 | tree[目录名] | tree | 以树状图列出文件目录结构 |
02 | cp 源文件 目标文件 | copy | 肤质文件或者目录 |
03 | mv 源文件 目标文件 | move | 移动文件或者目录/文件或者目录重命名 |
tree
可以以树状图结构列出文件目录 #tree这个命令默认是没有的,需要自己安装 sudo apt install tree
选项 |
含义 |
-d | 只显示目录 |
cp
cp命令是将给出的文件或者目录拷贝到另一个文件或者目录中,相当于dos下的copy命令
选项 | 含义 |
-f | 已存在的目标文件会直接覆盖,不会提示 |
-i | 覆盖前提示 |
-r |
若给出的源文件是一个目录,则copy 将递归复制该目录下所有子目录和文件,目标文件必须为一个目录名 |
mv命令
mv命令可以移动文件或者目录,也可以给文件或者目录重命名(移动到同一个文件夹就是,名字变化了,就是重命名) #最好加选项-i
选项 | 含义 |
-i | 覆盖前提示 |
6. 查看文件内容
序号 | 命令 | 对应英文 | 作用 |
1 | cat | concatenate | 查看文件内容,创建文件,文件合并,追加文件内容的功能 |
2 | more | more | 分屏显示文件内容,按百分比显示文件内容 |
3 | grep 搜索文本文件名 | grep | 搜索文本文件内容 |
4 | echo 选项 输出内容 | echo | 输出内容到控制台上面 |
5 | head -n num | head | 显示文件开头部分内容 |
6 | tail -n/f 文件 | tail | 输出文件尾部内容 |
使用cat命令的选项
- 查看文件内容,创建文件,文件合并,追加文件内容的功能
- 一次性的全部展现出文本内容
选项 | 含义 |
-b | 对非空输出航编号 |
-n | 对输出的所有行编号 |
linux中还有一个nl和cat -b效果等价
more选项
- more命令可以分屏显示文件内容(百分比)
- 适用于查看文件较大的文件
选项 | 作用 |
空格 | 向下一页 |
Enter | 一次滚动手册一行 |
b | 回滚一屏幕 |
f | 向前滚一屏 |
q | 退出 |
/word | 搜索word字符串 |
grep
-
linux系统中grep是一种强大的搜索工具
- grep允许对文本文件进行模式查找,所谓的模式查找就是正则匹配
-
grep nologin /etc/passwd # 过滤出/etc/passwd下面所有含有noloing的信息
grep root /etc/passwd # 过滤出/etc/passwd下面root信息
-
选项和作用
选项 | 作用 |
-n | 显示匹配行及行号 |
-v | 显示不含匹配行的所有行(相当于求反) |
-i | 忽略大小写 |
常用的两种模式(注意:这里要查找的对象是行)
参数 | 含义 |
^a | 以a开头 |
$b | 以b结尾 |
echo指令
echo输出内容到控制台
• 基本语法
echo [选项] [输出内容]
• 应用实例
案例: 使用echo $PATH 指令输出环境变量
head指令
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容 • 基本语法
head 文件 (功能描述:查看文件头10行内容) head -n 5 文件 (功能描述:查看文件头5行内容, 5可以是任意行数)
tail指令
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容 • 基本语法 1) tail 文件 (功能描述:查看文件后10行内容) 2) tail -n 5 文件 (功能描述:查看文件头5行内容, 5可以是任意行数 3) tail -f 文件 (功能描述:实时追踪该文档的所有更新)
head和tail组合可以定位到我们要的文本内容
想要显示/etc/passwd下面的第10行到第20行, 可以使用管道符进行二次过滤
head -20 /etc/passwd | tail -1
7. 其他
1.echo 会在终端中显示参数指定的文字,通常会和重定向联合使用
2. 重定向 > 和 >>
- linux允许命令执行结果重定向到一个文件当中
- 将本应该显示在终端的内容 输出/追加 到指定的文件当中
其中 > 表示输出,会覆盖文件原有的内容
>> 表示追加,会将内容追加到已有文件的末尾
3. 管道 |
- linux允许将一个命令的输出可以通过管道作为另一个命令的输入
- 可以理解为现实生活中的管子,管子一头思塞进去,另一头取出来,这里 | 分为左右两端,左端写(输入),右端读(输出)
常见的管道命令有:
- more : 分屏显示内容
- grep : 在命令执行结果的基础上查询指定的文本内容
4. history
可以列出我们所有执行过的命令(会有相应的编号在命令之前)
使用技巧:要重复执行就直接 !编号 就直接执行了
关于重定向的扩展:
#1.把输入内容重定向追加到另一个文件 [root@qishi ~]# cat >> 1.txt << EOF > 这是键盘输入要追加 > 然后经过cat查出来 > 追加到1.txt > eof是结束符 > EOF [root@qishi ~]# cat 1.txt 这是键盘输入要追加 然后经过cat查出来 追加到1.txt eof是结束符 #2.把输入内容重定向写入到另一个文件 [root@qishi ~]# cat > 1.txt<<EOF > 这是输入写入 > 而不是追加 > eof > 还是结束符 > EOF #3.从文件中读入内容写入另一个文件 [root@qishi ~]# cat > 2.txt < 1.txt [root@qishi ~]# cat 2.txt 这是输入写入 而不是追加 eof 还是结束符 #4.从文件中读入内容追加另一个文件 [root@qishi ~]# cat >> 2.txt < 1.txt [root@qishi ~]# cat 2.txt 这是输入写入 而不是追加 eof 还是结束符 这是输入写入 而不是追加 eof 还是结束符