程序员人生 网站导航

Linux 常用命令, SSH, 以及简单操作

栏目:综合技术时间:2016-07-07 13:35:28


1. Linux Terminal 简介


类似于windows的shell/cmd,linux的terminal可以做很多很多事。

1.1 字体色彩修改

Terminal的font,size, color乃至cursor都是可以根据个人喜好做修改 ,只需要右击点profile-profile preferences就能够修改了

在最左侧可以看到terminal的图标,如果需要固定,右键选择”unlockfrom launcher”便可 



 1.2 经常使用基本命令

打开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上


2. 阅读和使用linux上的文件

2.1新建, 移除, 复制文件和目录


在terminal里,cd是change directory, cd 加文件夹名可以进入文件夹[和windows的shell1样]

回到上层目录只需输入cd .. 便可[同windows]

如果在terminal里想回到home,直接输入cd回车便可

新建目录:mkdir 加文件名

移除目录:rmdir 加文件名 【只在目录里面没有文件时可用】

新建文件:touch 加文件名 【如果已有了同名的文件则不会新建】

移除文件:rm 加文件名

当前目录复制文件:cp 复制的文件名 复制后的文件名

移动文件:mv 文件名 目标目录【移动到其他目录】,mv 文件名 新文件名【当前目录下重命名】


3. 查找和比较文档

查找文档中关键词:

我们有1个文本文档,需要搜索文档里匹配的字段,这时候候可以用grep 关键词

来到需要搜索的文档的目录下,输入 grep 搜索字段名 搜索文件名 再回车便可

比较两个文档:

在文档所在目录下 输入diff文档1名 文档2名 回车便可

-         修改密码 输入关键字passwd回车 会提示先输入原密码,再进行修改

-         变量赋值 变量名=变量值[等号左右没有空格]

-         关键词 echo 加文字内容,表示显示echo后面的内容;echo$变量名 表示显示变量

-         关键词 info 加命令词 会给出该关键词的信息

-         点击键盘上下键可以迅速回顾之前已输入的命令


4. 将terminal显示的结果保存到文件


有时候我们想保存在terminal显示的信息,可以在正常输入的命令后面加 ‘>’ 再加希望命名的文件名便可,’>’ 不但可以创建1个新文档(如果路径下没有输入的文件名),也能够重写1个文档 (如果路径下已存在同名的文档)

如果想在原文档后面加上新的内容,将’>’改成’>>’便可

 

5. 文件权限


以下面路径的文件为例,每行前面的内容即文件的权限

第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读写加履行的权限 

6. 使用checksum确认文件


每当我们下载1个文件,会对应1串SHA⑴来确保这个文件是我们所下载的没有问题的。

如我们下载raspberry pi下面的NOOBSLITE文件,可以看到网页提供给我们1个SHA⑴, 这时候候我们可以在terminal进入下载目录,输入shalsum加文件名 回车,会看到出来1串的字母和数字 ,如果这串信息和网页提供给我们的SHA⑴1致,那末这个文件就是我们下载的正确的文件。

比较这两串数字可以直接在terminal比较,在上1个命令下加入| grep 加网页中的字符串 回车,如果说结果是红色,表示这两个字符串内容1致

 

如果说担心网页上提供的SHA⑴是篡改过的,希望可以更加保险的话,可以换1个网络或问问其他人得到的是不是也是一样的字符串

 

7. 紧缩和解紧缩tar, gz文件


紧缩文件: 关键词gzip 文件名 [注: 文件名如果有空格的,需要在空格前面加1个’\’,在terminal里,默许空格后面出现的是1个命令]

解紧缩文件:关键词gunzip 文件名.gz

紧缩不止1个文件:tar cvf 文件名.tar加上所有需要紧缩的文件名

[c 创建, v 终端显示结果,f file选项]

解紧缩tar文件:tarxvf 文件名.tar [x: extract解紧缩]

 

8. User:


Super user可以用root来管理,但root权限应用可能操作不当引发没必要要麻烦,所以慎用。除root我们可以用sudo(super user do)

管理用户

我们可以新建1个文档在桌面,-la查看发现naomi出现两次,这是由于主用户是naomi,当有主用户时,系统会自动给主用户划分到组里,这个组的组名同主用户名

加入1个user

关键词:sudo useradd 新用户名 回车,系统提示输入super user的密码,输入后给新用户创建密码:sudopasswd 新用户名 便可

 修改密码

输入passwd回车 依照提示修改便可


9. 使用APT apt-get 安装软件


在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加文件名回车直接运行

tips: 在ubuntu上安装中文输入法

输入sudo apt-get install ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4 安装,然后im-config -s ibus来启动ibus 

在ibus里可以选择中文的拼音或5笔等输入法 

10. Group


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个相对安全的环境  

 

11. 设置和链接SSH server [以Digital Ocean为例]

这可让我们和其他地方的服务器获得联系,也能够让我们更好管理自己的网站

直接使用纯文本密码来连接服务器是很容易被破解的,但是如果用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。回车后收到下面信息,选择继续。

根据提示重设密码,设置成功登陆到服务器,进行操作看到的东西就是服务器上的了。

 


12. SSH KEY权限


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了,既方便又很安全。

 

13. 关闭密码登陆


在terminal里登录服务器,然后输入nano/etc/ssh/sshd_config 回车,看到1串的配置文件,向下找到PermitRootLogin看到显示是Yes,在此我们将yes改成without-password,按住ctrl+x,选择Y, 然后回车保存,接着1行输入reload ssh回车,这样我们做的更改就生效了。

现在我们登陆就方便了,即便其他人知道我们的密码也没有办法,由于key是在我们电脑上的,所以非常安全。

 

14. 使用SFTP向服务器传输文件


首先在桌面创建了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完成了从服务器的上传和下载。

 

15. 利用GParted和U盘来分区


关于分区,有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个很好的让我们分开文件摆放管理的工具。

 

16. Shell script简介


在文档前面输入#!/bin/sh,这1行会告知计算机,文件打开运行需要在shell里。[#后面的内容是注释部份] 

我们在文档里写上简单的命令,保存好在桌面。


接下来运行文件,打开terminal,进入桌面目录,可以看到刚刚写的文档在桌面目录下,现在运行刚刚写的小代码,输入bash文件名回车,便可看到,小代码里的命令已履行,列出了文件下的文件和目录。

 

shell很方便也很强大,挖个坑以后再填好了。


17. Processes


在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: 
Linux tutorial:  https://www.youtube.com/watch?v=HjuHHI60s44&list=PL6gx4Cwl9DGCkg2uj3PxUWhMDuTw3VKjM&index=1 

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/ 

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐