Linux基础之常用命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础之常用命令相关的知识,希望对你有一定的参考价值。

一、 Linux系统上命令通用格式为: COMMAND    [OPTIONS]    [ARGUMENTS] 命令     选项      参数

1.  命令

命令可分为两类:内置命令和外部命令

  • 内置命令:由shell自带的命令

  • 例如:cd,break,(un)alias,type,file,history,pwd……是系统在启动之初就已经调入到内存中,是常驻内存之中,执行效率高

  • 外部命令:独立的可执行文件,文件即命令;系统根据环境变量中的设置查找来执行。例如:ls、ifconfig、useradd

2. 选项

    指定命令的运行特性,有两种:

     长选项:例如–size等

     短选项:例如-l,-d等

3.  参数

    指定命令的作用对象,可同时有多个(多个存在时,参数之间必须用空白字符隔开)

4.  常用命令

ifconfig:配置网络命令

OPTIONS
            -a    显示所有可用网络接口状态信息
            -s    简单显示网络状态,类似netstat –i
            Interface 只显示$interface的配置信息及网络状态
            up/down    用法是:ifconfig interface up/down    启动/关闭interface接口

使用示例:

[[email protected] ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:50:56:84:0D:85  
          inet addr:10.88.158.84  Bcast:10.88.158.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe84:d85/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13280886 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12391039 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3831929038 (3.5 GiB)  TX bytes:2329255101 (2.1 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:261964044 errors:0 dropped:0 overruns:0 frame:0
          TX packets:261964044 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:238710410075 (222.3 GiB)  TX bytes:238710410075 (222.3 GiB)
          
[[email protected] ~]# ifconfig -s
Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0 13280991      0      0      0 12391128      0      0      0 BMRU
lo        65536   0 261964994      0      0      0 261964994      0      0      0 LRU 

[[email protected] ~]# ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:261966119 errors:0 dropped:0 overruns:0 frame:0
          TX packets:261966119 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:238710735933 (222.3 GiB)  TX bytes:238710735933 (222.3 GiB)


echo:显示变量的值

OPTIONS
                -n    输出内容后不换行
                -e    可解释转义字符  可以使用\n来做换行
                -E    不能解释转义字符(命令默认选项)

使用示例:

[[email protected] ~]# echo  ‘I wish nothing but the best for you‘
I wish nothing but the best for you

[[email protected] ~]# echo -n ‘I wish nothing but the best for you‘
I wish nothing but the best for you[[email protected] ~]# 

[[email protected] ~]# echo -e ‘I wish nothing \n but the best for you‘
I wish nothing 
 but the best for you
 
[[email protected] ~]# echo -E ‘I wish nothing \n but the best for you‘
I wish nothing \n but the best for you

[[email protected] ~]# echo  ‘I wish nothing \n but the best for you‘
I wish nothing \n but the best for you


tty:查看当前终端设备信息

tty是Linux系统的输出设备(字符型),有这么几种类型:
                虚拟终端:tty(1-6)  系统启动之后直接调用的界面
                伪终端:pts/n       通过远程或者在虚拟终端中开启的界面

                串口终端:tyySn     计算机串行接口连接的终端

使用示例:

[[email protected] ~]# tty
/dev/pts/1


startX:打开图形界面

OPTIONS
                -w  在工作站上强制启动X会话
                -x  使用.xinitrc脚步启动会话


export:设置或显示环境变量

直接用export命令:

export PATH=$PATH:/usr/local/mysql/bin

想要使得开机时自动加载这个环境变量免除以后每次设置,可将其写入/etc/re.local

使用示例:

[[email protected] ~]# export PATH=$PATH:/usr/local/mysql/bin
[[email protected] ~]#


pwd:显示当前目录路径

 OPTIONS
                -L  当目录连接链接时,显示链接路径  
                -P  显示目录的物理路径


history:查看历史命令

 OPTIONS
                -c  删除history列表中的历史记录
                -a  附加当前会话中的记录到历史记录文件中去,默认~/.bash_history
                -r  从历史记录文件和附加的内容列表中读取记录

定制history的功能,可通过环境变量实现:

HISTSIZE:shell进程可保留的命令历史的条数;

HISTFILE:持久保存命令历史的文件;

.bash_history

HISTFILESIZE:命令历史文件的大小;

调用命令历史列表中的命令:

!#:再一次执行历史列表中的第#条命令;

!!:再一次执行上一条命令;

!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;

调用上一条命令的最后一个参数:

快捷键:ESC, .

字符串:!$

使用示例:

[[email protected] ~]# echo $HISTSIZE
1000
[[email protected] ~]# HISTSIZE=2
[[email protected] ~]# echo $HISTSIZE
2
[[email protected] ~]# history 
  687  echo $HISTSIZE
  688  history
  
[[email protected] ~]# export HISTSIZE=0
                ***限制命令历史记录的总条数,0表示禁用命令历史记录功能

[[email protected] ~]# export HISTFILE=~/.cmd_history
                ***设置命令历史记录的保存位置,默认是~/.bash_history

[[email protected] ~]# export HISTIGNORE=‘pwd:ls:ls -ltr:‘
                ***设置某些命令将不被保存到历史记录中

[[email protected] ~]# export HISTCONTROL=erasedups
                ***清理所有重复的命令历史条目

[[email protected] ~]# export HISTCONTROL=ignoredups
                ***剔除连续重复的命令历史条目

[[email protected] ~]# export HISTCONTROL=ignorespace
                ***不记录以空格开头的命令历史条目


shutdown:关闭系统

OPTIONS
                -H  Halt the system(Halt同shutdown -h)关闭系统
                -P  退出系统并关闭电源
                -r  重启系统
                -k  只发送关机警告并不真正关机
                -c
                -t  在改变到其他runrever之前,告诉init多久以后关机
                -n  不用init,而是自己来关机。不鼓励使用此选项

使用示例:

[[email protected] init.d]# shutdown -h +5(分钟)
Shutdown scheduled for Thu 2016-09-15 09:18:47 CST, use ‘shutdown -c‘ to ca

[[email protected] init.d]# shutdown -c
Broadcast message from [email protected] (Thu 2016-09-15 09:15:02 CST):
The system shutdown has been cancelled at Thu 2016-09-15 09:16:02 CST!


poweroff:关机命令

OPTIONS

                --halt  Halt the mochine关闭设备
                -p      switch off the mochine 切断电源
                -f      force immediate halt/poweroff/reboot强制立刻停止/断电/重启系统
                -w      只增加记录/var/log/wtmp,但不进行停止/断电/重启系统操作
                -d      不记入记录


reboot:重启系统

 OPTIONS

                --halt  Halt the mochine关闭设备
                -p      switch off the mochine 切断电源
                -f      force immediate halt/poweroff/reboot强制立刻停止/断电/重启系统
                -w      只增加记录/var/log/wtmp,但不进行停止/断电/重启系统操作
                -d      不记入记录

--------------------shutdown、halt、poweroff、reboot三者之间的区别--------------------------

            从man帮助信息可以看到使用同样的选项,会得到同样的结果

            1、shutdown
                shutdown命令是安全的将系统关闭,shutdown执行它的工作是送信号〔signal〕给init程序﹐要
                求它改变runlevel。Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系
                统﹐而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有
                -r参数给shutdown。要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以
                在这个文件/etc/inittab里看到这些runlevels相关的资料。
            2、halt
                其实halt就是调用shutdown -h,halt执行时杀死应用程序的进程,执行sync系统调用,文件系统
                写操作完成之后就会停止内核。
            3、reboot
                与halt同理,只是此命令默认重启,halt是关机
            4、Poweroff
                不建议在多用户下使用
            5、init
                所有命令的核心,shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。
                Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系统﹐而runlevel 1
                则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。
                要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab
                里看到这些runlevels相关的资料。


hwclock/clock:设置同步硬件和系统间的时间

 FUNCTIONS
                -r  读取硬件时钟并且显示
                -s  将硬件时钟同步到系统时钟hctosys
                -w  将系统时钟同步到硬件时钟systohc
                  --systz   基于当前的timezone设置同步硬件时钟
                -c
                  --compare 定期比较CMOS时钟和系统时钟

date:显示和设置系统时间

SYNOPSIS
            date [OPTIONS].. [+FORMAT]
            date [-u|--utc|--univeral] [MMDDhhmm[[CC]YY][.SS]]
        OPTIONS
                -f  类似--date 显示需要查看的DATEFILE的每行时间戳
                -r  显示FILE的最后一次修改时间
                -d  根据字符描述来显示日期与时间,不包括‘now’,描述使用双引号
                -s  根据字符串来设定日期与时间,字符串带双引号

        FORMAT  
                %% :打印%
                %n : 下一行
                %t : 跳格
                %H : 小时(00..23)
                %I : 小时(01..12)
                %k : 小时(0..23)                    
                %l : 小时(1..12)                    
                %M : 分钟(00..59)                    
                %p : 显示本地 AM 或 PM                    
                %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
                %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 
                %S : 秒(00..61)                    
                %T : 直接显示时间 (24 小时制)                   
                %X : 相当于 %H:%M:%S                    
                %Z : 显示时区 %a : 星期几 (Sun..Sat)                    
                %A : 星期几 (Sunday..Saturday)                   
                %b : 月份 (Jan..Dec)                   
                %B : 月份 (January..December)                    
                %c : 直接显示日期与时间                    
                %d : 日 (01..31)                    
                %D : 直接显示日期 (mm/dd/yy)                   
                %h : 同 %b                    
                %j : 一年中的第几天 (001..366)                    
                %m : 月份 (01..12)                   
                %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)                   
                %w : 一周中的第几天 (0..6)                  
                %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)                   
                %x : 直接显示日期 (mm/dd/yy)                  
                %y : 年份的最后两位数字 (00.99)                  
                %Y : 完整年份 (0000..9999)
        FOR EXAMPLE
            1、设置时间
                date -s //设置当前时间,只有root权限才能设置,其他只能查看。

                date -s 20150523 //设置成20150523,这样会把具体时间设置成空00:00:00

                date -s 01:01:01 //设置具体时间,不会对日期做更改

                date -s “01:01:01 2016-05-23″ //这样可以设置全部时间

                date -s “01:01:01 20150523″ //这样可以设置全部时间

                date -s “2016-05-23 01:01:01″ //这样可以设置全部时间

                date -s “20160523 01:01:01″ //这样可以设置全部时间

            2、日期时间查询

                date -d ‘1 day ago‘ +‘%Y-%m-%d‘    
                date -d ‘+1 day‘ +%Y-%m-%d
                date -d ‘-1 day‘ +%Y-%m-%d
                date -d ‘+1 month‘ +%Y-%m-%d
                date -d ‘+1 yeas‘ +%Y-%m-%d

二、如何获取命令帮助

Linux系统的命令众多,再配合各种选项,那命令的使用方法永远也记不完;那我们如何获取命令的帮助呢?我们知道,在Linux系统中命令可分为内置命令和外部命令,查看一个命令是内置命令还是外部命令,我们使用type命令,比如:

[[email protected] ~]# type cd ifconfig
    cd is a shell builtin       /*  cd是SHELL的内置命令
    ifconfig is hashed (/usr/sbin/ifconfig)     /*ifconfig是外部命令

常用的获取命令帮助的途径有以下几个:

1、获取内置命令的帮助信息

获取内置命令的帮助信息的方式,比如help pwd,得到如下信息

[[email protected] ~]# help pwd
pwd: pwd [-LP]
    Print the name of the current working directory.
    
    Options:
      -L print the value of $PWD if it names the current working
     directory
      -P print the physical directory, without any symbolic links
    
    By default, `pwd‘ behaves as if `-L‘ were specified.
    
    Exit Status:
    Returns 0 unless an invalid option is given or the current directory
    cannot be read.

2、获取外部命令的帮助信息

获取外部命令的帮助信息的方式有多种,常用有以下几种:

a、COMMAND --HELP

以简要格式显示自带的帮助文档,比如ip --help

[[email protected] ~]# ip --help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
                   tunnel | maddr | mroute | mrule | monitor | xfrm | token }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -h[uman-readable] | -iec |
                    -f[amily] { inet | inet6 | ipx | dnet | link } |
                    -o[neline] | -t[imestamp] | -b[atch] [filename] |
                    -rc[vbuf] [size]}

b、man COMMAND            
            man(manual)属于专业的命令帮助手册,位于/var/share/man文件中,讲解很专业、全面。man命令包括10个章节,具体如下:

                man1:用户命令(user commands)
                man2:系统内部调用命令(system calls)
                man3:C库调用(library functions)
                man4:设备文件及特殊文件(special files)
                man5:文件格式(配置文件格式)(file formats)
                man6:游戏使用帮助(games)
                man7:杂项(conventions and miscellany)
                man8:管理工具及守护进程(administration and privileged commands)
                man L:(math library functions)
                man N:tcl functions tcl函数

            当我们man一个命令的时候,在文档的左上角会提示我们的帮助文档属于man的哪一章的命令帮助,或者可以通过man n COMMAND
            命令指定其章节,如下:

            [[email protected] ~]# man ifconfig
            IFCONFIG(8)           Linux System Administrator‘s Manual          IFCONFIG(8)               
            [[email protected] ~]# man 1 date
            DATE(1)


man命令打开手册以后的操作方法:

翻屏:

空格键:向文件尾翻一屏;

b: 向文件首部翻一屏;

Ctrl+d:向文件尾部翻半屏;

Ctrl+u:向文件首部翻半屏;

回车键:向文件尾部翻一行;

k: 向文件首部翻一行;

G:跳转至最后一行;

#G: 跳转至指定行;

1G:跳转至文件首部;

 c、info COMMAND

获取COMMAND的在线文档

d、程序自带文档,比如:

            README:程序的相关信息
            INSTALL:安装帮助文档

            CHANGES:程序的改动信息

f、官方文档,比如RHEL文档:http://www.redhat.com/doc


三、Linux基础目录功用及命名规则

FHS(Filesystem Hierarchy Standard)规定了类Unix系统的各个系统目录的功能及存储文件,下面我们来解读下linux系统中的目录

        /: Root directory 根目录,Linux内核挂载的起始位置

        /bin: Essential user command binaries (for use by all users) 基本的用户命令文件,任何用户均可调用,比如:cp、date、dd、rm

        /boot: Static files of the boot loader 系统引导加载程序的静态文件,系统进入用户模式之前的加载文件均在这里

        /dev: Device files 系统的设备文件 存储着关于各部分硬件设备的资料,比如:tty、pts、mem(不可读)

        /etc:Host-specific system configuration 主机的系统配置文件,几个特殊的目录如下:

                  X11/       Configuration for the X Window system (optional)
                  sgml/            Configuration for SGML (optional)
                  xml/           Configuration for XML (optional)

        /home:  User home directories (optional)  用户的家目录,创建用户默认生成,一般目录名同用户名。例如:/home/USERNAME

        /lib:Essential shared libraries and kernel modules 基本的共享库及内核模块。

        /lib(qual):Alternate format essential shared libraries (optional) 交替格式共享库。例如lib32、lib64

        /media:Mount point for removable media 可移动介质的挂载点,可以认为是扩展挂载点。与/mnt类似

        /mnt:Mount point for a temporarily mounted filesystem 其他临时系统文件的挂载点。

        /opt:Add-on application software packages 留给附加的应用程序软件包的

        /root:Home directory for the root user (optional) 超级管理员root的家目录

        /run:Run-time variable data 运行时的变量数据,这个目录包含系统信息数据描述了系统自启动。这个目录下的文件必须被清除(删除或截断)在引导过程的开始。

        /sbin:System binaries 管理员命令存储目录,没有子目录且不能随意创建

        /srv:Data for services provided by this system 系统服务的相关数据

        /tmp:Temporary files 临时文件存储。

        /usr: shareable, read-only data,must not be written to。属于系统文件的最主要部分(/除外),符合FHS用户共用此目录,其子目录解读如下:

                  bin/        Most user commands 大部分的用户命令,比如:perl,python,tclsh

                  include/       Directory for standard include files 一些可能系统调用的C相关的文件

                  lib/        Libraries for programming and packages 库程序和包

                  local/       Local hierarchy 本地的层级目录,bin/,sbin/,lib/,lib64/,share/,src/,games/,include/等

                  sbin/       Non-essential standard system binaries 只有管理员调用的非标准的系统函数

                  share/       Architecture-independent data 系统杂项,但是有几个重要的目录

                                 man/ Manual pages 使用手册目录

                                 doc/ 程序的说明文档

                                 zeroinfo/ Timezone information and configuration (optional)   时区信息和配置信息

                  src/        Source code (optional)源代码文件可以存储在这里,仅供参考

        /sys:Kernel and system information virtual filesystem 主要存储的是硬件信息、驱动、个别内核信息

        /proc:Kernel and process information virtual filesystem 看解释跟/sys一样,只是此文件目录存储的是实际标准的流程和系统信息,比如CPU、内存等信息

        /var:/var contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files. 

                主要包括一些缓存文件、管理的log文件、动态生成的临时文件、spoool、mail文件,也是比较重要的目录

文件和目录的命名规则:

1、文件名名称严格区分字符大小写;

2、文件可以使用除/以外任意字符;

3、文件名长度不能超过255字符;

4、以.开头的文件为隐藏文件;

.: 当前目录;

..: 当前目录的上一级目录;



以上是关于Linux基础之常用命令的主要内容,如果未能解决你的问题,请参考以下文章

大数据基础之常用Linux命令

linux基础之帮助文档---常用的命令

Python基础之Linux基础:远程管理常用命令

Linux基础之常用命令篇

Python学习——01Linux基础之常用基本命令

Python基础之Linux基础:文件和目录常用命令