Linux系统上的命令使用格式
本文默认使用Linux7,如有命令属于Linux6我会注明。
-
命令的语法通用格式:
/]# COMMAND OPTIONS ARGUMENTS - 命令示例:/]#ls -l /etc/ssh
- COMMAND(命令):ls
命令分为两类:
内部命令(builtin):由shell程序的自带的命令,这类命令没有对应的可执行文件。
外部命令:独立的可执行程序文件,文件名即命令名。
发起一命令:请求内核将某个二进制程序运行为一个进程;命令(这里指外部命令)就是文件系统的指定路径下的二进制程序文件,发起命令就是运行指定路径的二进制程序文件。
命令的执行过程:静态的二进制程序文件→动态的进程
二进制程序文件未被运行时就是静态的,二进制程序文件被执行后就变成了动态的进程。
进程生命周期:此进程需要做的事做完了,进程就结束了,二进制程序文件又恢复到静态
- OPTIONS(选项):-l
选项有两种表现形式:
短选项:-C, 例如-l, -d
注意:有些命令的选项没有-;
如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
长选项:–word, 例如–help, –human-readable
注意:长选项不能合并;
注意:有些选项可以带参数,此称为选项参数;
- ARGUMENTS(参数):/etc/ssh/
参数是指命令的作用对象;命令对什么生效;
注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
例如:ls -ld /var /etc
12个常用命令介绍
详细介绍:
ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、date、hwclock。
ifconfig 命令:
命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。
-
语法格式
ifconfig [OPTIONS] [interface]
ifconfig [-v] interface [aftype] options | address …
-
选项和参数
-a :显示全部接口信息
-s :显示摘要信息(类似于 netstat -i)
interface:网卡接口代号
up: 启动指定网络设备/网卡。
down :关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
[-]arp :设置指定网卡是否支持ARP协议。
[-]promisc: 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据 包
[-]allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
mtu:<字节数> 设置网卡的最大传输单元 (bytes)
dstaddr: 设定一个远端地址,建立点对点通信
netmask:<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
add addr/prefixlen: 给指定网卡配置IPv6地址
del addr/prefixlen: 删除指定网卡的IPv6地址
tunel :建立隧道
[-]broadcast:<地址> 为指定网卡设置广播协议
[-]pointtopoint:<地址> 为网卡设置点对点通讯协议
hw class address:设置该接口的硬件地址
multicast: 为网卡设置组播标志
address: 为网卡设置IPv4地址
txqueuelen:<长度> 为网卡设置传输列队的长度
-
ifconfig密令常用参数和选项使用示例:
-a:显示所有网卡的详细信息
一般来说,直接输入 ifconfig 就会列出目前已经被启动的卡,不论这个卡是否有设置 IP,都会被显示出来。而如果是输入 ifconfig eno16777736,则会显示出这个接口的相关数据,而不管该接口是否启动。所以,如果你想要知道某个网卡的 Hardware Address,直接输入“ifconfig "网络接口代号"”即可。至于上述代码中出现的各项数据是这样的(数据排列由上而下、由左而右
- eth0:网卡的代号,也有 lo 这个 loopback。
- inet addr:IPv4 的 IP 地址,后续的Netmask 与Broadcast 分别代表的是子网掩码 与广播地址。
- inet6 addr:是 IPv6 的版本的 IP, prefixlen 64 代表子网掩码,
- ehter:网卡的硬件地址,习惯称为 MAC
- txqueuelen:代表用来传输数据的缓冲区的储存长度。
- RX:那一行代表的是网络由启动到目前为止的数据包接收情况,packets 代表数据包数、errors 代表数据包发生错误的数量、dropped 代表数据包由于有问题而遭丢弃的数量等。
- TX:与 RX 相反,为网络由启动到目前为止的传送情况。
- RX Bytes、TX Bytes:总传送、接收的字节总量。
- collisions:代表数据包碰撞的情况,如果发生太多次,表示你的网络状况不太好。
- Interrupt、Memory:网卡硬件的数据,IRQ 岔断与内存地址。(linux6)
通过观察上述的资料,大致上可以了解到你的网络情况,尤其是 RX、TX 内的 error 数量,以及是否发生严重的 collision 情况,都是需要注意的。
-s :显示摘要信息(类似于 netstat -i):只加-s显示全部网卡的摘要信息,后面还可以跟上具体的接口代码
ifconfig interface up或down启动或终止某网卡
- 开启网卡eno16777736 的arp协议:~]#ifconfig eno16777736 arp
- 关闭网卡eno16777736 的arp协议:~]#ifconfig eno16777736 -arp
- add addr/prefixlen: 给指定网卡配置IPv6地址:
~]#ifconfig eno16777736 add fe80::20c:29ff:fe97:4276/64
- del addr/prefixlen: 删除指定网卡的IPv6地址:
~]#ifconfig eno16777736 del fe80::20c:29ff:fe97:4276/64
- hw:设置接口硬件地址:~]#fconfig eno16777736 hw ether 00:AA:BB:CC:DD:EE
- address参数就是指输入IP地址的位置、netmask属于选项
~]# ifconfig eno16777736 192.168.120.56 netmask 255.255.255.0
- 给eno16777736网卡配置IP地址:192.168.120.56,加上子掩码:255.255.255.0,加上个广播地址: 192.168.120.255;broadcast(广播地址)属于选项:
~]#ifconfig eno16777736 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255
备注:用ifconfig命令配置的网卡信息,在网卡重启后或机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
echo 命令:
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法
-
语法格式
echo [SHORT-OPTION]… [STRING]…
echo LONG-OPTION
-
选项和参数
-n: 显示结果并不进行换行;结果与命令提示符在同行
-e:让转义符生效;
使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
STRING(字符串)可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换;引号内是什么就输出什么
~]# echo '$SHELL'
输出内容:$SHELL
双引号:弱引用,变量引用会被替换;
~]# echo "$SHELL"
输出内容: /bin/bash
注意:变量引用的正规符号方式:${name} 但是花括号可以省略。
-
echo命令使用示例:
用echo命令打印带有色彩的文字:
文字色:
echo -e "\e[1;31mhello what is your name\e[0m"
- \e[1;31m 将颜色设置为红色
- \e[0m 将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
echo -e "\e[1;42mThis is greed\e[0m"
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
文字闪动:
echo -e "\033[37;31;5mTHis is Linux\033[39;49;0m"
红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐
tty 命令:
tty命令用于显示终端机连接标准输入设备的文件名称。
在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。
-
语法格式
tty [OPTION]…
-
选项和参数
- -s或–silent或–quiet 不显示任何信息,只回传状态代码。
- –help 在线帮助。
- –version 显示版本信息。
~]#tty输出结果:
- /dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。目前只有在单用户模式下,才允许用户登录控制台。
- /dev/ttyS*是串行终端设备。
- /dev/pty*即伪终端,所谓伪终端是逻辑上的终端设备,多用于模拟终端程序。例如,我们在X Window下打开的终端,以及我们在Windows使用telnet 或ssh等方式登录Linux主机,此时均在使用pty设备(准确的说应该pty从设备)。
- /dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台,例如当使用ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前的控制台则指向/dev/tty2。
starx 命令:
startx命令用来启动X Window,实际上启动X Window的程序为xinit。
-
语法格式
startx [OPTION]…
-
选项和参数
要在工作站上或 X 终端上启动 X 会话,请输入:
startx
要在工作站上强制启动 X 会话,请输入:
startx -w
要为 X 终端启动 X 会话,并注销用户的 Telnet 会话,请输入:
startx; kill -9 $$
要使用 .xinitrc 脚本启动 X 会话,请输入:
startx -x .xinitrc
要使用 mwm 窗口管理器启动 X 会话,请输入:
startx -m mwm
但是,如果找到启动脚本文件,则忽略 -w 选项。
在启动脚本中,启动窗口管理器、装入 X 资源以及产生 X 客户机是用户的责任。以下是 .xsession 脚本的一个示例。
#!/bin/csh
(mwm &)
xrdb -load .Xdefaults
(xclock -g 75×75+0+0 &)
(xbiff -g 75×75+101-0 &)
if ("/dev/lft*" == "tty") then
aixterm -g 80×24+0+0 +ut -C -T hostname
else
aixterm -g 80×24+0+0 +ut -T hostname
endif
对于工作站,startup 脚本中的最后一行应该是前台 aixterm 命令,该命令带有 -C 选项表示控制台信息。
对于 X 终端,startup 脚本中的最后一行应该是不带有 -C 选项的前台 aixterm 命令。另外,由于某些 X 终端在关闭时不终止 telnet 会话,所以用户必须在使用热键切换至 X 会话前退出当前的 telnet 会话。
/usr/lib/X11/xdm/Xsession 文件中的 xdm 命令也可以使用 startx 命令。这为 xdm 命令提供了 startx 命令的功能。
pwd命令:
pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。
-
使用示例:
[root@localhost tmp]# pwd
/etc/tmp
history命令:
history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件
-
语法格式
history:查看当前shell进程的内存中所有历史命令。
history [-c] [-d 偏移量] [n]
history -anrw [文件名]
history -ps 参数 [参数…]
-
选项和参数
-c: 清空命令历史;
-d 行数:删除指定命令历史,显示在命令历史列表中的行数
-n:在-d+位置然后加上-n参数代表从指定位置开始往后删除多少条
~]#history -d 756 4 将内存的历史命令中,从756条开始往后删除4条,含756条。
-r: 从文件读取命令历史至历史列表中;
-w:把历史列表中的命令追加至历史文件中;
history #(数字):显示最近的#条命令;
持久保存命令历史的文件;
.bash_history 此文件对每个用户来说都在自己的家目录下,与其他用户无关联。
cat .bash_history查看此文件
注意:默认只有在登出或正常关机的情况(结束当前进程)才会将内存中的命令存储在.bash_history文件中。 每个用户登录时shell都会将.bash_history文件内的历史命令加载到内存中,新输入的命令会补充到内存中。
特殊示例:内存和文件中都规定最大条数1000,此时文件中以存储800条,而内存中新增加命令历史300条,在用户登出时,内存中新增加的300条会存储在文件中,而此时文件中的前100条被删除。
-
history关于变量的详解
定制history的功能,可通过环境变量实现:
echo $HISTSIZE 查看当前内存中规划的命令历史存储的最大条数。
echo $HISTFILESIZE 查看当前命令历史存储文件中规划的命令历史存储的最大条数。
控制命令历史记录的方式:
环境变量:HISTCONTROL
[root@localhost ~]# echo $HISTCONTROL
ignoredups
ignoredups:忽略重复的命令;内容一致且连续
ignorespace:忽略以空白字符开头的命令;
ignoreboth:以上两者同时生效;
修改变量的值:此修改只对当前shell进程有效
NAME='VALUE' 如:HISTCONTROL=ignorespace
shutdown命令:
命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。
-
语法格式
shutdown [-t seconds] [-rkhncfF] time [message]
-
选项
-t : seconds : 设定在几秒钟之后进行关机程序
-k : 并不会真的关机,只是将警告讯息传送给所有只用者
-r : 关机后重新开机
-h : 关机后停机
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c : 取消目前已经进行中的关机动作
-f : 关机时,不做 fcsk 动作(检查并修复文件系统)
-F : 关机时,强迫进行 fsck 动作
-
参数
time : 设置多久时间后执行shutdown指令
message : 传送给所有登入用户的警告讯息
-
使用示例:
- 指定现在立即关机:
shutdown now
- 指定5分钟后关机,同时送出警告信息给登入用户:
shutdown +5 "System will shutdown after 5 minutes"
poweroff命令:
命令用来关闭计算机操作系统并且切断系统电源
-
语法格式
poweroff [OPTION]
-
选项
-n:关闭操作系统时不执行sync操作(记忆体资料写回硬盘的动作–同步);
-w:只是把记录写到 /var/log/wtmp 档案里;
-d:关闭操作系统时,不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) -f : 强迫关机;-f: 强制关闭操作系统;
-i:关闭操作系统之前关闭所有的网络接口;
-h:关闭操作系统之前将系统中所有的硬件设置为备用模式
如果确认系统中已经没有用户存在且所有数据都已保存,需要立即关闭系统,可以使用poweroff命令。
注意:poweroff在关闭计算机操作系统之后,最后还会发送ACPI指令,通知电源,最后切断电源供应,当然路由器等嵌入系统不支持ACPI的,所以这个无效。
reboot命令:
命令用来重新启动正在运行的Linux操作系统
-
语法格式
reboot [OPTION]
-
选项
-d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果;
-f:强制重新开机,不调用shutdown指令的功能;
-i:在重开机之前,先关闭所有网络界面;
-n:重开机之前不检查是否有未结束的程序;
-w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。
注意:若系统的 runlevel 为 0 或 6 ,则重新开机,否则以 shutdown 指令(加上 -r 参数)来取代
date命令:
命令是显示或设置系统时间与日期。
很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。
-
语法格式
date [OPTION]… [+FORMAT]
date [MMDDhhmm[[CC]YY][.ss]] -
选项:
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
–help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
–version : 显示版本编号
-
+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)
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。
当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 – 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
注意:在多个format之间采用-分隔,若使用space分隔则需要将所有format加上“”使其作为一个整体。
-
示例:
格式化输出:
date +"%Y-%m-%d"
2009-12-07
输出昨天日期:
date -d "1 day ago" +"%Y-%m-%d"
2012-11-19
2秒后输出:
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
传说中的 1234567890 秒:
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%M:%S"
2009-02-13 23:02:30
加减操作:
date +%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 month" +%Y%m%d //显示下一月的日期 date -d "-1 year" +%Y%m%d //显示前一年的日期 date -d "+1 year" +%Y%m%d //显示下一年的日期
设定时间:
date -s //设置当前时间,只有root权限才能设置,其他只能查看 date -s 20120523 //设置成20120523,这样会把具体时间设置成空00:00:00 date -s 01:01:01 //设置具体时间,不会对日期做更改 date -s "01:01:01 2012-05-23" //这样可以设置全部时间 date -s "01:01:01 20120523" //这样可以设置全部时间 date -s "2012-05-23 01:01:01" //这样可以设置全部时间 date -s "20120523 01:01:01" //这样可以设置全部时间
有时需要检查一组命令花费的时间,举例:
#!/bin/bash start=$(date +%s) nmap man.linuxde.net &> /dev/null end=$(date +%s) difference=$(( end - start )) echo $difference seconds
hwclock命令:
命令是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。
在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
-
语法格式
hwclock [function] [option…]
-
function:
–adjust: hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用–adjust参数,可使 hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。
–debug : 显示hwclock执行时详细的信息。
–directisa: hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存 取硬件时钟。
-s: –hctosys将系统时钟调整为与目前的硬件时钟一致。
–set –date=<日期与时间> : 设定硬件时钟。
-r: –show 显示硬件时钟的时间与日期。
-w: –systohc 将硬件时钟调整为与目前的系统时钟一致。
–test: 仅测试程序,而不会实际更改硬件时钟。
–utc: 若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。
-V: –version 显示版本信息
-
选项:
-u:–utc 硬件时钟保持为 UTC 时间
–localtime: 硬件时钟保持为本地时间
-f: –rtc <文件> 代替默认文件的特殊 /dev/… 文件
–directisa: 直接访问 ISA 总线,而非 /dev/rtc
–badyear: 忽略 RTC 年份(由于 BIOS 损坏)
–date: <时间> 指定要设置的硬件时钟时间
–epoch: <年> 指定作为硬件纪元(epoch)值起始的年份
–noadjfile: 不访问 /etc/adjtime;需要使用 –utc 或 –localtime 选项
–adjfile: <文件> 指定调整文件的路径;默认为 /etc/adjtime
–test: 不更新,只显示将进行什么操作
-D: –debug 调试模式
-
示例:
先设定硬件时间为2017-01-01 21:33:33,再将硬件时间同步到系统时间上,然后再反向操作。
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104520
评论列表(1条)
统一回复下,写的很棒,如果可以不把黑屏截上来会更棒,希望可以再接再厉,继续保持