类似于windows的shell/cmd,linux的terminal可以做很多很多事。
Terminal的font,size, color乃至cursor都是可以根据个人喜好做修改 ,只需要右击点profile-profile preferences就能够修改了
在最左侧可以看到terminal的图标,如果需要固定,右键选择”unlockfrom launcher”便可
打开terminal后首先看到的是我们之前设定的username@hostName想要查看当前目录位置,可以输入 pwd回车 [print working directory]
快捷键ls 可以list该目录下的文件夹和文件
快捷键 ls -l 会列出该目录下的文件文件夹的详细信息
快捷键 ls -a 会列出该目录下所有文件(包括隐藏文件),隐藏文件在linux中也叫dot file/’.’ File [对应windows cmd下的h属性]//.file 没成心外不要去修改嗯
上面的-l和-a可以联合起来使用,在terminal里输入ls-la回车,列出的就是所有的文件文件夹的详细内容
尝试了基本的命令后,屏幕还是有点messy的,清算屏幕的话可以直接输入clear回车,就会回到最初状态了
通过terminal浏览文本文件,可以通过输入cat + 路径来实现。
比如在桌面新建文本命名为text, 打开后输入文本内容并保存。
在terminal中输入catDesktop/text 回车,可以看到文本内容显示在了terminal上
在terminal里,cd是change directory, cd 加文件夹名可以进入文件夹[和windows的shell1样]
回到上层目录只需输入cd .. 便可[同windows]
如果在terminal里想回到home,直接输入cd回车便可
新建目录:mkdir 加文件名
移除目录:rmdir 加文件名 【只在目录里面没有文件时可用】
新建文件:touch 加文件名 【如果已有了同名的文件则不会新建】
移除文件:rm 加文件名
当前目录复制文件:cp 复制的文件名 复制后的文件名
移动文件:mv 文件名 目标目录【移动到其他目录】,mv 文件名 新文件名【当前目录下重命名】
我们有1个文本文档,需要搜索文档里匹配的字段,这时候候可以用grep 关键词
来到需要搜索的文档的目录下,输入 grep 搜索字段名 搜索文件名 再回车便可
在文档所在目录下 输入diff文档1名 文档2名 回车便可
- 修改密码 输入关键字passwd回车 会提示先输入原密码,再进行修改
- 变量赋值 变量名=变量值[等号左右没有空格]
- 关键词 echo 加文字内容,表示显示echo后面的内容;echo$变量名 表示显示变量
- 关键词 info 加命令词 会给出该关键词的信息
- 点击键盘上下键可以迅速回顾之前已输入的命令
有时候我们想保存在terminal显示的信息,可以在正常输入的命令后面加 ‘>’ 再加希望命名的文件名便可,’>’ 不但可以创建1个新文档(如果路径下没有输入的文件名),也能够重写1个文档 (如果路径下已存在同名的文档)
如果想在原文档后面加上新的内容,将’>’改成’>>’便可
以下面路径的文件为例,每行前面的内容即文件的权限
第1个字符如果是’-’, 代表这是1个文件;第1个字符如果是’d’,代表这是1个目录
r.w.x read, write, execute
可以看到每一个文件文档前面是有3组3个字符的权限的,第1组是针对文件所有者的权限,第2组是针对全部小组的权限,第3个是针对其他用户给的权限
U – user, g – group, o – other people
修改权限可使用chmod 加希望修改权限的组+ 修改的权限符号 加希望修改的文件名
对应这些权限,有1个偷懒的方法:
4 – read
2 – write
1 – execute
0 – no permission
7 – combining all the numbers
如
Chmod 777 test 表示给user,group和other读写加履行的权限
每当我们下载1个文件,会对应1串SHA⑴来确保这个文件是我们所下载的没有问题的。
如我们下载raspberry pi下面的NOOBSLITE文件,可以看到网页提供给我们1个SHA⑴, 这时候候我们可以在terminal进入下载目录,输入shalsum加文件名 回车,会看到出来1串的字母和数字 ,如果这串信息和网页提供给我们的SHA⑴1致,那末这个文件就是我们下载的正确的文件。
比较这两串数字可以直接在terminal比较,在上1个命令下加入| grep 加网页中的字符串 回车,如果说结果是红色,表示这两个字符串内容1致
如果说担心网页上提供的SHA⑴是篡改过的,希望可以更加保险的话,可以换1个网络或问问其他人得到的是不是也是一样的字符串
紧缩文件: 关键词gzip 文件名 [注: 文件名如果有空格的,需要在空格前面加1个’\’,在terminal里,默许空格后面出现的是1个命令]
解紧缩文件:关键词gunzip 文件名.gz
紧缩不止1个文件:tar cvf 文件名.tar加上所有需要紧缩的文件名
[c 创建, v 终端显示结果,f file选项]
解紧缩tar文件:tarxvf 文件名.tar [x: extract解紧缩]
Super user可以用root来管理,但root权限应用可能操作不当引发没必要要麻烦,所以慎用。除root我们可以用sudo(super user do)
管理用户
我们可以新建1个文档在桌面,-la查看发现naomi出现两次,这是由于主用户是naomi,当有主用户时,系统会自动给主用户划分到组里,这个组的组名同主用户名
关键词:sudo useradd 新用户名 回车,系统提示输入super user的密码,输入后给新用户创建密码:sudopasswd 新用户名 便可
输入passwd回车 依照提示修改便可
在terminal里可以通过关键词来安装更新软件
如:输入sudo apt-get update ,会自动帮我们下载更新软件[sudo: super user do ]
如果想在terminal看是不是安装某个软件,可以这样查看
比如查看java: 输入java-version回车得到以下结果
可以看到已安装好了java
如果没有安装php5:
输入php5 -version 可以看到下面提示没有安装, 可以通过sudo apt-get install php5-cli进行安装
如果下载了软件但是由于比如文件太多不知道该如何安装,可以先cd进入home目录,cd安装包名/bin 回车,输入ls回车。 我们可以看到.sh结尾的文件,.sh指shell script, 是可以从terminal直接运行安装的,可以通过关键词bash加文件名回车直接运行
输入sudo apt-get install ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4 安装,然后im-config -s ibus来启动ibus
在ibus里可以选择中文的拼音或5笔等输入法
Group可以很方便的给1个组/多人设置权限
新建group:sudo groupdadd 组名
给组加入组员: sudo usermod -a -G 组名 组员//-g和-G区分在于 每一个组员都属于组员组,如果是-G,这个组员会被加入到1个新的组,如果是-g,组员则会先从本来的组剔除,再加入新的组
删除组员:sudo userdel 组员
在terminal输入cd../.. 可以退回两层或回到最外层目录,回去后输入ls可以看到,下图中的etc即我们的配置文件configuration files ,进入到etc目录,列出所有文件可以看到所有的密码都在这个目录下 ,但是cat所有的password只会看见密码都是x,由于linux会给所有的密码做加密,我们不会真的看到密码,X表示密码保存在shadow文件里。如果想查看shadow,就会出现谢绝访问:
如果行驶sudo权限查看密码,会看到:
这里面的’*’表示这个密码并不是登陆访问密码
其他的密码可以看到也是加了密的
通常我们不需要去了解这些幕后的信息,也不要去扰乱这些信息,linux已给我们创造了1个相对安全的环境
这可让我们和其他地方的服务器获得联系,也能够让我们更好管理自己的网站
直接使用纯文本密码来连接服务器是很容易被破解的,但是如果用SSH,基本就很难破解了。
在此我们是用的Digital Ocean的VPS,如果有更好的其他的选择欢分享。关于如何选择和使用,可参考DigitalOcean的tutorial。Digital Ocean的服务器叫droplet,注册登陆后两小时内会有账号确认邮件,确认后就能够创建自己的droplet了,可以根据自己需要选择服务器,DO是收费的,可以选择其他的VPS也欢迎交换。
我这边是根据自己的简单需要选择了最基本的,确认信息后就开始创建了,创建OK会收到确认邮件,包括IP地址和密码等信息。
现在,我们打开terminal,输入ssh root@192.241.200.215 root是我们现在用的username,@后面是邮件里收到的IP地址,这1步骤就是我们以root的身份去登陆提供的IP。回车后收到下面信息,选择继续。
根据提示重设密码,设置成功登陆到服务器,进行操作看到的东西就是服务器上的了。
1直以来密码验证总是很容易被破解的,而SSH key就安全多了
我们需要有两个key,1个是privatekey,用于我们的个人电脑,另外一个是public key,在服务器上,每当这两个key通过1个formula转换后相匹配,就work了。
首先,我们要生成这两个key,这时候候不需要登陆服务器,打开terminal,
输入ssh-keygen -t rsa 回车,出来自动生成key的提示并给出默许的保存key的路径,不需要修改路径,直接回车便可。如果想给文件加密可以设置密码,回车确认。
看到下面圈出来的部份,黄色部份是生成的private key,蓝色是publickey
保存key的信息可以输入ssh-copy-idroot@ip地址 回车,根据提示输入密码后,提示已将key信息添加
现在我们重新打开terminal后再次登陆server,可以看到,已不需要再输入密码信息了,电脑上的private key可让我们直接登陆到server了,既方便又很安全。
在terminal里登录服务器,然后输入nano/etc/ssh/sshd_config 回车,看到1串的配置文件,向下找到PermitRootLogin看到显示是Yes,在此我们将yes改成without-password,按住ctrl+x,选择Y, 然后回车保存,接着1行输入reload ssh回车,这样我们做的更改就生效了。
现在我们登陆就方便了,即便其他人知道我们的密码也没有办法,由于key是在我们电脑上的,所以非常安全。
首先在桌面创建了1个网页文件和包括网页的目录文件,做文件上传用。
SFTP类似FTP,不过是用ssh来传输的。
打开terminal,输入sftproot@服务器地址 回车,连接上服务器
为了确保我们在服务器的root目录,输入cd../.. 回车,然后输入ls -la回车,我们可以看到里面有很多的文件,这里我们上传的是1个html文件,为了进入html保存路径,输入cdvar/www/html回车,上传html文件直接在html目录下输入putDesktop/html文件名 回车,可以看到文件已上传,刷新服务器页面可以看到我们上传的页面,如果要上传1个文件夹,一样在html目录下输入put-r Desktop/文件夹名 回车,然后我们在服务器页面地址后面加上/文件夹名就能够看到文件了。
接下来我们尝试从服务器下载文件到桌面,以刚上传的页面和文件夹为例,(先删掉桌面上的html文件和目录),在服务器html目录下输入get页面文件名 Desktop 回车,便可将服务器上的网页下载到电脑桌面上,如果想下载目录,可以先cd ..回到上1层目录,接着输入get-r html Desktop, 行将html全部目录下的所有文件和文件夹都下载到桌面上来,至此我们就通过sftp完成了从服务器的上传和下载。
关于分区,有1个是用工具GParted, 获得工具的方法,在terminal输入sudoapt-get install gparted 回车,gparted就开始下载了,下载完成后运行只需要输入sudo gparted回车便可。运行后会跳出Gparted, 我这里插入了自己的移动硬盘,点击右上角可以看到Linux对空间的命名方式不同于Windows(C:/D:/E:/), ta是以sda, sdb 来命名的,而下面的partition里,sda下面的区域又分为了sda1,sda2 …
我们可以用1个U盘来更好的理解,我这里用的是空白U盘。每当我们要分出1个区来的时候,首先要设1定的空间,当设定好这部份空间了(比如8GB),接着我们要设置这部份的系统文件,即肯定好这部份区域的构架。
在GParted最上面View的下拉菜单File System Support可以看到1串的system support信息,ext3是linux经常使用的,如果想给自己的U盘设立好filesystem且和不同操作系统都兼容,fat32, ntfs是比较好的选择,市面上大部份的盘也都是fat32,ntfs就是了。
选择想要查看的磁盘,点击view-device information可以看到磁盘基本信息,比如我的U盘filesystem就是FAT32,选中U盘,点击partition-information也能够看到U盘的基本信息。在删除U盘或分区前,我们需要先unmount [partition-unmount],相当于先消除这块区域的锁定,接着我们就能够delete了。Delete完后U盘就变成了unallocated,点击上面的勾选项,确认,现在我们的U盘就是1块未分配的区域了。
这里我们将U盘分为两个区域,分之前先创建分区表[device-create partition table], 选择默许的msdos便可,确认。接下来我们就能够来新建分区了,新建分区可以点partition-new也能够直接点击左上角的加号键,输入你希望的区域大小,选择希望的system file类型并命名区域,确认,这样1个新的区就分好了。
可以看到我们的硬盘是sda, U盘是sdb,U盘分区是sdb1, sdb2 固然有更多区也会出现sdb3等。虽然sdb1,2是1个U盘的,但在电脑看来他们是不同的区,可见这是1个很好的让我们分开文件摆放管理的工具。
在文档前面输入#!/bin/sh,这1行会告知计算机,文件打开运行需要在shell里。[#后面的内容是注释部份]
我们在文档里写上简单的命令,保存好在桌面。
接下来运行文件,打开terminal,进入桌面目录,可以看到刚刚写的文档在桌面目录下,现在运行刚刚写的小代码,输入bash文件名回车,便可看到,小代码里的命令已履行,列出了文件下的文件和目录。
shell很方便也很强大,挖个坑以后再填好了。
在terminal里输入ps回车,会看到所有的进程列表
输入ps ax回车,会看到不但现在运行中的进程,还包括所有在后台的进程
运行中的进程可以看到有属性PID即进程ID,TTY告知我们某个程序运行的终端,TIME是指1个程序占用的CPU时间,CMD即command。
我们运行的ls, ps等其实都是小的程序,当履行完命令,程序也就结束了。而输入xlogo这个命令,我们看到屏幕上跳出来1个框,当框在的时候我们就没法输入新的命令,当我们关闭xlogo框的时候,我们就又可以输入新的命令来控制terminal了。
所以说,每当我们通过terminal来控制的时候,只会有1个process,只有铛铛前的process结束了,我们才可以进行下1个。 但是很多时候当我们在进行1个process的时候特别是在这个process很耗时的时候我们不会愿意就1直等着process1点1点完成,会希望ta在后台默默进行,这样最少我们自己可以去做其他事情,而不是花那末多时间等当前进程结束。以xlogo为例,我们在运行xlogo后,可以点红叉关闭框框,或我们可以在terminal按住ctrl和c,这个步骤即通过command line来打扰并停止当前进程;如果我们希望ta可以在后台默默进行的时候,我们可以输入 程序 & 回车,下图可以看到我们的xlogo是在运行的,同时我们可以在terminal输入新的命令。输入ps后可以看到xlogo是在运行的,PID即我们在让xlogo在后台时出现的id代码,前面的[1]是这个进程的job number。
如果我们不记得运行的程序的job number,可以在terminal直接输入jobs回车,以下图,可以看到xlogo正在运行。如果我们需要关闭这个进程,这时候候ctrl加c就不管用了,由于ctrl加c只适用于正在前台运行的程序,而对后台程序,我们需要先将其移到前面来,再关闭。输入fg%1回车便可以将job number为1的程序从后台调到前台,接着我们再ctrl加c就能够关闭程序了。
如果我们想要暂停或停止1个程序,按住ctrl加z,terminal就会显示程序stopped的状态,在这类状态下,我们没法直接关闭程序,即便鼠标点击xlogo上面的红色叉也不行,这是由于在stopped状态下所有对该程序的操作都被暂停了,如果需要进行操作,我们只能先将其从后台调到前台,调回来后发现程序自动关闭了,缘由是我们在stopped状态下点击了关闭按钮,当frozen状态结束后程序对我们的关闭操作有了反应即自动关闭程序。
还有1个关闭后台程序的方法是使用kill命令,当程序在后台的时候,输入kill加PID回车便可。
如果我们想停止/冻结1个正在后台的程序,可以输入kill-STOP PID回车便可。
如果我们想恢复1个已停止/冻结的程序,输入kill-CONT PID回车便可。
以上为Linux简单小入门(如果算的话),Linux的terminal有太多功能,还得继续加油学习才行。
若有疑问或意见,欢迎提出和讨论。
References:
Digital Ocean Tutorial:
https://www.digitalocean.com/community/tutorials/how-to-create-your-first-digitalocean-droplet-virtual-server
FTP, SFTP, FTPS Differences
https://southrivertech.com/whats-difference-ftp-sftp-ftps/
Shell script:
https://en.wikipedia.org/wiki/Shell_script
Raspberry NOOBS:
https://www.raspberrypi.org/downloads/noobs/
上一篇 堡垒机阿里云安装包安装
下一篇 机器人的运动范围