首页 > 代码库 > Linux基础之常用命令(二)
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接口
使用示例:
[root@app1 ~]# 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) [root@app1 ~]# 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 [root@app1 ~]# 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 不能解释转义字符(命令默认选项)
使用示例:
[root@app1 ~]# echo ‘I wish nothing but the best for you‘ I wish nothing but the best for you [root@app1 ~]# echo -n ‘I wish nothing but the best for you‘ I wish nothing but the best for you[root@app1 ~]# [root@app1 ~]# echo -e ‘I wish nothing \n but the best for you‘ I wish nothing but the best for you [root@app1 ~]# echo -E ‘I wish nothing \n but the best for you‘ I wish nothing \n but the best for you [root@app1 ~]# 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 计算机串行接口连接的终端
使用示例:
[root@app1 ~]# tty /dev/pts/1
startX:打开图形界面
OPTIONS
-w 在工作站上强制启动X会话
-x 使用.xinitrc脚步启动会话
export:设置或显示环境变量
直接用export命令:
export PATH=$PATH:/usr/local/mysql/bin
想要使得开机时自动加载这个环境变量免除以后每次设置,可将其写入/etc/re.local
使用示例:
[root@app1 ~]# export PATH=$PATH:/usr/local/mysql/bin [root@app1 ~]#
pwd:显示当前目录路径
OPTIONS -L 当目录连接链接时,显示链接路径 -P 显示目录的物理路径
history:查看历史命令
OPTIONS -c 删除history列表中的历史记录 -a 附加当前会话中的记录到历史记录文件中去,默认~/.bash_history -r 从历史记录文件和附加的内容列表中读取记录
定制history的功能,可通过环境变量实现:
HISTSIZE:shell进程可保留的命令历史的条数;
HISTFILE:持久保存命令历史的文件;
.bash_history
HISTFILESIZE:命令历史文件的大小;
调用命令历史列表中的命令:
!#:再一次执行历史列表中的第#条命令;
!!:再一次执行上一条命令;
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;
调用上一条命令的最后一个参数:
快捷键:ESC, .
字符串:!$
使用示例:
[root@app1 ~]# echo $HISTSIZE 1000 [root@app1 ~]# HISTSIZE=2 [root@app1 ~]# echo $HISTSIZE 2 [root@app1 ~]# history 687 echo $HISTSIZE 688 history [root@localhost ~]# export HISTSIZE=0 ***限制命令历史记录的总条数,0表示禁用命令历史记录功能 [root@localhost ~]# export HISTFILE=~/.cmd_history ***设置命令历史记录的保存位置,默认是~/.bash_history [root@localhost ~]# export HISTIGNORE=‘pwd:ls:ls -ltr:‘ ***设置某些命令将不被保存到历史记录中 [root@localhost ~]# export HISTCONTROL=erasedups ***清理所有重复的命令历史条目 [root@localhost ~]# export HISTCONTROL=ignoredups ***剔除连续重复的命令历史条目 [root@localhost ~]# export HISTCONTROL=ignorespace ***不记录以空格开头的命令历史条目
shutdown:关闭系统
OPTIONS -H Halt the system(Halt同shutdown -h)关闭系统 -P 退出系统并关闭电源 -r 重启系统 -k 只发送关机警告并不真正关机 -c -t 在改变到其他runrever之前,告诉init多久以后关机 -n 不用init,而是自己来关机。不鼓励使用此选项
使用示例:
[root@localhost init.d]# shutdown -h +5(分钟) Shutdown scheduled for Thu 2016-09-15 09:18:47 CST, use ‘shutdown -c‘ to ca [root@localhost init.d]# shutdown -c Broadcast message from root@localhost (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命令,比如:
[root@localhost ~]# type cd ifconfig
cd is a shell builtin /* cd是SHELL的内置命令
ifconfig is hashed (/usr/sbin/ifconfig) /*ifconfig是外部命令
常用的获取命令帮助的途径有以下几个:
1、获取内置命令的帮助信息
获取内置命令的帮助信息的方式,比如help pwd,得到如下信息
[root@app1 ~]# 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
[root@app1 ~]# 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
命令指定其章节,如下:
[root@localhost ~]# man ifconfig
IFCONFIG(8) Linux System Administrator‘s Manual IFCONFIG(8)
[root@localhost ~]# 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基础之常用命令(二)