简单学习-Linux
写在前面:简单学习系列的对象可能是,因为工作学习等只需要简单使用一下,想要了解大概是个什么东西的人,即跨学科以使用为目的的。通常是从上到下,一点点根据需求递进的,并不适合计算机专业用来系统学习的东西。
https://www.bilibili.com/video/BV1RR4y177H9
背景
怎么运行程序
如何让人执行一项任务
程序就是执行任务的,和人执行任务类似,看一下正常情况下人是如何执行任务的
通常分为三步
第一步S1 找到这个人
找到 银河系/太阳系/地球/中国/北京市怀柔区怀北镇/中国科学院大学/5公寓/小林
第二步S2 给他分配任务,或者一些完成任务需要的东西
给他一个 任务:去图书馆借书,书名:图像处理
第三步S3 他根据给的任务和材料去完成工作
小林去图书馆借完书后把书给分配任务的人
- 还可以更加详细一点,分为三步
- 第一步S1 找到这个人
- 可以是邮寄一个信给他
- 可以是见面找到他
- 第二步S2 给他分配任务,或者一些完成任务需要的东西
- 可以放在信里面
- 可以见面口头告诉他
- 第三步S3 他根据给的任务和材料去完成工作
- 可以监督他完成
- 可以不监督,完成后给个结果就可以了
- 第一步S1 找到这个人
如何让程序执行一项任务
- 既然类似,应该也是三步
- 第一步S1 找到这个
人程序 - 第二步S2 给
他程序分配任务,或者一些完成任务需要的东西信息 - 第三步S3
他程序根据给的任务和材料去完成工作
- 第一步S1 找到这个
实践
一共两个方法
一种是界面直接点击(和小林见面),
- 即找到所在文件夹,点击程序
另一种是命令调起程序(寄信给小林,默认我不会写字,由邮政人员代写),
即找到命令提示符程序(邮政人员)
告诉程序路径(告诉邮政人员寄给小林)
注意windows平台程序如果带路径调起要加引号,看成一个整体
告诉程序需要的参数(告诉邮政人员寄信内容,让小林干什么)
1 | "C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE" C:\Users\Zander\Desktop\作业.docx |
一些问题
有界面和无界面
通俗的讲可以看成,
- 有界面就是,我看着小林完成任务,从找到他和他见面,到他到图书馆,到借到书给我,我全程都是跟着他的
- 无界面就是,我寄一封信给小林让他借书给我,我不需要看到他怎么去借的,最后给我就行
为什么会有无界面程序
- 我跟着小林我自己不要做事吗,监督他有一些没必要的浪费
- 即界面本身也是消耗电脑资源的,界面本身也是一种软件,
- 对于windows界面是必须安装的,
- 对于linux界面可以安装,也可以不按照
就像win和linux一样,不是取代关系,而是是否适合,是否浪费资源的关系
- 界面软件强调交互性很强的工作,如视频播放等
- 无界面软件强调没必要交互太多,你给我任务我做就行,最后给你结果,节约资源又高效
环境变量
例子的环境变量
小林的地址是正确的,但是好像怪怪的
- 银河系/太阳系/地球/中国/北京市怀柔区怀北镇/中国科学院大学/5公寓/小林
反正在中国快递地址不会这么写,至少目前是这样,我们大概写成
- 北京市怀柔区怀北镇/中国科学院大学/5公寓/小林
为什么可以省略
银河系/太阳系/地球/中国/
,- 因为我们生活的环境在这了,默认是
银河系/太阳系/地球/中国/
,有点类似于我们和其他人约定好了前面有银河系/太阳系/地球/中国/
- 如果以后发现别的银行系星球生命,而且和平行宇宙里面的人很密切,可能就要加上前缀了
太阳系/地球/中国/
- 如果发现平行宇宙,可能前缀就是
宇宙1/银河系/太阳系/地球/中国/
- 这样看来,这样环境,通常是不变的,变可能要好些年,但是也可能会变,再小的机率也是机率,本质还得是变量,就叫环境变量,即通常是稳定不变的约定前缀
- 因为我们生活的环境在这了,默认是
电脑的环境变量
电脑可以有环境变量吗,这个
"C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE"
好长,如果每次都这个地址好麻烦呀这个可以有(步骤文字教程暂略,后面添加 TODO)
下面是添加完环境变量截图
测试一下
为什么是winword不是word,因为他的实体程序就是winword,而不是word,即假设小林就是小林身份证上的名字,你不能寄信写林林等昵称,别人不认。
为什么这里面直接winword,不用加引号也可以
- 因为winword本身不会引起歧义,不带路径,而且文件名没有空格
- 即带路径时一定加引号,程序名有空格一定加引号,不然咋知道是程序名还是给程序的参数呢
- 因为winword本身不会引起歧义,不带路径,而且文件名没有空格
为什么后面没有参数
- 后面参数是可选的,也可以带上,带上就直接打开
- 写到这里,应该对以前python,java等配置环境变量有了进一步了解,为什么这样做,因为为了省略前缀
- TODO,关于
JAVA_HOME
解释后面添加
- TODO,关于
怎么登录电脑
如何和程序建立联系
现实中如何建立联系
我怎么联系上小林的,小林凭什么给我借书
我怎么联系上小林的
- 我们在同一个世界,可能是同一个地球,可能是同一个房子的,可以通过自己或者快递员告诉他
或者说我可以进入存在小林的世界
即使不知道具体地址,有足够耐心也可以一个个地址找到
小林凭什么给我借书
- 我有权要求小林这样做,因为我们可能是朋友或者亲戚
- 登录操作系统(同一个世界)
- 在操作系统里面有权限执行程序(成为朋友或者天然就是小林亲戚)
登录windows操作系统
windows操作系统怎么登录,
可以碰得着电脑的话,就是
- 正常就是打开电脑
- 输入密码或指纹验证或其他验证
- 进入界面,就可以找到程序了
碰不着电脑怎么办, (TODO有空出详细教程)
别人可以碰着那边
打开电脑,
很重要一点,一定不要把电脑关机了,要一直运行
解锁
设置允许远程控制
告诉你地址,用户名,密码
连接这边
- 找一个有网络的电脑
- 打开远程控制软件
- 输入地址
- 进入之后,就可以愉快的操作了
登录Linux操作系统
- 上面说过linux可以带界面也可以不带界面,界面本质上和word等一样,都是软件程序
- 可以碰着电脑有哪些情况
- 虚拟机运行 (TODO有空出详细教程)
- 实体机安装 (TODO有空出详细教程)
- 可以碰得着电脑的话,就是
- 正常就是打开电脑
- 输入密码或其他验证
- 进入控制台或者界面,就可以找到程序使用了
碰不着电脑有哪些情况
- 云服务器(可能是老师给的,可能是自己买的TODO)
- 自己的linux电脑联网,进一步的可能有公网ip (TODO有空出详细教程)
碰不着电脑怎么办
别人可以碰着那边(TODO有空出详细教程)
打开电脑,
很重要一点,一定不要把电脑关机了,要一直运行
解锁
设置允许远程控制
告诉你地址、端口、用户名、密码或者验证密钥或者其他验证方式
就行有的门可以钥匙打开,人脸识别,指纹,等一样
连接这边
- 找一个有网络的电脑
- 打开远程控制软件
- 输入地址、用户名,验证等
- 进入之后,就可以愉快的操作了
登录windows实践
登录windows实践(直接)
这个要写吗???
登录windows实践(远程)
TODO
登录linux实践(远程)
登录linux实践(直接)
TODO
登录linux实践(远程)
受控端(服务器)
即被控制的那端
配置方式
TODO具体有空更新,
可能是老师同学服务商提供的机器
有可能你自己的电脑,即自己的电脑也可以是服务器,提供服务被控制的就是服务器
默认别人已经配置好了,并且提供下面信息
被控端(服务器)需要给控制端(用户)的信息
ip地址 或者 域名地址 (必须有一个)
直接是或的更新
ip和域名可以看成效果一样,具体区别后面更新TODO
内网公网后面更新TODO
端口 (可选)
- 如果说了是哪一个端口,就是那个端口
- 这个没有没有特别说明通常是22
用户名 (必须有)
- 这个是被控制的机器那边开好的账户
验证信息 (必须有一个)
验证信息通常有两种,一种是密码,一种是公钥私钥,两种方法选一种就可以
密码
- 可以给一个密码
公钥私钥
- 通常是
- 控制端(用户) 生成公钥A和私钥B
- 被控端(服务器),添加加公钥A到服务器里面
- 控制端(用户)使用私钥B登录
- 如果都是信任的人话,如果你不会生成公钥私钥(TODO)
- 也可以让那边被控端(服务器)生成公钥A私钥B
- 被控端(服务器),添加加公钥A到服务器里面
- 把私钥B给控制端(用户)
- 控制端(用户)使用私钥B登录
- 注意
- 私钥B相当于密码,不要随便给别人,
- 让被控端(服务器)生成公钥A私钥B,前提是你信得过这个人,不然相当于他知道你的密码,要是他乱操作,后面出问题要找你的
- 通常是
控制端(用户)
- 即连接这边
- 找一个有网络的电脑
- 打开远程控制软件
- 输入地址、端口、用户名、验证等
- 进入之后,就可以愉快的操作了
找一个有网络电脑
略
打开远程控制软件
软件名 | 优点 | 缺点 | 下载地址 |
---|---|---|---|
electerm | 功能较全、开源、免费、可以看文件 | 基于浏览器有点耗资源 | https://electerm.github.io/electerm/ |
xshell | 功能较全 | 不能看文件(需要xftp),需要付费 | |
TODO |
后面演示基于electerm
登录
使用
登陆成功大概是这样,可以回车试试,也可以输入 pwd
然后回车试试,到此就成功登录了
注意
有写服务器可能配置有区别,比如设置跳板机器等,通常上面都是可行的,TODO
Linux基础知识
文件和目录
- Linux所有资源都可以看成一个文件,包括程序、数据、甚至是一个设备
- 这些文件总不能都放在一起吧,一来名字要起不一样,二来文件不好找,因此需要放在不同的目录,即文件夹
- 所有文件都放在文件夹里面,文件夹里面还可以放文件夹,最后像一个树一样
文件夹
查看有哪些文件夹和文件
1 | # 查看有哪些文件和文件夹 list |
ls是list的意思,用于显示文件名及其属性。
参数选项-alh是列出所有文件详细属性及权限,并且大小以1000进位
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 [root@work ~]# ls -alh
total 92K
dr-xr-x---. 20 root root 4.0K Oct 30 15:49 .
dr-xr-xr-x. 20 root root 4.0K Sep 24 14:44 ..
-rw-r--r-- 1 root root 93 Oct 4 01:36 b509f104.json
-rw-------. 1 root root 32K Oct 30 16:04 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 459 Jun 29 2020 .bashrc
drwxr-xr-x. 6 root root 59 Sep 24 14:33 .cache
drwxr-xr-x. 3 root root 22 Jun 28 2020 .cmake
drwxr-x---. 4 root root 51 Oct 30 15:56 .coding
drwxr-xr-x. 5 root root 56 Nov 25 2020 .config
lrwxrwxrwx. 1 root root 48 Jul 4 2020 credentials.json -> /www/server/panel/plugin/gdrive/credentials.json
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
查看当前在哪个文件夹
1 | # 查看当前在哪一个目录 |
切换文件夹
1 | # 切换文件夹路径 |
绝对路径
1 | # 路径一定由根目录/写起,完整描述位置,如 |
相对路径
1 | # 相对于目前工作的路径 |
创建新文件夹
1 | mkdir 新文件夹名 |
1 | [root@work ~]# pwd |
文件和程序
找到程序
1 | # 怎么有没有安装某个程序呢 |
调用程序的方式
1 | # 直接程序完整路径 绝对路径 |
1 | [root@work bin]# whereis echo |
添加到环境变量
- 软连接
- bash配置文件
bash配置文件
此用户
系统在每次登陆账户时,会自动读取
~/.bashrc
文件中的内容。可以在这里面起到配置环境变量作用,
- 配置完
source ~/.bashrc
更新
- 配置完
作用2:将需要的软件和命令添加到该文件中,则会在登陆时自动执行。
- 使用
source ~/.bashrc
可以直接立即执行。
- 使用
步骤:
- 修改
vi ~/.bashrc
文件,(可参考vi使用) - 按
i
进入编辑模式 - 修改内容参考
- 按
esc
和:wq
和回车
保存退出 - 立即生效
- 修改
1 | # 修改内容参考 |
1 | # 立即生效 |
注意
- alias可以起到命令重命名作用
- 如果默认sh终端软件不是bash,则需要修改对应配置文件,如zsh
全局
如果是多人共享服务器,普通用户尽量不要配置这个,通常也配置不了
/etc/profile
文件是系统为每个用户设置的环境信息,当用户第一次登录时,该文件被执行。此文件的改变会涉及到系统的环境,也就是有关Linux环境变量的东西。步骤
- 修改 /etc/profile 文件
- 在 /etc/profile 文件的 最后 加入环境变量并保存,同上
- 立即生效
source /etc/profile
对比
- 修改.bashrc文件,它可以把使用这些环境变量的权限控制到用户级别,只是针对某一个特定的用户。
- 而修改 /etc/profile 文件,它是针对于所有的用户,使所有用户都有权使用这些环境变量。
- 相比较起来,第一种方法更加安全,因为如果采用第二种方法,它可能会给系统带来安全性的问题。
- 参考 https://www.cnblogs.com/chamie/p/10649260.html
软连接
1 | ln –s 文件或文件夹 新文件 |
无法运行程序怎么办
- 可能是你没有执行的权限
- 如果这个程序文件不是你的,而且你没有权限,需要向管理员申请一下权限
- 如果这个文件拥有者是你,需要把文件变成程序
- 还有路径是不是少加
./
- 还有路径是不是少加
文件变成程序
1 | chmod 文件三个用户的权和 文件名 |
进一步操作
复制删除移动
复制文件或目录 cp
1 | cp 来源文件(旧文件) 目的文件(新文件) |
删除文件或目录 rm
1 | rm 文件 |
移动或重命名 mv
1 | mv 旧文件 新文件夹内 |
后台运行
后台运行nohup
1 | nohup 脚本或命令 可选参数 > 日志文件名 2>&1 & |
查看文件
显示文件内容前n行 head
1 | head –n 文件名 |
显示文件内容后n行 tail
1 | tail –n 文件名 |
中途杀死程序
1 | # top查看所有正在运行的程序 |
压缩与解压
文件的打包与解包 tar
1 | # 将/work压缩打包到work.tar中 |
文件的打包与解包 unzip
1 | # 解压zip包 |
编辑文件
- 有一些文本文件不可能每次都下载下来编辑,编辑完再上传吧,有些文本文件可以直接在linux终端编辑,早期代码不都是这样编辑的嘛
vi(vim)编辑器使用
最基本使用
- 打开文件
1 | vi 文件名 |
此时可以看到use_ls.log的内容,按
i
键可以进入编辑模式进入编辑模式,
- 上下键可以控制光标移动
- 光标位置可以插入字母数字等,也可以按删除键进行删除
编辑完成,按
Esc
退出编辑模式然后按
shift
加;
实现输出:
然后按
w
和q
和回车
即可保存文件
误打开误编辑怎么退出
- 编辑完成,按
Esc
退出编辑模式 - 然后按
shift
加;
实现输出:
- 然后按
q
和!
和回车
即可退出
进一步使用
流程变程序bash脚本
步骤
- 创建
aaa.sh
文件, - 编辑sh文件,具体里面可以是linux命令,其中
#
为行注释 - 将文件设置成可执行
- 像其他文件一样运行
- 创建
问题
- win to linux https://bbs.huaweicloud.com/blogs/detail/272466
- 建议使用vscode等编辑而不是记事本
1 | sed -i 's/\r//' ./ccc.sh |
安装程序
无root权限,无安装权限
公共程序(如C或python等)
- 可以用whereis查看一下在哪
自己程序
按照上面流程上传程序文件
如果需要编译可以提取编译,或者上传后编译
根据运行程序
如果是python等动态语言,记得前面加上python,python才是程序,py脚本相当于参数
- 有必要的话可执行程序的目录添加到自己的环境变量
有root权限
公共程序(如C或python等)
- 查看系统是什么系统
- 根据系统查包名及命令
- 执行命令
可以搜XXX系统怎么安装XXX,查看具体命令
如centos如何安装cmake
自己程序
- 和无root一样
重要的热键
补全
1 | [TAB] 命令补全与文件名补齐。若敲击一下未出现,则代表有多个前戳相同的选项备选,可以再敲击一下以显示所有备选选项推荐常用,可以避免输入错误的机会 |
命令帮助查询
1 | # man 命令 的方式进行查询命令的说明以及用法 |
最近的命令
- 上下键可以最近,命令
中断
1 | [Ctrl-C] 中断目前程序,强行停止给出的命令 |
其他
electerm用法
- 连接
- 上传文件
- 运行文件
- 尽量字母命名
- win和linux换行
- 文件权限
- 下载文件
参考和进一步
- https://www.runoob.com/linux/linux-tutorial.html
- http://linux.vbird.org/linux_basic/
1
2
3
4
5
6
7
8
9
10
11
最近的命令
+ 上下键可以最近,命令
中断
```bash
[Ctrl-C] 中断目前程序,强行停止给出的命令
[Ctrl-D] 键盘输入结束(EOF),直接输入相当于exit退出,用户登录退出
其他
electerm用法
- 连接
- 上传文件
- 运行文件
- 尽量字母命名
- win和linux换行
- 文件权限
- 下载文件
参考和进一步
- https://www.runoob.com/linux/linux-tutorial.html
- http://linux.vbird.org/linux_basic/
1
2
3
4
5
6
7
8
9
10
11
最近的命令
+ 上下键可以最近,命令
中断
```bash
[Ctrl-C] 中断目前程序,强行停止给出的命令
[Ctrl-D] 键盘输入结束(EOF),直接输入相当于exit退出,用户登录退出
其他
electerm用法
- 连接
- 上传文件
- 运行文件
- 尽量字母命名
- win和linux换行
- 文件权限
- 下载文件
参考和进一步
最近的命令
- 上下键可以最近,命令
中断
1 | [Ctrl-C] 中断目前程序,强行停止给出的命令 |
其他
electerm用法
- 连接
- 上传文件
- 运行文件
- 尽量字母命名
- win和linux换行
- 文件权限
- 下载文件
参考和进一步
编辑完成,按
Esc
退出编辑模式然后按
shift
加;
实现输出:
然后按
w
和q
和回车
即可保存文件
误打开误编辑怎么退出
- 编辑完成,按
Esc
退出编辑模式 - 然后按
shift
加;
实现输出:
- 然后按
q
和!
和回车
即可退出
进一步使用
流程变程序bash脚本
步骤
- 创建
aaa.sh
文件, - 编辑sh文件,具体里面可以是linux命令,其中
#
为行注释 - 将文件设置成可执行
- 像其他文件一样运行
- 创建
问题
- win to linux https://bbs.huaweicloud.com/blogs/detail/272466
- 建议使用vscode等编辑而不是记事本
1 | sed -i 's/\r//' ./ccc.sh |
安装程序
无root权限,无安装权限
公共程序(如C或python等)
- 可以用whereis查看一下在哪
自己程序
按照上面流程上传程序文件
如果需要编译可以提取编译,或者上传后编译
根据运行程序
如果是python等动态语言,记得前面加上python,python才是程序,py脚本相当于参数
有必要的话可执行程序的目录添加到自己的环境变量
有root权限
公共程序(如C或python等)
查看系统是什么系统
根据系统查包名及命令
执行命令
可以搜XXX系统怎么安装XXX,查看具体命令
如centos如何安装cmake
自己程序
- 和无root一样
重要的热键
补全
1 | [TAB] 命令补全与文件名补齐。若敲击一下未出现,则代表有多个前戳相同的选项备选,可以再敲击一下以显示所有备选选项推荐常用,可以避免输入错误的机会 |
命令帮助查询
1 | # man 命令 的方式进行查询命令的说明以及用法 |
最近的命令
- 上下键可以最近,命令
中断
1 | [Ctrl-C] 中断目前程序,强行停止给出的命令 |
其他
electerm用法
- 连接
- 上传文件
- 运行文件
- 尽量字母命名
- win和linux换行
- 文件权限
- 下载文件