Linux教程

Linux(一)

本文主要是介绍Linux(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

虚拟机:

    通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统

    在不破坏原有的操作系统的基础上,学习新的操作系统 

Linux分为内核及发行版本

   内核是系统的心脏,管理硬件设备 ;在内核内部由终端系统进行系统调用来管理硬件 

   发行版是将左面应用系统加上linux内核,发行版通过系统调用(内核提供的)访问硬件,

Linux是多用户操作系统,一台计算机在同一时间可以由多个用户使用,多个用户共享系统的全部硬件和软件资源

ubuntu没有盘符的概念,只有一个根目录表/,只存放目录

在根目录下一个主要的文件/home目录,在这个目录下可以显示不同的用户,是用户家目录,zhangsan,lisi,wangwu,等等,在不同的用户名下有各自的文件夹,这些文件就是属于他们自己的。

/etc:系统配置文件存放的目录

/bin:可执行的二进制文件的目录 

ctrl+shift+=  放大终端窗口字体

ctrl+- 缩小终端窗口字体

 

ls(list) 查看当前文件夹下的内容  (文件夹蓝色显示,文件是白色字体,横向显示文件夹内容)

pwd(print wrok directory)查看当前所在文件夹

cd[目录名](change directory)切换文件夹

     cd   切换到当前用户的主目录(/home/用户目录 )

     cd~  切换到当前用户的主目录(/home/用户目录 )

     cd. 保持在当前目录不变

     cd..  切换到上级目录

     cd-   可以在最近两次工作目录之间来回切换

touch【文件夹】(touch) 如果文件不存在,新建文件夹:如果文件已经存在,可以修改文件的末次修改时间 

mkdir【目录名】(make directory ) 创建目录   -p可以递归创建目录a/b/c/d  新创建目录的名称不能与目前目录中已有的目录或文件名同名

rm[文件名]  (remove) 删除指定的文件名,无法直接删除目录   

      - f  强制删除,忽略不存在的文件,无需提示  即使不存在删除也不提醒

      -r   递归地删除目录下的内容,删除文件夹时必须加次参数 rm -r *将桌面上的所有文件都删除  删除不能进行恢复

clear  清屏

 

Ubuntu 分大小写

command 【-options】【parameter】

command命令   ls pwd  clear可以直接命令不需要有后续操作

option选项,可以对命令进行控制,也可以省略

parameter:传给命令的参数,可以是另个或多个

【】代表可选

  touch 文件名称   cd 目录名称  (带参数的命令)

 rm   -r  目录名 (带option选项和参数,这样的情况下是可以删除目录的)

command    --help    显示command命令的帮助信息

man command         显示command命令的帮助信息

 查阅command命令的使用手册

空格键 显示手册的下一屏

Enter键 一次滚动手册页的一行

b 回滚一屏

f  前滚一屏

q 退出 

  

 

自动补全

     文件/目录/命令 的前几个字母敲出之后,按下tab键,可以自动补全

曾经使用过的命令

    按上/下光标键可以在曾经使用 

    ctrl+c 另起一行,不想执行当前的命令

以.开头的文件为隐藏文件,要使用-a的参数才能显示    ls  -a (-a显示所有目录)

.为当前目录

..为上一级目录

rm  .123.txt 删除隐藏文件

 

-a    显示指定目录下所有子目录与文件,包括隐藏文件

-l      以列表方式显示文件的详细信息(ls -l  是纵向的方式显示内容且包括详细信息)

-h     配合-l 以人性化的方式显示文件大小(以kb方式显示文件大小)

ls -l -h 的效果与ls  -lh一样

 

通配符

*  代表任意个数个字符   (也可以是0个)

      [email protected]:~/Desktop$ ls 1*                        #可以把首字母是1的所有文件显示出来

      111.txt 123.txt 145.txt 178.txt

      ls  *1  这样是无法找到.txt文件的  需要使用ls  *1.txt 这样可以找到文件名最后一个是1的文件

? 代表任意一个字符,至少1个

[]  表示可以匹配字符组中的任意一个

[abc] 匹配a  b  c中的任意一个

[a-f] 匹配从a到f范围内的任意一个

 

拷贝和移动文件

     tree[目录名]    以树状图列出文件目录结构、

              tree -d 只显示目录

             tree  ~  表示文件的家目录

     cp源文件 目标文件 (copy)复制文件或者目录

     mv 源文件  目标文件 (move)移动文件或目录/文件或目录重命名

 

cp   :      cp  源文件  目标文件 (目标文件是指将源文件复制到哪里)

     cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,先党羽DOS下的copy命令(如果现在是home/Desktop,希望将home/Documents下的readme/txt文件复制到桌面上,操作cp ~Documents/readme.txt ./readme.txt      (~是指家目录,  而.是))

      -i    覆盖文件前提示(将文件复制到桌面上,如果修改了原文件,再次复制到桌面的文件时会有提示是否进行覆盖) 

      -r    若给出的源文件是目录文件,则cp

             将递归赋值该目录下的所有子目录和文件,目标文件必须为一个目录名  

             cp -r a test (将a递归文件复制到test) 

mv:命令可以用来移动文件或目录,也可以给文件或目录重命名

        mv  源文件  目标文件

      mv  test  ~/Documents/(当前目录下的test文件移动到Documents下)

     mv a/b/c/123.txt . (将当前目录下的a/b/c/123.txt直接移动到当前桌面下)

     mv  ./read.txt ./demo.txt   相当于将read文件重命名

    -i   覆盖文件前提示   mv -i readme.txt 123.txt

 

查看文件内容

     cat文件名(concatenate) 查看文件内容、创建文件、文件合并、追加文件内容等功能

                 cat 123.txt 查看文件内容显示全部的内容,适合查看内容较少的文件

                 -b     对非空输出行编号    nl命令与cat -b的效果等价

                -n       对输出的所有行编号

     more 文件名   分屏显示文件内容

                  more 123.txt  显示文件的部分内容 ,每次只显示一页内容,适合查看内容较多的文本文件 

                   后续按空格键就可以显示

                   Enter键   一次滚动手册页的一行

                  b   回滚一屏

     f  前滚一屏

     q  退出

     /word  搜索word字符串 

 

     grep 搜索文本文件名           搜索文本文件内容 ,对文本文件进行模式查找(正则表达式)    grep  as  123.txt 在123.txt中查找包含as的行,as会高亮显示

      选项:

      -n   显示匹配航及行号    grep -n as 123.txt

        -v   显示不包含匹配文本的所有行(求反)grep -vn as 123.txt将不包含as的行显示出来,且包含行号

      -i   忽略大小写

      参数:

      常用的两种模式查找

        ^a  行首,搜索以a开头的行   grep -n ^f 123.txt

        ke$ 行尾,搜索以ke结束的行

      有空格的字符串搜索,以引号的方式引起来再进行搜索

 

echo 文字内容

      echo会在终端中显示参数指定的文字,通常会和重定向联合使用,echo创建文件的同时指定内容

 

重定向 >和>>

      Linux 允许将命令执行结果重定向到一个文件

      将本应显示在终端上的内容 输出/追加到已有文件的末尾

      >表示输出,会覆盖文件原有的内容

      >>表示追加,会将内容追加到已有文件的末尾

      echo Hello Python  >a 这样会创建出一个名为a的文件,文件的内容为Hello Python

      ls -lh >a 会将ls以列表人性化显示的内容输入到新建的文件a中

 

 

管道  |

      Linux允许将一个命令的输出,可以通过管道,作为另一个命令的输入

          ls -lh  | more   将输出结果通关管道传递给能够分屏显示的more

      |左右分为两端,左端塞东西(写),右端取东西(读)

        more:分屏显示内容

        grep:在命令执行结果的基础上查询指定的文本

       

 

 

远程管理

      关机/重启 :    shutdown  选项 时间   

      -r  重新启动 (选项位置不加-r表示关机 加上是重新启动 时间显示now表示现在,不指定时间 和选项1分钟之后关闭电脑)

      shutdown 20:25 在20:25关机

      shutdown +10 10分钟之后自动关机

      shutdown -c 取消之前指定的关机 

  查看或者配置网卡信息

      ifconfig(configure a network interface)查看/配置计算机当前网卡配置信息

      ping ip地址 检测到目标ip地址的连接是否正常   

      网卡:专门负责网络通讯的硬件设备(SIM卡)

      IP地址:设置在网 卡上的地址信息(电话号码)

      ens33 和lo的 inet地址是网卡地址  127.0.0.1本地会还地址,测试本机网卡是否正常

      ifconfig | grep inet这样可以快速的找到网卡地址

      inet6对应的是ipv6的地址

 

 

ping:一般用来检测当前计算机到目标计算机之间的网络是否通畅、数值越大,速度越慢

    检测到目标主机的连接是否正常

 

 

    ping IP 地址

    检测本机网卡是否正常 

    ping 127.0.0.1

    在Linux中,想要终止一个终端程序的执行,绝大多数都可以使用ctrl+c 

 

远程登录和复制文件

     ssh用户名@ip            关机/重新启动(secure shell)

    scp用户名@ip:文件名或路径 用户名@ip:文件名或路径 远程复制文件(secure copy)

        ssh基础

          通过SSH客户端我们可以连接到运行了SSH服务器的远程机器上 

          数据传输是加密的,防止信息泄露(SSH客户端和SSH服务器都是软件)

          数据传输是压缩的,提高传输速度

          SSH客户端使用Secure Shell协议连接到远程计算机的软件程序     

 

     访问服务器 :通过ip地址找到计算机,在通过端口号找到计算机上安装的程序,用户才可以看到访问结果

 

客户端的简单使用

    ssh [-p port] [email protected]       (ssh -p 22 [email protected])

    user是远程机器上的用户名,不指定的话为当前用户

    remote远程机器地址,可以是 IP/域名,或者别名

    port是SSH Server监听的端口,如果不指定,就默认值22

    exit退出当前用户的登录 ssh只能在Linux或UNIX下使用

    权限不够的情况下,在命令前面加上sudo 

    putty连接:打开putty在ip地址位置输入ubuntu的ip点击open就可以进行连接,输入账号和密码就可以在这里操作设置ubuntu上的文件目录

    xshell连接:和putty连接基本一致

 

scp(secure copy)

    在linux下用来进行远程拷贝文件的命令

    地址格式与ssh基本相同,需要注意的是:在指定端口时使用的是大写的-P而不是小写的

    把本地当前目录下的01.py复制到远程家目录下的Desktop/01.py

    :号后面的路径如果不是绝对路径,则以用户的家目录作为参照路径

    scp -P port 01.py user @remote:Desktop/01.py (-P端口 +源文件+目标文件(要加上[email protected]:))

    把远程家目录下的Desktop/01.py文件复制到本地当前目录下的01.py

    scp -P port  [email protected]:Desktop/01.py   01.py

    加上-r选项可以传送文件夹

    把当前目录下的demo文件夹复制到远程家目录下的Desktop

      scp  -r demo [email protected]:Desktop

    把远程家目录下的Desktop复制到当前目录下的demo文件夹

      scp -r [email protected]:Desktop demo 

    -r 若给出的源文件是目录文件,将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名

    -P 若远程SSH服务器的端口不是22,需要使用大写字母-P选定指定端口

      

PS C:\Users\86178> cd .\Desktop\
PS C:\Users\86178\Desktop> scp -P 22 [email protected]:Desktop/123.txt .
The authenticity of host '192.152.278.722 (192.152.278.722)' can't be established.
ECDSA key fingerprint is SHA256:jamdyvs3wN3CjiuN7zhH9p6K4Mg4ooLKqJBpszxtfws.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Warning: Permanently added '192.152.278.722' (ECDSA) to the list of known hosts.
[email protected]'s password:
123.txt 100% 0 0.0KB/s 00:00
PS C:\Users\86178\Desktop> scp -P 22 123.txt [email protected]:Desktop
[email protected]'s password:
123.txt 100% 5 1.0KB/s 00:00

      scp这个终端命令只能在Linux或者UNIX系统下使用

      如果在windows下,可以使用putty的pscp命令行工具或者是FileZilla的FTP进行文件传输

 

 

 

FileZilla

    FileZilla在传输文件时,使用的是FTP(文件传输协议)服务不是SSH服务,端口号是21,在远程和本地进行拖拽就可以在两边进行移动

       

 

 

 

 

 

SSH(高级)

    免密码登录

    配置别名

      有关SSH配置信息都保存在用户家目录下的.ssh(.在前是隐藏文件)目录下

    1)免密码登录

      配置公钥    ssh-keygen即可生成SSH钥匙

      上传公钥到服务器 执行ssh-copy-id -p port [email protected] ,可以让远程服务器记住我们的公钥

    

 

       将公钥复制到SSH服务器,这样之后公钥在服务器,私钥在本地

       客户端发送的数据使用私钥加密,然后由网络传输到SSH服务器,再使用公钥解密,在ssh服务器使用公钥加密的数据传输到客户端使用私钥解密

    

2) 配置别名

    每次都输入 ssh -p port [email protected],可以使用别名来替代上面的一大串

      

 

用户权限

    用户管理包括用户和组管理

    在Linux系统中,不管主机还是远程登录系统,每个系统都必须拥有一个账号 ,并且对于不同的系统资源拥有不同的使用权限

    对文件/目录的权限包括:

        读(read) r  数字代号 4

        写(write) w 数字代号 2

        执行(excute)x 数字代号 1

        无权限  -  数字代号 0

    可以在Linux中,指定每一个用户针对不同的文件或者目录的不同权限 

    为了方便用户的管理,提出了组的概念 ,将不同的用户添加到对应的组中,针对组设置好权限

 

ls -l扩展    

                -rw      -rw    r--   三个为一组  r是可读,w是可写 -是无权限

              第一组-rw是文件或目录的拥有者对应的权限 python用户

    第二组对应的是文件或目录组对应的权限  第二列的python 是组的名称

    第三组是其他用户具有的权限

              文件的硬链接数是1是因为如果不在当前的desktop目录下访问文件,也可以使用绝对路径一次性访问到文件

    aaa文件夹的硬连接数是2是因为我们可以通过~Desktop$ cd /jome/python/Desktop/aaa/(通过绝对路径进入aaa)或者通过在~/Desktop/aaa$ cd .                      (cd.是进入到当前目录)进入aaa中

            如果在aaa文件夹下有新建了一个a文件夹,那么aaa的访问方式除了上述两种之外,还有进入aaa的a中 ~Desktop/aaa/a$ cd .. (..表示上级目录)这样也可以进入aaa

,这样的话硬件的连接方式就是3 

      可以使用 ls -l /etc/passwd 查看文件的详细信息

 

 

 

chmod简单使用

    chmod可以修改 用户/组对文件/目录的权限

      chmod +/- rwx  文件名|目录名(+表示增加权限,-表示删除权限,rwx是任意组合)

    会一次性修改拥有者/组权限

    如果目录没有可执行权限,就不能对目录进行终端操作 ,可读权限:阅读目录的内容,可写权限:修改目录内容;但是如果想要对目录执行终端操作,必须有可执行权限

 

 

超级用户:root账号通常用于系统的维护和管理,对操作系统的所有资源具有访问权限

      在Linux安装过程中,系统会自动创建一个用户账户,而这个默认的用户称为“标准用户”

      su 表示使用另一个用户的身份

      sudo命令用来以其他身份执行命令,预设身份是root,当标准用户需要进行一些 系统维护工作时,可以在命令前面加上sudo,以root身份执行操作

      若未经授权的用户企图使用sudo,则会发出警告邮件给管理员

 

 

 

 

组管理的终端命令

      创建组/删除组的终端命令都需要通过sudo执行

      01    groupadd 组名        添加组

      02     groupdel 组名        删除组

      03     cat  /etc/group    确认组信息

      04     chgrp  -R 组名 文件/目录名   修改文件/目录的所属组

      组信息保存在/etc/roup文件中  /etc目录是专门用来保存系统配置信息的目录

      

 用户管理的终端命令

      创建/删除用户/修改其他用户密码的终端命令需要通过sudo执行

      01  useradd  -m  -g  组  新建用户名      添加新用户     -m自动建立用户家目录  -g指定用户所在的组否则会建立一个同名的组,默认对家目录没有可写权限    

      02    passwd  用户名                                        设置用户密码          如果是普通用户,直接用passwd,可以修改   

      03           userdel -r 用户名                                     删除用户               -r选项会自动删除用户家目录

        04   cat  /etc/passwd | grep 用户名     确认用户信息          新建用户后,用户信息会保存在/etc/passwd 文件中

          创建用户时忘记加上-m选项指定新用户的家目录,最简单的方法就是删除用户,重新创建   

 

 

查看用户信息

    01  id[用户名]  查看用户UID和GID信息(UID用户名  GID组名)

    02  who   查看当前所有登录的用户列表

        python   tty7    开机时间(IP地址)

    03  whoami  查看当前登录用户的账户名

        python  只出现python(用户名)

 

 

 

 

 

 

 

  usermod  -G  sudo   用户名     :是把这个用户名添加到sudo附加组

 

 

 两个passwd

    /etc/passwd:用于保存用户信息的文件

    /usr/bin/passwd:是用于修改用户密码的程序

    使用which可以查看执行命令所在位置

      which  psswd

 

 

切换用户

    su -  用户名    切换用户,并且切换目录        加上-可以切换到用户家目录,否则保持位置不变,还是切换之前的用户的家目录 

    exit    退出当前登录账户,切换到之前的用户

      su不加用户名可以切换到root但不推荐使用

 

修改文件权限

    01  chown  修改拥有者        chown 用户名 文件名|目录名(修改了之后,用户可能不在这个组里,那么它的使用权限就是其他用户的权限了)

    02  chgrp  修改组      chgrp -R  组名 文件名|目录名

    03  chomd  修改权限   chomd   -R   755    文件名|目录名

      755中第一个数字表示拥有者权限,第二个数字表示组权限,第三个数字表示其他用户权限

 

这篇关于Linux(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!