• linux第一天


    Shell 简介:

    Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。他接收了用户输入的命令并把它送入内核去执行。实际上Sheel是一个命令解释器。它解释由用户输入的命令并把它们送到内核。不仅如何,Shell有自己的编程语言用于对命令进行编辑,用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点。,比如他也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有相同的效果。

    Shell用途

    我们可以使用Shell实现对Linux系统的大部分管理,如:

    • 文件管理
    • 用户干栗
    • 权限管理
    • 磁盘管理
    • 软件管理
    • 网络管理

    如何使用Shell

    • 输入命令 效率低
    • Shell Script 效率高

    linux 命令

    • ping ip/网址
      测试是否连接
    • date
      当前时间
    • useradd 用户名
      添加用户
    • gedit 名称.sh
      gedit useradd.sh
      打开一个uesradd.sh 脚本文件
    
    for i in {1..20}
    do 
             uesradd tianyun$1 
             echo "tianyun$i is created!"       
    done
    

    执行
    bash useradd.sh

    • ls
      ls
      展示当前目录和文件,不包含隐藏
    Desktop    Downloads  Pictures  Templates   Videos
    Documents  Music      Public    useradd.sh
    
    

    ls -a
    列出文件包含隐藏文件

    
    [root@linux lilihai]# ls -a
    .              .bash_profile  .dbus      .esd_auth      Music      useradd.sh
    ..             .bashrc        Desktop    .ICEauthority  Pictures   Videos
    .bash_history  .cache         Documents  .local         Public
    .bash_logout   .config        Downloads  .mozilla       Templates
    [root@linux lilihai]# 
    

    ls -l
    列出文件详细信息

    [root@linux lilihai]# ls -l
    total 4
    drwxr-xr-x. 2 lilihai lilihai  6 Dec 13 17:08 Desktop
    drwxr-xr-x. 2 lilihai lilihai  6 Dec 13 17:08 Documents
    drwxr-xr-x. 2 lilihai lilihai  6 Dec 13 17:08 Downloads
    drwxr-xr-x. 2 lilihai lilihai  6 Dec 13 17:08 Music
    drwxr-xr-x. 2 lilihai lilihai  6 Dec 13 17:08 Pictures
    drwxr-xr-x. 2 lilihai lilihai  6 Dec 13 17:08 Public
    drwxr-xr-x. 2 lilihai lilihai  6 Dec 13 17:08 Templates
    -rw-rw-r--. 1 lilihai lilihai 99 Dec 13 17:36 useradd.sh
    drwxr-xr-x. 2 lilihai lilihai  6 Dec 13 17:08 Videos
    

    ls -a -l
    累出所有文件,包含隐藏文件并展示详细信息。

    
    [root@linux lilihai]# ls -a -l
    total 40
    drwx------. 15 lilihai lilihai 4096 Dec 13 17:52 .
    drwxr-xr-x.  4 root    root      33 Dec 13 17:56 ..
    -rw-------.  1 lilihai lilihai  443 Dec 13 18:04 .bash_history
    -rw-r--r--.  1 lilihai lilihai   18 Oct 31 01:07 .bash_logout
    -rw-r--r--.  1 lilihai lilihai  193 Oct 31 01:07 .bash_profile
    -rw-r--r--.  1 lilihai lilihai  231 Oct 31 01:07 .bashrc
    drwx------. 14 lilihai lilihai 4096 Dec 13 17:11 .cache
    drwxr-xr-x. 16 lilihai lilihai 4096 Dec 13 18:12 .config
    drwx------.  3 lilihai lilihai   25 Dec 13 17:07 .dbus
    drwxr-xr-x.  2 lilihai lilihai    6 Dec 13 17:08 Desktop
    drwxr-xr-x.  2 lilihai lilihai    6 Dec 13 17:08 Documents
    drwxr-xr-x.  2 lilihai lilihai    6 Dec 13 17:08 Downloads
    -rw-------.  1 lilihai lilihai   16 Dec 13 17:07 .esd_auth
    -rw-------.  1 lilihai lilihai  310 Dec 13 17:07 .ICEauthority
    drwx------.  3 lilihai lilihai   19 Dec 13 17:07 .local
    drwxr-xr-x.  4 lilihai lilihai   39 Dec 13 16:48 .mozilla
    drwxr-xr-x.  2 lilihai lilihai    6 Dec 13 17:08 Music
    drwxr-xr-x.  2 lilihai lilihai    6 Dec 13 17:08 Pictures
    drwxr-xr-x.  2 lilihai lilihai    6 Dec 13 17:08 Public
    drwxr-xr-x.  2 lilihai lilihai    6 Dec 13 17:08 Templates
    -rw-rw-r--.  1 lilihai lilihai   99 Dec 13 17:36 useradd.sh
    drwxr-xr-x.  2 lilihai lilihai    6 Dec 13 17:08 Videos
    [root@linux lilihai]# 
    

    ls -a /
    ls -a /目录
    列出指定目录、跟目录下所有目录

    [root@linux lilihai]# ls -a /
    .   bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
    ..  boot  etc  lib   media  opt  root  sbin  sys  usr
    [root@linux lilihai]# ls -a /home
    .  ..  jack  lilihai
    [root@linux lilihai]# 
    

    ls常见选项
    -a all,查看目录下所有文件,包含隐藏文件
    -l 长列表像是
    -h human 以人性化方式显示
    -t 按修改时间排序
    -S 按文件的Size排序
    -r 逆序排列
    -i 显示文件的incode号(索引号)

    ip

    ip a
    获取IP
    192.168.190.130

    
    : lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:79:26:aa brd ff:ff:ff:ff:ff:ff
        inet 192.168.190.130/24 brd 192.168.190.255 scope global noprefixroute dynamic ens33
           valid_lft 1660sec preferred_lft 1660sec
        inet6 fe80::ad9a:bde8:6300:117c/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
        link/ether 52:54:00:65:1a:58 brd ff:ff:ff:ff:ff:ff
        inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
           valid_lft forever preferred_lft forever
    4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
        link/ether 52:54:00:65:1a:58 brd ff:ff:ff:ff:ff:ff
    
    
    • su
      切换用户:
    [lilihai@linux ~]$ su
    Password: 
    [root@linux lilihai]# 
    
    • whoami
      显示当前用户
    [root@linux lilihai]# whoami
    root
    
    • passwd
      设置密码:
      passwd 账号

    快捷键

    CTRL+C 终止前台运行程序
    CTRL+D 退出等价于exit
    CTRL+L 清屏
    CTRL+A 光标移动到命令行最前端
    CTRL+E 光标移动命令行后端
    CTRL+U 删除光标前所有字符
    CTRL+K 删除贯标后所有字符
    CTRL+R 搜索历史命令,利用关键字
    ALT+. 引用上一个命令和最后一个参数,等价于!$
    ESC. 引用上一个命令的最后一个参数,等价于!$

    历史命令

    • history
      光标上下键 上一条命令吓一跳命令
      CTRL+R 搜索历史命令(输入某个命令的关键字)
      !行号 执行多少行号的历史命令
      !字符集 搜索历史最近一个已xxx字符集开头的命令
      !$ 医用上一个命令的最后一个参数。

    别名

    • 别名优先级最高
      alias 变量名='路径/命令'
    [lilihai@linux ~]$ alias dt='date'
    [lilihai@linux ~]$ date
    Thu Dec 13 19:39:58 CST 2018
    

    永久别名:
    [root@linux ~]# gedit /etc/bashrc
    alias yang='date'
    关闭重启打开 terminal

    BASH Shell 对文件进行管理

    创建、复制、删除、移动、查看、编辑、压缩、查找

    • 目录结构

    • bin 普通用户使用的命令 /bin/ls./bin/date
      *sbin 管理员使用的命令 /skin/service

    • dev 设备文件 /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1

    • root root 用户的HOME

    • proc 虚拟的文件系统,反映出来的内核,进程信息或者实时状态

    • User 系统文件,相当于c:Windowsuserlocal 软件安装目录,相当于c:Program
      /user/bin 普通用户使用的应用程序
      /user/sbin 管理员使用的应用程序
      /user/lib 库文件Glibc 32bit
      /user/lib64 库文件Glibc 64bit

    • boot 存放的系统启动相关的文件。

    • etc 配置文件
      系统相关如网络/etc/sysconfig/network
      应用相关的配置文件/etc/ssh/sshd_config

    • tmp 临时文件

    • var 存放的一些变化文件,比如数据库,日志,邮件....

    创建文件

    thuch 路径+文件

    创建文件

    touch file1.txt 没有则创建,有则修改时间

    [root@linux linux]# touch file.txt
    [root@linux linux]# ll -l
    total 0
    -rw-r--r--. 1 root root 0 Dec 14 15:43 file.txt
    [root@linux linux]# touch file.txt
    [root@linux linux]# ll -l
    total 0
    -rw-r--r--. 1 root root 0 Dec 14 15:44 file.txt
    

    同时在一个目录下创建两个文件

    touch file3 file4

    [root@linux linux]# touch file3 file4
    [root@linux linux]# ll -l
    total 0
    -rw-r--r--. 1 root root 0 Dec 14 15:46 file3
    -rw-r--r--. 1 root root 0 Dec 14 15:46 file4
    -rw-r--r--. 1 root root 0 Dec 14 15:44 file.txt
    

    创建一个txt文件

    touch /home/file10.txt

    
    oot@linux ~]# ll /home -a
    total 4
    drwxr-xr-x.  7 root      root       190 Dec 14 14:57 .
    dr-xr-xr-x. 18 root      root       248 Dec 14 15:43 ..
    -rw-r--r--.  1 root      root         0 Dec 14 14:55 file1
    -rw-r--r--.  1 root      root         0 Dec 14 15:51 file10.txt
    

    在指定目录下一次性创建两个文件

    touch /linux/{zhuzhu,guoguo}

    
    root@linux linux]# touch /linux/{zhuzhu,guouog}
    [root@linux linux]# ll -a
    total 0
    drwxr-xr-x.  3 root root 101 Dec 14 15:53 .
    dr-xr-xr-x. 18 root root 248 Dec 14 15:43 ..
    -rw-r--r--.  1 root root   0 Dec 14 15:49 file
    drwxr-xr-x.  2 root root   6 Dec 14 15:48 .file
    -rw-r--r--.  1 root root   0 Dec 14 15:46 file3
    -rw-r--r--.  1 root root   0 Dec 14 15:46 file4
    -rw-r--r--.  1 root root   0 Dec 14 15:44 file.txt
    -rw-r--r--.  1 root root   0 Dec 14 15:53 guouog
    -rw-r--r--.  1 root root   0 Dec 14 15:53 zhuzhu
    

    一次性创建以file开头1到20的文件

    touch file{1..20}

    
    [root@linux linux]# touch file{1..20}
    [root@linux linux]# ll -a
    total 4
    -rw-r--r--.  1 root root    0 Dec 14 15:49 file
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file1
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file10
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file11
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file12
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file13
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file14
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file15
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file16
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file17
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file18
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file19
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file2
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file20
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file3
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file4
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file5
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file6
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file7
    -rw-r--r--.  1 root root    0 Dec 14 15:56 file8
    

    一次性创建file开头 filea fileb filec 三个文件

    touch file{a..c} 等价于
    touch file{a,b,c}

    [root@linux linux]# touch file{a..c}
    [root@linux linux]# ll -a
    total 0
    drwxr-xr-x.  3 root root 115 Dec 14 16:00 .
    dr-xr-xr-x. 18 root root 248 Dec 14 15:43 ..
    drwxr-xr-x.  2 root root   6 Dec 14 15:48 .file
    -rw-r--r--.  1 root root   0 Dec 14 16:00 filea
    -rw-r--r--.  1 root root   0 Dec 14 16:00 fileb
    -rw-r--r--.  1 root root   0 Dec 14 16:00 filec
    -rw-r--r--.  1 root root   0 Dec 14 15:54 gg.txt
    -rw-r--r--.  1 root root   0 Dec 14 15:53 guouog
    -rw-r--r--.  1 root root   0 Dec 14 15:54 zhu.txt
    -rw-r--r--.  1 root root   0 Dec 14 15:53 zhuzhu
    

    目录 mkdir

    创建一个目录

    mkdir dir1

    [root@linux linux]# mkdir dir1
    [root@linux linux]# ll 
    total 0
    drwxr-xr-x. 2 root root 6 Dec 14 16:06 dir1
    

    同时在文件夹下面一次性创建两个目录

    mkdir /linux/{dir2,dir3}

    [root@linux ~]# mkdir /linux/{dir2,dir3}
    [root@linux ~]# ll /linux
    total 0
    drwxr-xr-x. 2 root root 6 Dec 14 16:06 dir1
    drwxr-xr-x. 2 root root 6 Dec 14 16:08 dir2
    drwxr-xr-x. 2 root root 6 Dec 14 16:08 dir3
    

    一次性创建多级目录,

    mkdir -pv /linux/dir22/xiaohai

    [root@linux dir3]# mkdir -pv /linux/dir22/xiaohai
    mkdir: created directory ‘/linux/dir22’
    mkdir: created directory ‘/linux/dir22/xiaohai’
    

    复制 cp

    复制一个文件到指定目录

    cp -v anaconda-ks.cfg /linux/dir2/
    anaconda-ks.cfg 文件拷贝到dir2 目录下
    -v 展示详细信息

    [root@linux dir1]# cp -v anaconda-ks.cfg /linux/dir2/
    ‘anaconda-ks.cfg’ -> ‘/linux/dir2/anaconda-ks.cfg’
    

    复制一个文件到指定目录并且重命名

    cp -v anaconda-ks.cfg /linux/dir2/anaconda.txt

    [root@linux dir2]# cp -v  anaconda-ks.cfg /linux/dir2/anaconda1.txt
    ‘anaconda-ks.cfg’ -> ‘/linux/dir2/anaconda1.txt’
    

    复制一个文件如果已存在覆盖

    cp -rv anaconda1.txt /.
    -r

    [root@linux dir2]# cp -rv anaconda1.txt /.
    cp: overwrite ‘/./anaconda1.txt’? 
    

    移动 mv

    将file2移动到/home/dir3下

    mv file2 /home/dir3

    将fiel2移动到home/dir3下,并改名为file20

    mv file2 /home/dir3/file20

    重命名

    当前位置移动就是重命名
    mv file4 file5

    删除 rm

    rm /目录 删除

    rm -rf /目录 递归并强制删除

    -r 递归
    -f force 强制
    -v 详细过程

    查看

    cat

    cat 文件地址
    -n 显示行号
    -A 显示控制字符(换行符/制表符)
    linux 换行$
    Windows 换行^M$

    head 默认查看前世行

    默认该文件的前10行 也可以指定行数
    head -2 /文件

    tail 默认查看后十行

    tail -20 /w文件
    从后查看 指定多少行
    tail -f /文件
    滚动展示文件内容

    less 分页显示文件内容

    less 文件/

    grep 搜索文件中带有指定内容的行,可使用正则

    grep '关键字' /文件地址
    grep '^a' /文件地址 以a开头的

    编辑器

    gedit

      图形化编辑器
    

    vi

    • vi 工作模式

    当使用 vi a.txt 进入到command model(命令模式)
    输入i 进入到编辑模式
    按v/V/^v 进入到可视化模式
    按:进入到扩展命令模式(extended command model)
    进入到扩展命令模式 按wq退出

    命令模式(在命令模式下操作)

    光标移动

    hjkl

    l右移动
    h 左移动
    j下移动
    k 上移动
    0 按0 回到行首
    $ 按$回到行尾
    gg 回到第一行行首
    G 回到行尾
    5G 回到第五行行首

    查找

    / 输入关键词查找 按n/N 下一个 小n往后找 大N往前找
    /^d 以d开头的
    /st$以st结尾的

    复制
    • y 命令(以行为单位)
      yy 复制一行
      ygg 从光标开始一直复制到第一行
      3yy 复制三行
      yG 从行首复制到行为
    删除
    • d 命令(以行为单位)
      D 从光标删除到尾行
      dd 删除u当前行
      3dd 删除下面三行
      dgg 从当前行开始删除到行首
      dG 从当前行删除到行尾

    粘贴

    • p 粘贴
    • x 删除光标所在字符
    • u 撤销
    • ^r 重做
    • r 用来修改一个字符

    进入到其他模式

    • a 进入到编辑模式(光标在当前位置的下个字符)
    • A 进入到编辑模式 (光标到行尾)
    • i 进入到编辑模式 (光标到行前一个字符)
    • o 进入到编辑模式(光标换行)
    • :进入模式模式
    • v 进入可视模式
    • ^v 进入可视块模式
    • V 进入可是模式
    • R 进入替换模式

    可是块模式

    • 块插入(在制定块前插入字符) ctrl+v 选择块 ->shift+i 输入字符-->按Esc 退出
    • 块替换 ctrl+v 选择块,r 输入替换字符
    • 块删除 ctrl+v ,d|x 删除
    • 块复制 ctrl+v 选择块 ,y

    扩展命令模式 按:进入

    :10 进入10行
    :w 保存
    :q 退出
    :wq 保存并退出
    :w! 强制保存并退出
    :q! 不保存 强制退出
    :wq! 强制保存并退出
    :x 保存并退出
    :X 给文件加入密码

    查找替换 按:进入

    / 替换标识符 也可以改成 @#¥%% 随意字符
    :1,5 /s/small/big/
    把1~5行的每行第一个small替换成big
    :1,5 /s/small/big/g
    把1~5行的每行所有small替换成big
    :1,$ /s/small/big/
    把1~最后一行的每行第一个small替换成big
    :1,$ /s/small/big/g
    把1~最后一行的每行所有small替换成big
    :4,9 s/^#// 将4-9行以#开头的替换空

    读入文件/写文件(另存为)

    :w 保存到当前位置
    :w /linux/test.txt 保存到linux/test.txt
    :1,3 w /linux/33.txt 把1到3行去保存到33.txt
    :r /etc/hosts 读入文件到当前行后
    :5 r /ect/hosts 读入文件到第五行后

    设置环境

    • 关闭窗口失效
      : set number 设置行号
      : set Ic 不缺分大小写
      : set ai 自动缩进
      :set list 显示控制字符
      :set nolist 取消显示控制字符
      :set nonu 取消显示行号
      :set noic 取消忽略大小写
    • 永久有效

    vim ~/.vimrc

    set Ic
    set nu

    一次性打开两个文件

    vim -O /etc/hostname /ect/hosts

    小o 水平分割
    大O 垂直分割
    按ctrl+ww 切换

    vimdiff /ect/host /ect/hostname 对比两个文件不同

  • 相关阅读:
    解题报告:luogu P1156
    解题报告:AT3605
    矩阵乘法与斐波那契数列
    九、模块
    八、异常
    七、文件处理
    六、对象和内存分析
    五、函数和内存分析
    四、控制语句
    三、序列
  • 原文地址:https://www.cnblogs.com/lilihai/p/10142134.html
Copyright © 2020-2023  润新知