首页 系统开发 Linux 中常用的基础命令一

Linux 中常用的基础命令一

[2018-10-25 13:41 类别:系统开发 阅读(378) ]

1、目录相关命令的使用
  pwd(printing working directory)  显示当前工作目录
    pwd命令相关的环境变量:
       PWD  保存了当前工作目录路径
       OLDPWD 保存了上一次工作目录路径
    每次执行pwd命令就是去读取PWD的值

  cd(change directory)  改变工作目录
  语法格式  cd [/PATH/TO/SOMEDIR]
    cd或cd~ 切换回当前用户的家目录
    cd ~USERNAME 切换至指定用户的家目录(管理员能执行)
    cd - 在上一次所在目录与当前目录之间来回切换
    cd .. 返回上一级目录

  ls(list)  显示指定路径下的文件列表
  语法格式:ls [OPTION]... [FILE]...
  选项:
    -a  显示所有文件,包括隐藏文件
    -A 显示除 . 和 .. 之外的所有文件
    -l 长格式列表,即显示文件的详细属性信息

blob.png

 --color  显示颜色(不同类型文件显示为不同颜色)
     -d  显示目录自身的属性,通常与-l同时使用
    -i  显示文件的inode号(index node)
     -h  文件大小以人类易读格式显示
    -r  reverse逆序显示;默认是以升序显示
    -R  recursive递归显示;如果一个目录里有子目录,则同时也显示其子目录中的文件
    -Sl  文件由大到小排序
    -Slr 文件由小到大排序 配合 l
    -t   按修改时间排序,-Slt 等配合l,S,r等排序

2、文件查看类命令
  cat:文件查看类工具
  格式:cat [OPTION]... [FILE]...
  选项:
    -A 显示所有非正常的所有符号
    -E 显示行结束符$
    -T 显示制表符
    -v 显示其他的非打印字符
    -e 等于-vE
    -n 对显示的行进行编号,与文件内容没有联系
    -b 打印出行号(空白行不标行号)
    -s 将多个连续的空白行合并显示一个空白行

  tac 逆序显示文件内容(逆序行)
  rev 逆序显示每行字符(逆序列)
  file 查看文件内容类型格式

演示:
 cat、tac、rev命令的区别
   [root@centos7 ~]# echo "123456789" > /testdir/f1
   [root@centos7 ~]# ll /testdir/f1
   -rw-r--r-- 1 root root 10 2月  11 16:29 /testdir/f1

   [root@centos7 ~]# cat /testdir/f1
   123456789
   [root@centos7 ~]# tac /testdir/f1
   123456789
   [root@centos7 ~]# rev /testdir/f1
   987654321

   [root@centos7 ~]# ls > /testdir/f2
   [root@centos7 ~]# cat /testdir/f2
   anaconda-ks.cfg
   Desktop
   Discuz
   Documents
   Downloads
   lnamp
   MHA
   Music
   nginx
   Pictures
   Public
   Templates
   Videos
   zabbix-agent
   zabbix-proxy

   [root@centos7 ~]# tac /testdir/f2
   zabbix-proxy
   zabbix-agent
   Videos
   Templates
   Public
   Pictures
   nginx
   Music
   MHA
   lnamp
   Downloads
   Documents
   Discuz
   Desktop
   anaconda-ks.cfg

   [root@centos7 ~]# rev /testdir/f2
   gfc.sk-adnocana
   potkseD
   zucsiD
   stnemucoD
   sdaolnwoD
   pmanl
   AHM
   cisuM
   xnign
   serutciP
   cilbuP
   setalpmeT
   soediV
   tnega-xibbaz
   yxorp-xibbaz

   file命令
   [root@centos7 ~]# file /etc/fstab
   /etc/fstab: ASCII text

   [root@centos7 ~]# file /bin/ls
   /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped

3、echo回显命令
  功能:显示字符
  语法:echo [-neE] [字符串]
  说明:echo会将输入的字符串输出到标准输出,并在最后加上换行号
    -n 不为显示内容自动换行,默认都会自动换行显示
  -e 参数来使转义字符生效(字符串一定要加引号)
    \\                输出\本身
    \a                输出警告音
    \b                退格键,也就是向左删除键
    \c                取消输出行末的换行符,和“-n”选项一致
    \e                ESC(换码符)
    \f                换页符
    \n                换行符
    \r                回车键
    \t                制表符,也是Tab
    \v               垂直制表符,换行但光标仍旧停留在原来的位置
    \0nnn 按八进制ASCII码表输出字符。其中0为数字零,nnn为三位八进制数
    \xhh  按十六进制ASCII码表输出字符,其中hh为十六进制数

blob.png

改变输出内容颜色和格式:\e也可以用\033替代因为都是表示的换码符
    echo -e "\e[1;5;31;47m  abc \e[0m"
  输出abc的颜色\e[表示颜色输出开始;后跟多个格式参数用分号隔开(1表示输出为粗体,5表示文字闪烁,31表示前景色为红色,47表示背景色为白色);abc表示要输出的信息;\e[表示颜色输出结束;0m表示恢复为默认输出格式(如果后面不加0m,命令行所有显示会一直以定义的格式显示)

  输出颜色格式定义:3开头表示前景颜色,4开头表示背景颜色:
    30m=黑色        31m=红色        32m=绿色        33m=黄色        34m=蓝色        35m=洋色        36m=青色        37m=白色
   40m=黑色        41m=红色        42m=绿色        43m=黄色        44m=蓝色        45m=洋色        46m=青色        47m=白色

4、关机或重启命令
  管理类命令
    关机:halt、poweroff、shutdown、init 0
    重启:reboot、shutdown、init 6
    用户登录信息:who、whoami、w

  halt和poweroff:两者都是关机命令
    halt   关机但不断电
    poweroff 关机后并断电    
       -f 强制关机,相当于切断电源(不会调用shutdown进行安全关机操作)
  reboot:一般情况下是调用shutdown进行关机重启
    -f 强制(不会调用shutdown进行安全关机操作)
    -p 切断电源

  shutdown:关机或重启
  格式:shutdown [OPTION...] [TIME] [WALL...]
    -r  reboot 重启
    -h halt 关机
    -c cancle 取消关机
  -k 发行警告但是不执行关机操作

  时间格式:
     now  立刻
     +#   相对时间表示法,#分钟后执行操作,例如:+3分钟
     hh:mm  绝对时间表示,到具体时间后关机

  wall:在所有终端显示其输入的内容,例如:wall "shutdown now"

 演示:
   # 在5分钟后重启,会通知给所有人
   [root@centos7 ~]# shutdown -r +5
   Shutdown scheduled for 三 2017-02-08 09:35:05 CST, use 'shutdown -c' to cancel.
   [root@centos7 ~]#
   Broadcast message from root@centos7 (Wed 2017-02-08 09:30:05 CST):

   The system is going down for reboot at Wed 2017-02-08 09:35:05 CST!

   #取消关机,也会通知给所有人
   [root@centos7 ~]# shutdown -c
   [root@centos7 ~]#
   Broadcast message from root@centos7 (Wed 2017-02-08 09:30:45 CST):

   The system shutdown has been cancelled at Wed 2017-02-08 09:31:45 CST!

   # 加wall可显示自定义的语句
   [root@centos7 ~]# shutdown -r +5  "hello everyone"
   Shutdown scheduled for 三 2017-02-08 09:41:27 CST, use 'shutdown -c' to cancel.
   [root@centos7 ~]#
   Broadcast message from root@centos7 (Wed 2017-02-08 09:36:27 CST):

   hello everyone
   The system is going down for reboot at Wed 2017-02-08 09:41:27 CST!

5、与登录相关的命令
  whoami   显示当前登录用户的用户名
  w         系统当前所有的登录会话及所做的操作
 tty  显示当前终端对应终端设备文件
 who      显示当前系统所有登录用户名、终端类型、登录时间;如果是远程登录会显示登录IP地址
   -b  系统此次启动的时间
      -r 显示运行级别

 演示:
   [root@centos7 ~]# whoami
   root

   [root@centos7 ~]# who
   root     tty1         2017-02-08 09:26
   root     pts/0        2017-02-08 08:57 (192.168.1.104)
   root     pts/1        2017-02-08 09:30 (192.168.1.104)
   root     pts/2        2017-02-08 10:15 (192.168.1.104)
   root     pts/3        2017-02-08 10:18 (192.168.43.174)
   root     pts/4        2018-07-07 10:10 (192.168.1.104)
   [root@centos7 ~]# who -b
            系统引导 2017-02-08 15:48
   [root@centos7 ~]# who -r
            运行级别 3 2017-02-08 08:29

   [root@centos7 ~]# w
    11:02:39 up  2:32,  6 users,  load average: 0.00, 0.01, 0.05
   USER  TTY    FROM             LOGIN   @   IDLE   JCPU   PCPU WHAT
   root     tty1                             09:26    1:02m  0.08s  0.08s -bash
   root     pts/0    192.168.1.104    08:57    1:25m  0.17s  0.17s -bash
   root     pts/1    192.168.1.104    09:30    1:32m  0.04s  0.04s -bash
   root     pts/2    192.168.1.104    10:15    47:11   0.05s  0.05s -bash
   root     pts/3    192.168.43.174   10:18     ?     0.26s  0.26s -bash
   root     pts/4    192.168.1.104    10:10     ?     0.10s  0.01s w

6、与日期相关的命令
  date  显示时间和日期
  格式:date[OPTION]...[+FORMAT]

 按指定格式显示时间
 date[+FORMAT]
  %D  直接显示日期 mm/dd/yy ("Y"长格式年,"y"短格式年)
  %F 直接显示日期(YY-mm-dd)
  %T 直接显示时间(hh:mm:ss24小时制)
  %Y 完整年份(0000-9999)
  %m 显示月份
  %d 日
  %A 星期几(Sunday-Saturday)
  %a 星期几(Sun-Sat)
  %w 一周中的第几天
  %H 显示小时
  %M 显示分钟
  %S 显示秒
  %s 现在距离1970年1月1号0点0分(unix元年)的秒数,timestamp(时间戳)


  设置时间
  格式:date MMDDhhmm[CC]YY[.ss]      
    MM  月份
    DD  日
    hh  小时
    mm  分钟
    CC  两位年份
    CCYY  四位年份
    ss  秒
 -s 通过指定字符串设置时间

  显示当前时间的时间戳
  date +%s
  将指定时间转换为时间戳的格式
  date --date "Thu Nov 18 08:07:21 IST 2010" +%s
  获取指定时间是星期几
  date --date "Jan 20 2001" +%A

  Linux的两个时钟
    系统时钟:由Linux内核通过cpu的工作频率进行计时
    硬件时钟:就是主板bios提供的时钟,由主板电池供电来维持运行

    date 显示的是系统时间;
    hwclock或clock 显示的是硬件时钟
         -s --hctosys以硬件时钟为准,将硬件时钟写入到系统时钟(校正系统时钟)
         -w  --systohc以系统时钟为准,将软件时钟写入到硬件时钟(校正硬件时钟)

 演示:
   常用格式的日期显示
   [root@centos7 ~]# date +%D
   02/08/17
   [root@centos7 ~]# date +%F
   2017-02-08
   [root@centos7 ~]# date +%T
   10:20:00
   [root@centos7 ~]# date +%Y
   2017
   [root@centos7 ~]# date +%m
   02
   [root@centos7 ~]# date +%d
   08
   [root@centos7 ~]# date +%A
   星期三
   [root@centos7 ~]# date +%a
   三
   [root@centos7 ~]# date +%w
   3
   [root@centos7 ~]# date +%H
   10
   [root@centos7 ~]# date +%M
   21
   [root@centos7 ~]# date +%S
   24
   [root@centos7 ~]# date +%s
   1486520492

   完整格式的日期显示:
   [root@centos7 ~]# date "+现在的时间是:%Y-%m-%d %H:%M:%S"
   现在的时间是:2017-02-08 10:23:29
   [root@centos7 ~]# date "+现在的时间是:%F %H:%M:%S"
   现在的时间是:2017-02-08 10:24:33
   [root@centos7 ~]# date "+现在的时间是:%F %H:%M:%S %A"
   现在的时间是:2017-02-08 10:24:51 星期三
   如果要显示的时间不是当前时间,而是经过运算的时间,则可以使用-d选项,如下:
   # 显示3年前的时间
   [root@centos7 ~]# date "+%F %H:%M:%S" -d "-3 year"
   2014-02-08 10:26:08
   # 显示3个月后的时间
   [root@centos7 ~]# date "+%F %H:%M:%S" -d "+3 month"
   2017-05-08 10:26:24
   # 显示10天后的时间
   [root@centos7 ~]# date "+%F %H:%M:%S" -d "+10 day"
   2017-02-18 10:26:42

   有时候需要获取当前时间距离1970年0时0分0秒经历的秒数,保存在变量中,如下:
   [root@centos7 ~]# time=`date "+%s"`
   [root@centos7 ~]# echo $time
   1486520847

   设置时间
   [root@centos7 ~]# date -s "20180707 10:10:10"
   2018年 07月 07日 星期六 10:10:10 CST
   [root@centos7 ~]# date -s "2018-07-07 10:10:10"
   2018年 07月 07日 星期六 10:10:10 CST
   [root@centos7 ~]# date -s "2018/07/07 10:10:10"
   2018年 07月 07日 星期六 10:10:10 CST

   系统时钟和硬件时钟
   # 系统时钟
   [root@centos7 ~]# date
   2018年 07月 07日 星期六 10:26:42 CST
   #硬件时钟
   [root@centos7 ~]# clock
   2017年02月08日 星期三 10时47分46秒  -0.292560 秒
   [root@centos7 ~]# hwclock
   2017年02月08日 星期三 10时47分53秒  -0.479196 秒

   # 硬件时钟校正系统时钟
   [root@centos7 ~]# clock -s
   [root@centos7 ~]# date
   2017年 02月 08日 星期三 10:48:24 CST

  cal  显示当前日历,默认显示当前月份的日历
  cal [YY]  显示指定年份的日历如:cal 09 2017
 演示:
   [root@centos7 ~]# cal
         二月 2017    
   日 一 二 三 四 五 六
             1  2  3  4
    5  6  7  8  9 10 11
   12 13 14 15 16 17 18
   19 20 21 22 23 24 25
   26 27 28

7、type、alias、which和whereis命令
  type
  格式:type COMMAND
  如果是内部命令显示为"builtin"
  如果是外部命令显示命令文件的路径
  注意:命令可以有别名,别名可以与原名相同,此时原名被隐藏,此时如果要运行原命令,则使用 \COMMAND

  alias 命令别名
  alias 显示所有定义的别名
  alias NAME='COMMAND' 定义别名(仅对当前shell有效)
  unalias NAME 撤销别名

  which 显示应用程序文件位置
  格式:which COMMAND
  注意:有时候一个命令还有其他的别名,但我们先看命令本身,而非别名,此时可以使用:
    which --skip-alias 禁止使用别名,直接使用原始命令

  whereis
  作用:whereis - locate the binary, source, and manual page files for a command
  格式:whereis [options] name...
  选项:
    -b 仅搜索二进制程序路径
    -m 仅搜索使用手册文件路径

 演示:
   type
   [root@centos7 ~]# type cd
   cd 是 shell 内嵌
   [root@centos7 ~]# type date
   date 已被哈希 (/usr/bin/date)
   [root@centos7 ~]# type tree
   tree 是 /usr/bin/tree
   [root@centos7 ~]# type ls
   ls 是 `ls --color=auto' 的别名
   wKioL1iazijg7shYAAAse_IY3-U276.png

   which
   [root@centos7 ~]# which ls
   alias ls='ls --color=auto'
     /usr/bin/ls
   [root@centos7 ~]# which --skip-alias ls
   /usr/bin/ls

   whereis
   [root@centos7 ~]# whereis ls
   ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

   alias
   [root@centos7 ~]# alias
   alias cp='cp -i'
   alias egrep='egrep --color=auto'
   alias fgrep='fgrep --color=auto'
   alias grep='grep --color=auto'
   alias l.='ls -d .* --color=auto'
   alias ll='ls -l --color=auto'
   alias ls='ls --color=auto'
   alias mv='mv -i'
   alias rm='rm -i'
   alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

8、screen命令远程控制
  一个终端下打开多个屏幕,并剥离屏幕与终端的关系,终端关闭也不会影响屏幕下的进程
  使用方法:
   screen -S [session 会话] 打开screen
       screen -x [session 会话] 加入screen
  exit 退出并关闭screen
    Ctrl+a,d 剥离当前screen  
     screen -ls 显示所有已经打开的screen
     screen -r SCREEN_ID 连接指定screen



关于博主Jansens