终其一生,我们只不过在寻找自己

0%

linux从入门到再入门

Linux-工程必备

一直以来,没有系统的学习过linux,每次遇到工程问题,总是靠着百度和谷歌,效率很低。
最近需要部署C++服务,所以需要LINUX环境,在此立帖,持续更新,直到熟练使用linux。

用户管理

  • 查看当前用户
    1
    $ cat /etc/passwd
  • 添加新用户
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ adduser 选项 username
    ·
    选项可以有:
    -c comment 指定一段注释性描述。
    -d(常用) 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    -g(常用) 用户组 指定用户所属的用户组。
    -G 用户组,用户组 指定用户所属的附加组。
    -s Shell文件 指定用户的登录Shell。
    -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

例1:

1
useradd –d /usr/sam

此命令创建了一个用户sam,其中-d选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。

例2:
代码:

1
useradd -s /bin/sh -g group –G adm,root gem

此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

  • 给新用户加密码
    1
    2
    3
    4
    5
    6
    7
    8
    $ passwd 选项(不选最简单) 用户名
    ·
    -l 锁定口令,即禁用账号。
    -u 口令解锁。
    -d 使账号无口令。
    -f 强迫用户下次登录时修改口令。
    如果默认用户名,则修改当前用户的口令。
    然后输入两次密码就行了。
  • 删除账号
    1
    2
    $ userdel 选项(建议-r) 账户名
    -r 可以把主目录一起删除

文件权限与访问控制


Linux文件系统权限:

文件操作

一、Linux系统的结构

  1、Linux是一个倒树型结构,最大的目录名称为“/”(根目录)

  2、Linux系统的二级目录

  /bin   ##binary二进制可执行文件,系统常规命令
  /boot    ##启动目录,存放系统自动启动文件,内核,初始化程序
  /dev ##系统设备管理文件
  /etc   ##大多数系统配置文件存放路径
  /home   ##普通用户家目录(/home/student)
  /media   ##临时的挂载点
  /lib   ##函数库
  /lib64    ##64位函数库(含有.bll)
  /mnt    ##临时挂载点
  /run   ##自动临时设备挂载点(u盘)
  /opt   ##第三方软件安装的位置
  /sbin    ##系统管理命令,通常只有root可以执行
  /proc    ##系统硬件信息和系统进程信息~~~~
  /srv    ##系统数据目录
  /var    ##系统数据目录
  /sys   ##内核相关数据
  /usr     ##用户相关信息数据
  /tmp    ##临时文件产生目录
  /root   ##超级用户家目录

  使用mount命令来更改临时设备的挂载点

二、文件管理命令

  1、文件的建立

  命令:touch filename  ## 通常用来创建文件,也可以修改文件的时间戳

  注释:时间戳分为atime、mtime、ctime

    atime :文件内容被访问的时间标识

    mtime :文件内容被修改的时间标识

    ctime  :文件属性或文件内容被修改的时间标识

  实例:使用 touch file 建立一个名为file的文件,并使用stat命令进行查看

  

  •  若进行文件的查看后,则访问时间将会被改变,结果如下:

  

  •  若文件进行编辑后,则访问时间、修改时间和文件改变时间三者均会变化,结果如下:

  

  注意:使用 touch —help 进行其他参数的查看

  2、目录的建立

  命令:mkdir directory        ## 用来建立名为directory的目录

     mkdir -p test/redcat/linux   ## -p 进行多级目录的创建

  注释:也可使用 mkdir —help命令进行参数的查看

  实例:使用 mkdir niu 创建一个目录名为niu,结果如下:

  

  •  多级目录创建结果如下:

  

  3、文件的删除

  命令:rm  file     ## 进行文件的删除

     rm  -f  test  ## -f 为强行删除文件

  实例:使用 ls file 命令删除文件file,结果如下:

  

  4、目录的删除

  命令:rm  -r  directory  ## -r表示递归删除所有内容

     rm  -r -f  dir   ## 删除目录不再提示

     rm  -rf  dir    ## j结果与上一个相同,且有 -a -b -c= - abc = - cba 

  实例:使用 rm -rf test 删除test目录以及test目录下的所有内容,结果如下:

  

  5、文件编辑

  •  gedit 编辑器

     命令:gedit  file  ## 必须有图形界面,进行file文件的编辑

  •  vim 编辑器

     命令:vim file ———> 按 i 进入insert 模式 ———> 书写内容 ———> esc退出insert模式 - ——-> wq退出并保存

   实例:gedit使用(使用以下命令即可打开file文件,并进行编辑)

  

  •  使用vim.tiny实例应用如下:(vim 和vim.tiny功能类似)

  

  ###### 使用vim 会出现异常情况 ######

  当vim异常退出时,会生成.file.swp文件(原因是修改文件未保存)

  当helloc未保存后再次打开时,会出现以下情况:(下面文字接着图的more)
 

  Swap file “.hello.swp” already exists!

  [O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it,   (Q)uit, (A)bort:
    只读打开     继续编辑   恢复数据   删除swap文件 退出
  分析:无论按【o】【e】【r】【q】【a】任何一个都不会删除.swp文件,再次打开还会

     有这样的这个问题,直到按【D】后,.swp被删除,vim恢复正常。

  6、文件的复制(复制目录的时候用- r)

  命令:cp  sourcefile objectfile         ## 表示把远文件复制到目标文件 

     cp  -r 源目录 目的地目录  

     cp  源文件1 源文件2 目的地目录     ## 目的地目录必须存在

     cp  -r  源目录1 源目录2 目的地目录   ## 目的地目录必须存在

  实例:把file文件中的内容复制到file1中,结果如下:

  

  •  使用 cp -r test test1 命令把test目录下内容复制到test1目录中,结果如下:

  

  •  使用 cp file1 file2 dir 命令,把file1和file2文件复制到目录dir下,结果如下:

  

  •  使用 cp -r dir dir1 dir2 把目录dir1和dir2复制到目录dir3下,结果如下:

  

  7、文件的移动

  命令:mv  源文件  目的地文件    ## 重命名

     mv  源目录  目的地目录

  实例:使用 mv file file1命令,把file重命名为file1,结果如下:

  

  使用 mv niu/file test/ 把niu目录下的file文件移动到test目录中,结果如下:

  

  (.代表当前目录)例:把test目录下的file1复制到当前目录下,命令如下:

  

  注意:相同磁盘的文件移动是重命名的过程,不用磁盘的移动是复制删除的过程。

  8、文件的查看

  命令:cat filename    ## 表示查看文件的全部内容

     cat  -b  filename  ## 查看内容并显示行号

     less filename    ## 分页浏览(以下命令在less命令之后的操作)

     上|下        ## 逐行移动

     pageu|pagedn    ## 逐页移动

     /关键字       ## 高亮显示关键字,n向下匹配,N向上匹配

     v          ## 进入vim模式,然后按i进行编辑,返回vim模式按esc

     q          ##退出vim模式

  实例:使用 cat file1命令查看file1中的内容,结果入下:

  

  •  查看内容并显示行号,结果如下:

  

  •  less 命令既修改文件中的内容,也可以使用快捷键进行查找,在此就不放截图了。

  9、文件的寻址

  相对路径:

      相对与当前系统所在的目录的一个文件名称的简写;

      此名称省略了系统当前所在目录的名称;

      此名称不以“/”开头;

      此名称在命令执行时会自动在操作对象前加入”pwd”所显示的值。

  绝对路径:

      绝对路径是文件在系统中的真实位置;

      此命令以“/”开头;

      此命令在执行时不会考虑现在的位置的信息。

  注意:当操作对象是  对象1 空格 对象2 时,这两个对象没有任何关系

     亲    ## 动作时被系统执行,不能作为名称出现

     “亲”    ## 引号的作用是把动作变成名称字符,这种方法叫引用

     pwd   ## 显示当前工作目录

  10、自动补齐

  《tab》

     系统中的《tab》键可以实现命令的自动补齐;

     可以补齐系统中存在的命令,文件名称,和部分命令的参数;

     当一次《tab》补齐不了时,代表以此关键字开头的内容不唯一;

     可以使用《tab》两次来列出所有一次关键字开头的内容散

脚本交互-except工具

主要用户自动操作,比如说:自动输入密码(最常见)
在使用expect时,基本上都是和以下四个命令打交道:

1
2
3
4
send	用于向进程发送字符串
expect 从进程接收字符串
spawn 启动新的进程
interact 允许用户交互

send命令接收一个字符串参数,并将该参数发送到进程。

expect命令和send命令相反,expect通常用来等待一个进程的反馈,我们根据进程的反馈,再发送对应的交互命令。

spawn命令用来启动新的进程,spawn后的send和expect命令都是和使用spawn打开的进程进行交互。

interact命令用的其实不是很多,一般情况下使用spawn、send和expect命令就可以很好的完成我们的任务;但在一些特殊场合下还是需要使用interact命令的,interact命令主要用于退出自动化,进入人工交互。

  • 例子:链接shh
1
2
3
4
5
6
7
8
9
10
#!/usr/tcl/bin/expect

set timeout 30
set host "101.200.241.109"
set username "root"
set password "123456"

spawn ssh $username@$host
expect "*password*" {send "$password\r"}
interact
  • 例子:自动切换到sudo 并启动hexo
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/expect
    set timeout 30
    spawn sudo -s
    expect "Password:"
    send "123456\r"
    expect "*#"
    send "cd hexoblog\r"
    expect "*#"
    send "hexo s\r"
    interact

参考:https://blog.csdn.net/weixin_42442713/article/details/81001753
https://www.cnblogs.com/uthnb/p/9320582.html

-------------    你的留言  是我更新的动力😊    -------------