【Linux基础】基础shell命令

1:apt

   APT(Advanced Packaging Tool)是Ubuntu Linux中功能最强大的命令行软件包管理工具,用于获取、安装、编译、卸载和查询Deb软件包,以及检查软件包依赖关系

 三个重要的文件:
  1: 软件源配置文件 /etc/apt/sources.list : 列出最合适访问的镜像站点地址
  2:  索引文件/var/lib/apt/lists/  :列出了每一个服务器上软件的名称
      sudo  apt-get update :刷新索引列表。
  3:  下载的软件包存放地址:  /var/cache/apt/archives/

重点:
 --: APT并不是某个具体的命令,应该说是一组命令
    --: apt-get:用于管理软件包,包括安装、卸载、升级等操作
        apt-get  subcommands  [ -d | -f | -m | -q | --purge | --reinstall | - b | - s | - y | - u | - h | -v ]  pkg
      --:安装命令:
        sudo  apt-get install  软件名
           sudo  apt-get install  sl: 下载软件sl
      --:更新软件包列表索引文件/var/lib/apt/lists/
         sudo  apt-get  update
      --:将系统中所有软件包升级到最新的版本
          sudo  apt-get update
          sudo   apt-get upgrade

安装软件的四个步骤:
  使用“apt-get install”下载软件包大体分为四步:
     STEP1,扫描本地存放的软件包更新列表(/var/lib/apt/lists)(由apt-get update命令刷新更新列表),找到最新版本的软件包;
     STEP2,进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包;
     STEP3,从软件源所指的镜像站点中,下载相关软件包;
     STEP4 ,解压软件包,并自动完成应用程序的安装和配置。 
重点:
问题1: 加入下载软件xxx。但是下载不成功怎么办
      1:检查是否可以上网,(必须要能上网)
      2:先要确定服务器域名地址是否在软件源配置文件中(/etc/apt/sources.list),如果没有要添加。
      3:刷新软件源索引文件(sudo apt-get update)
     --重新安装软件包 
       apt-get --reinstall install  软件名
     --:卸载软件包 
        apt-get remove  软件名: 卸载软件并同时卸载它所依赖的软件。
  --:apt-cache:用于查询软件包信息
     apt-cache  subcommands  [ -p | -s | - q | - i | - c | -h ]  pkg
     查询软件包的详细信息
       apt-cache show  软件名。
     获取软件包安装状态 
       apt-cache  policy  软件名
     查询指定软件依赖关系
       apt-cache  depedns  软件名(xx): 列出与软件xx相关联的软件
     查询指定软件被那些软件所依赖:
       apt-cache  rdepends  软件(xx) : 列出依赖软件xx的软件。

2:shell的基本命令

    2-1:命令提示符:
      linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ 
      linux:用户名,(whoami)
      Ubuntu:主机名 (hostname)
      ~/my/teach/linuxC/17022/linuxc2:目录名显示当前的工作路径(pwd)(print work directory)
          --两个特殊的表示目录的符号
            “/": 代表根目录,
            “~”: 代表家目录, 
              --:家目录:用户登录到系统时的初始目录。
    2-2:命令格式
        $ Command [-Options] Argument1 Argument2 …
          指令      选项     参数1      参数2…
       选项: 以“-”开头,命令执行什么操作。
       参数: 对谁操作,
    注意: 选项和参数可以没有。
       两个特殊的提示符:
        “$": 代表用户是普通用户
        “#”:代表用户是superuser
    三个注意点:
      1: 一条命令的三要素之间用空格隔开;
      2: 若将多个命令在一行书写,用分号(;)将各命令隔开;
      3:如果一条命令不能在一行写完,在行尾使用反斜杠(\)标明该条命令未结束
    2-3:命令行的编辑
        ctrl-u: 取消光标前的指令,
        home:跳到指令开头
        end:跳到指令结尾。
        上下箭头: 列出以前的命令
      命令行补全: tab自动补全

3:history:列出历史命令

     history: 默认列出n条历史命令,n由环境变量HISTSIZE决定。
        更改默认值: 修改HISTSIZE变量的值。
        如何更改:
        1:暂时更改(只在当前shell中有效)
            HISTSIZE=newnumber
         2: 永久更改(修改~/.bashrc)
           cd :进入家目录
           vi .bashrc:打开文件
           HISTSIZE=10 :将默认值改为10
           保存退出:wq(:x)
           执行更改过的文件使其生效
            source ./bashrc (或者重新打开一个窗口)
        补充: echo: 向终端输出指定内容。

     history  number: 列出number条历史命令

     -c:清除内存中保存的历史信息。
       history -c :
     -w:将历史信息保存到硬盘上(~/.bash_history)

4:shell中的特殊字符

  touch  filename: 新建一个文件filename。
   4-1:通配符:
     *: 匹配任意长度的字符串(o~n)
       例如:
          linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls *
             file0  file10  file12  file2  file5  file7  file9
            file1  file11  file13  file3  file6  file8  touch.sh
     ?: 匹配一个长度的字符(1)
       例如:
         linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file?
              file0  file1  file2  file3  file5  file6  file7  file8  file9
         linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file??
             file10  file11  file12  file13
    []:匹配其中指定的一个字符
       [12345]:1,2,3,4,5中匹配。
         linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file[13]
            file1  file3
       [1-6]:1,2,3,4,5,6,中匹配
            linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file[1-4]
              file1  file2  file3
       [^123]:从除了123以外的所有字符中匹配(除了其中指定的字符,均可匹配)
       linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file[1-2][0-9]
           file10  file11  file12  file13  file21


   4-2:管道“|”: 可以将前一个命令的输出,作为后一个命令的输入。这样将多个命令连接起来实现一些功能。
      ls: 列出当前目录下的文件
      wc:统计指定文件的内容(行数,单词个数,字符个数)
        -l(小写L):统计出指定文件中的行数
        -w(word):统计出指定文件中的单词数
        -c():统计出指定文件中的字符数

     如果想统计当前目录下有几个文件?
       ls | wc -w : shell将ls的结果保存到内存中的一个文件在(buffer)中,然后wc 对buffer文件统计
  4-3:输入、输出重定向
       默认的输入:键盘
       默认的输出:屏幕终端窗口。
       可以通过输入,输出重定向符改变默认的输入输出方向。
       --:输出重定向符:
         > filename : 将正确的输出结果保存在filename文件中, 新建模式(如果filename文件不存在则创建,如果存在则清空原来的内容。)
         >> filename: 将正确的输出结果保存在filename文件中, 追加模式 ( 如果filename文件不存在则创建,如果存在则将新的内容添加到原来的内容之后。)

         2> filename:将命令产生的错误信息保存在filename文件中, 新建模式(如果filename文件不存在则创建,如果存在则清空原来的内容。) 
         2>> filename:将命令产生的错误信息保存在filename文件中,  追加模式  如果filename文件不存在则创建,如果存在则将新的内容添加到原来的内容之后。)

      将正确的输出结果和错误信息保存在文件中:
        &>
        &>>

      --:输入重定向
          < filename: 从文件filename中获取内容。
  4-4: cat: 在标准输出上显示文件
     cat file1: 将file1的内容打印到终端

     思考:如何将file1和fil2的内容追加到file3文件中?
         cat  file[12]>> file3
           如何将file1的内容追加到file2中?
             cat file1 >> file2
   4-5:命令置换(``)(esc键下面):取出命令的执行结果。
       ``==$()
       echo  "user name is `whoami`"
       echo  "hostname is $(hostname)"

5:linux基本命令

    5-1: man:进入命令的说明/操作手册
    man - an interface to the on-line reference manuals

     man  commandname
    5-2:passwd:修改密码
        --:普通用户只能修改自己的密码
        --:超级用户可以修改所有用户的密码
        passwd  username :修改username的密码。
    5-3: su :切换用户
       su: 切换到root用户
       su - username: 完完全全切换到username用户。
       su -m username: 切换到username后保留原来用户的环境信息,

      exit 退出(Ctrl+d)
     例如: HOME: 此环境变量存放当前用户的家目录路径
    5-4: echo:
         用于在标准输出(终端)上显示一段文字,一般起到提示作用

       --:  echo  string: 向终端打印string。
         echo   "heoo      kkkk": 代表heoo      kkkk是一个带空格字符串,heoo      kkkk是同一参数
         echo    heoo         kkkk:  代表两个字符串heoo  kkkk。代表echo有两个参数heoo 和 kkkk。
       --: echo 默认换行
        -n:不换行
    5-5date:显示和设置系统日期和时间
           -d, --date=STRING
              display time described by STRING, not `now'
            根据string来显示时间。
            linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ date -d "tomorrow"
                 Fri Mar 10 14:09:13 CST 2017
            linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ date -d "next year"
                Fri Mar  9 14:09:26 CST 2018
           -u: 显示utc时区时间
           +format:
            format:
              %Y: 年
              %m:  月
              %d: 天
              linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ date +%Y:%m:%d
                 2017:03:09
              linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ echo "today is `date +%Y-%m-%d`"
                 today is 2017-03-09

             %H:小时
             %M:分钟
             %S:秒

             linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ date +"%Y-%m-%d %H:%M:%S"
                2017-03-09 14:16:40

       设置时间:
         -s, --set=STRING
              set time described by STRING

            date  -s “1999/7/1 14:30:00”
       修改时区:修改/etc/localtime
         cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 
      5-6: 清屏clear(ctrl+l)
      5-7: df - report file system disk space usage:查看磁盘空间的使用情况

         -T:显示文件格式
         -h:大小以G、M,K单位显示(以人性化方式显示)
      5-8:du:列出目录和文件所使用的磁盘块数

6:用户管理

     adduser:添加用户
        例如添加 delep1,delep2
        sudo  adduser  delep1
   添加用户的过程:
           Adding user `delep1' ...
   step1: Adding new group `delep1' (1003) ...:创建一个组(gid为1003)用于存放新创建的用户,
   step2:  Adding new user `delep1' (1003) with group `delep1' ...:创建一个新的用户,用户id(1003)
   step3: Creating home directory `/home/delep1' ... : 在目录/home下创建用户的家目录/home/delep1.
   step4:  Copying files from `/etc/skel' ... : 将/etc/skel目录下的文件copy到用户的家目录下(/home/delep1)
   step5: 输入密码:
           Enter new UNIX password: 
           Retype new UNIX password: 
           passwd: password updated successfully
   step6:登记 用户的一些信息
          Changing the user information for delep1

        Enter the new value, or press ENTER for the default
    Full Name []: xiaowang
    Room Number []: 1001
    Work Phone []: 110
    Home Phone []: 1
    Other []: 1
   Is the information correct? [Y/n] y

几个重要的文件
1: /etc/passwd: 存放用户的属性信息,当用户登录的时候os去读取此文件。
     linux:x:1000:1000:linux,,,:/home/linux:/bin/bash   
      每个属性之间用“:”隔开。      
    linux: 登陆名
     x:     经过加密的口令 时间密码在/etc/shadow文件中
    1000:  UID
    1000:  默认的GID
    linux,,,: 个人信息
    /home/linux: 主目录
    /bin/bash : 登陆shell
 2: /etc/group : 包含了UNIX组的名称和每个组中成员列表
         每一行代表一个组,包括4个字段:
         组名
         加密的口令
         GID号
         成员列表,彼此用逗号隔开
    我们新创建的用户不能使用sudo ,如何改?
       vi /etc/group 
       在sudo一行添加用户名。
        sudo:x:27:linux,autor1,delep1 
重点命令:
  1:添加用户命令
      addusr  usrname: 
  --:修改用户属性:usermod

     选项:
       usermod -g  gid/groupname  usrname: 将用户加入指定的组中,
       usermod  -d  /home/dd -m  -l dd  delep1: 将原来用户名为delep1的用户名字更改为dd,同时家目录也更改为/home/dd.
  --:删除用户:deluser
    1:deluser  username: 删除用户但是不删除用户的家目录。
        deluser  dd : 
    2: deluser   --remove-home  user1: 删除用户user1的同时删除用户的工作目录 
       如果说一个组里面只有一个用户,那么在删除这个用户的同时也会将这个组删除掉,前提是组名和用户名相同。
  --添加组: addgroup
     addgroup   newgroup
  --:往组中添加成员。
    usermod  -g  gid   usrname:
  --: delgroup:删除组
     delgroup   newgroup:当组中有用户时,不能删除组。

7:进程管理

  进程的概念
  程序的一次执行就是一个进程 :
  进程包括pcb(进程控制块):包含进程的属性信息。

  操作系统通过PID来区分进程。

重点:
  1: ps:ps - report a snapshot of the current processes:显示进程信息。
      ps axj: 来查看当前进程的详细信息

  2kill:向进程传递一个信号。
    kill  -l:查看信号列表,
      kill  信号编号  pid: 给进程号为pid的进程发送一个信号。
        信号9:杀死一个进程,
        kill  -9  pid: kill 进程号为pid的进程。
  3: top:动态显示内存信息和进程信息。

 8:文件系统:
  8-1:  linux下一切都是文件。 用于管理文件的方式或机制称为文件系统。

  8-2: 文件系统的分类:
    磁盘文件系统(本地文件系统): 本地主机中实际可以访问到的文件系统,有很多种包括:ext,fat等。

    网络文件系统: 是可以远程访问的文件系统,存在于网络上的服务器中,

    (重点)虚拟文件系统: 存在于内存中,将内核信息映射到此文件中。
      /proc: 

8:其它

 补充:
   /dev/null: 空文件,所有写入此文件的内容都会被丢弃,不占用磁盘空间。
    --12>  /dev/null  : 将错误信息丢弃。
    --2:  cp  /dev/null   1.txt: 清空文件1.txt
  vi: 
  u:撤销上一步操作
  ctrl+r:反撤销。

作业:1:创建两个组delep and mang
         sudo  addgroup  delep
         sudo  addgroup  mang
      2:创建3个用户d1,d2,d3并且将这三个用户添加到组delep中,
         (补充) id: 列出当前用户的uid和gid等信息
         sudo  adduser  --gid  1001  d1:create a user d1 并且添加到组id为1001的组中。
         sudo  adduser  --gid  1001  d2:create a user d2 并且添加到组id为1001的组中。
         sudo  adduser  d3: 创建一个组d3和一个用户d3,并把用户d3放到组d3中,
         sudo  usermod  -g  1001  d3: 将用户d3放到gid为1001的组中。原来的组d3并没有被删除。
      3:创建3个用户:m1,m2,m3并且将这三个用户添加到组mang中,
         (补充) id: 列出当前用户的uid和gid等信息
         sudo  adduser  --gid  1002  m1:create a user m1 并且添加到组id为1002的组中。
         sudo  adduser  --gid  1002  m2:create a user m2 并且添加到组id为1002的组中。
         sudo  adduser  m3: 创建一个组m3和一个用户m3,并把用户m3放到组m3中,
         sudo  usermod  -g  1002  m3: 将用户m3放到gid为1002的组中。原来的组m3并没有被删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值