zoukankan      html  css  js  c++  java
  • linux 使用和基础操作

    第一节:linux 系统初使用

    linux 有图形终端和字符终端,关于 linux 学习以字符终端为主,即命令行操作:

    [root@centos7 ~]#runlevel   #查看当前工作模式(3为字符终端,5为图形终端)
    [root@centos7 ~]#init3        #切换至字符终端
    [root@centos7 ~]#init5        #切换至图形终端
    [root@centos7 ~]#startx       #只是启动图形,不是模式切换,[Ctrl]+c关闭图形
    虚拟终端:[Ctrl]+[Alt]+F1~F6
    图形终端:[Ctrl]+[Alt]+F7
    切换终端:chvt 1~6,命令切换和按键切换一样
    查看当前的终端设备:tty 命令
    

    1.1 shell 程序(bash shell)

      shell 是一种高级程序设计语言,也被称为 linux 的命令解释器:它提供了用户与内核进行交互操作的一种接口,接收用户输入的命令并把它送入内核去执行。

    1.2 内部命令和外部命令

    #列出所有内部命令
    enable
    
    #禁用内部命令 cd
    enable -n cd
    
    #查看所有禁用的内部命令
    enable -n
    
    #启用该内部命令(cd命令)
    enable cd
    
    #显示命令类型
    type cmd

     1.3 PATH 变量

    [root@centos7 ~]#echo $PATH    #显示PTTH环境变量
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    #默认列出当前hash缓存命令的缓存信息
    hash
    
    #清除cmd命令缓存 hash -d cmd
    #清除所有hash缓存 hash -r
    #打印缓存中cmd命令的路径 hash -t cmd
    #将命令全路径path起别名为cmd hash -p path cmd
    #显示hash缓存,可作为输出使用 hash -l

    1.4 命令格式

    COMMAND [OPTIONS…] [ARGUMENTS…]
        #命令 选项 参数(命令的作用对象)
        #多个选项以及参数和命令之间使用空白字符分隔
        #取消和结束命令执行:Ctrl+c,Ctrl+d
        #多个命令可以用;分开
        #一个命令可以用分成多行

    1.5 命令别名

    (1)显示当前 shell 进程所有可用的命令别名

    [root@centos7 ~]#alias
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    ......

    (2)定义别名、撤销别名

    [root@centos7 ~]#alias NAME=’VALUE’
    [root@centos7 ~]#unalias [-a] NAME1 NAME2...    #-a取消所有,参数可选

    (3)在命令行中定义的别名,仅对当前 shell 进程有效,如果想永久有效,要定义在配置文件中:

      仅对当前用户:~/.bashrc

      对所有用户有效:/etc/bashrc

      exit 退出重新登录生效;. 或 souce 后跟更改的配置文件使之不退出生效

    (4)如果别名同原命令同名,要使用原命令可以使用:

    [root@centos7 ~]#alias ls
    alias ls='ls --color=auto'
    [root@centos7 ~]#ls [root@centos7 ~]#"ls" [root@centos7 ~]#'ls' [root@centos7 ~]#command ls

    1.6 简单命令

    (1)关机

    [root@centos7 ~]#halt
    [root@centos7 ~]#poweroff
    [root@centos7 ~]#shutdown -h now

    (2)重启

    [root@centos7 ~]#reboot -[f|p]
       -f:强制,不调用 shutdown
       -p:切断电源

    (3)shutdown

    [root@centos7 ~]#shutdown [OPTION]… TIME [MESSAGE]
       -r:reboot
       -h:halt
       -c:cancel
    
    TIME 无指定,默认相当于+1 TIME指定now:立刻,相当于+0 +m:相对时间表示法,几分钟之后(例如:+3) hh:mm:绝对时间表示,指明具体时间

    (4)wall 命令

    [root@centos7 ~]#wall "+5min reboot"

    (5)用户登录信息查看命令

    [root@centos7 ~]#whoami  #显示当前登录有效用户
    [root@centos7 ~]#who     #系统当前所有的登陆会话
    [root@centos7 ~]#w       #系统当前所有的登陆会话及所做的操作

    (6)screen 命令

    #创建名为help的screen会话
    [root@centos7 ~]#screen -S help
    
    #显示当前所有screen会话 [root@centos7 ~]#screen -ls
    #加入screen会话 [root@centos7 ~]#screen -x help
    #剥离当前会话 [Ctrl]+a,[Ctrl]+d
    #退出并关闭screen会话 [root@centos7 ~]#exit
    #恢复某 screen 会话 [root@centos7 ~]#screen -r [SESSION]

    (7)echo 命令

    功能:显示字符、显示变量
    语法:echo [-neE] [字符串]
    说明:echo 会将输入的字符串送往标准输出。输出的字符串以空白字符隔开,并在最后加上换行号。
    选项:
      -E (默认)不支持解释功能
      -n 不自动换行
      -e 启用字符的解释功能
        a 发出警告声
         退格键
        	 插入 tab
           ……

    (8)命令行、括号扩展

    #单引号之内只当做字符处理;双引号之内识别变量,不识别命令;反向单引号之内识别变量,识别命令
    #` `或$()用于一个命令调用另一个命令的输出
    
    #括号扩展:打印重复字符串的简化形式
    [yang@centos7 ~]$echo file{1,2,3}
    file1 file2 file3
    [yang@centos7 ~]$echo {1..9}
    1 2 3 4 5 6 7 8 9

    (9)bc 计算器

    [root@centos7 ~]# bc
    1+2+3
    6
    ibase=16    #输入:16进制数,输出:10进制数
    61
    97
    [root@centos7 ~]# bc
    obase=16    #输入:10进制数,输出:16进制数
    97
    61

    (10)编辑/etc/motd 文件,编辑登陆后提示信息;编辑 /etc/issue 文件,编辑登录前提示信息

    (11)[Tab]键之命令补全、文件路径补全

    (12)查看历史命令

      历史命令先保存在内存中,退出时再将数据写入磁盘文件(.bash_history)

    [root@centos7 ~]# history           #查看历史命令
    [root@centos7 ~]# echo $HISTSIZE    #HISTSIZE 变量保存的是历史命令的条数
    1000
    [root@centos7 ~]# !280              #执行第280条历史命令
    echo $HISTSIZE
    1000
    [root@centos7 ~]# vim /etc/profile  #编辑文件更改系统保存历史命令的条数
    (reverse-i-search)`echo': echo $HISTSIZE    #[Ctrl]+r搜索历史命令,[Ctrl]+g退出

    1.7 文件通配符

    * 匹配 0 个或多个字符
    ? 匹配任意单个字符
    ~ 当前用户家目录
    ~yang 用户 yang 的家目录
    ~+ 当前工作目录
    ~- 前一个工作目录
    [0-9]、[a-z]、[A-Z] 匹配范围内的内容
    [yang] 匹配列表中的任意一个字符
    [^yang] 匹配列表中所有字符以外的字符
    [[:upper:]] 所有大写字母
    [[:lower:]] 所有小写字母
    [[:alpha:]] 所有字母
    [[:digit:]] 所有数字
    [[:alnum:]] 所有的字母和数字
    [[:blank:]] 水平空白字符
    [[:space:]] 所有空白字符
    [[:punct:]] 所有标点符号
    [[:print:]] 可打印字符
    [[:cntrl:]] 控制(非打印)字符
    [[:graph:]] 图形字符
    [[:xdigit:]] 十六进制字符






    1.8 其他简单命令

    [root@centos7 ~]# echo $RANDOM              #生成随机数(0-32767)
    [root@centos7 ~]# openssl rand -base64 12   #生成12位的随机字符数
    [root@centos7 ~]# last                      #显示成功登陆信息
    [root@centos7 ~]# netstat -nt               #显示远程主机连接的次数
    [root@centos7 ~]# cd /etc/                  #切换目录(cd -:回退到上次目录,存放在$OLDPWD 变量里)
    [root@centos7 ~]# ls -a                     #显示文件,参数:-ARld1Srt
    [root@centos7 ~]# stat anaconda-ks.cfg      #显示:atime,mtime,ctime即访问时间,修改时间,状态时间
    [root@centos7 ~]# touch                     #文件不存在创建空文件;刷新已存在文件的时间
        -a 仅改变 atime 和 ctime
        -m 仅改变 mtime 和 ctime
        -t [[CC]YY]MMDDhhmm[.ss] 指定 atime 和 mtime 的时间戳(年月日小时分秒)
        -c 如果不存在,则不创建
    [root@centos7 ~]# cp    #拷贝
      cp [选项]... [-T] 源文件 目标文件
      cp [选项]... 源文件... 目录
      cp [选项]... -t 目录 源文件...
        cp -r     #复制目录
        cp -f     #目标文件存在,先删除后复制
        cp -p    #保留所有者属性
        cp -a  #递归;保留链接(相当于-d);保留所有属性(备份手段)
        cp -av  #备份+显示信息
        cp –backup=numbered 原文件 目标文件  #不用担心覆盖,会备
    
    #实现批量备份:先使用cp命令复制,再使用rename更改文件名
    [root@centos7 ~]# rename "conf" "conf.bak" file*
    mv:移动文件、更改文件名
      -i 交互式(默认)
      -f 强制
    
    rm:删除
      -r 递归
      -f 强制删除
    
    #可以用 mv 代替 rm:rm=’mv -t /tmp’
    tree [dir]  #显示特定目录的目录树结构
    tree -L 1 [dir]  #显示特定目录下一层目录树结构
        -d       #只显示目录不显示文件
        -P       #pattern:只显示由 pattern 匹配到的路径
    
    mkdir:创建目录
      -p:递归创建
      -v:显示详细信息
      -m MODE:创建目录时直接指定权限
    
    rmdir:删除空目录
      -p:递归删除父空目录
      -v:显示详细信息
    
    rm -r:递归删除目录树
    [root@centos7 ~]# shred    #安全删除文件
      -z 最后一次用 0 覆盖;-v 看过程;-u 覆盖后删除;-n 6 覆盖 6 次

    1.9 索引节点

      inode(index node)表中包含文件系统所有文件列表,一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:

      文件类型,权限,UID,GID

      链接数(指向这个文件路径名称个数)

        该文件的大小和不同的时间戳

        指向磁盘上文件的数据块指针

        有关文件的其他数据

      总结:rm 命令删除可以使链接数递减,从而释放的 indoe 号可以被用,把数据块放到空闲列表中数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖,所以可以使用 shred 安全删除(覆盖删除)。

    1.10 软硬链接

      节点编号每个文件一个(可以使用 ln 创建硬链接实现一个节点编号对应对个文件名)

      硬链接的本质:一个节点多个名字(平等关系)同一分区、针对于文件

      目录链接数默认为 2:.当前目录和目录名;在目录里在创建一个目录,则有:..上一级目录,链接数变为 3)

      软链接的本质:快捷方式;软链接的大小和路径有关和原文件大小无关

      ln -s 命令创建软连接,软链接不能写相对当前路径,相对的是软链接的路径

      软硬链接的区别:

        本质:

          硬链接:同一个文件多个名字

          软链接:一个文件对应快捷方式,是不同文件

        表现:

          链接数

          跨分区

          是否支持目录

          与原始文件的关系

          删除

          大小

      部署软件使用软链接实现版本切换

    1.11 确定文件内容

      文件可以包含多种类型的数据,检查文件的类型,然后确定适当的打开命令或应用程序使用

      file [option]:
        -b 列出文件辨识结果时,不显示文件名称
        -f filelist 列出文件 filelist 中文件名的文件类型
        -F 使用指定分隔符号替换输出文件名后默认的“ :”分隔符
        -L 查看对应软链接对应文件的文件类型

    1.12 获取多层次的帮助

    [root@centos7 ~]# whatis cp
    [root@centos7 ~]# man -f cp
    [root@centos7 ~]# command –help
    [root@centos7 ~]#man 1 rm
    man
    帮助:   查看 man 手册页:man [章节] keyword   列出所有帮助:man -a keyword   搜索 man 手册:man -k ketword 列出所有匹配的页面   man 章节:     1:用户命令;2:系统调用; 3:C 库调用;4:设备文件及特殊文件; 5:配置文件格式;6:游戏;7:杂项; 8:管理类命令;9:LINUX 内核 API

    man 手册放在/usr/share/man;man 命令的配置文件:/etc/man.config | man db.conf
    内部命令:help 命令  #使用help获取内部命令帮助信息
    外部命令:man 命令、--help  #使用man或--help获取外部命令帮助信息
  • 相关阅读:
    《谷歌网站站长指南》更新有关欺骗性重定向的内容
    【网站运营】网站被K的原因大总结
    Dedecms 首页调用副栏目内容方法
    完美企业网站的101项指标
    10 个强大的开源 Web 流量分析工具(转帖)
    在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用
    在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常
    在C#代码中应用Log4Net(三)Log4Net中配置文件的解释
    在C#代码中应用Log4Net(二)典型的使用方式
    在C#代码中应用Log4Net(一)简单使用Log4Net
  • 原文地址:https://www.cnblogs.com/zyybky/p/12348034.html
Copyright © 2011-2022 走看看