赞
踩
- vim ~/.bashrc
- alias v='vim'
在文件最后面加入别名设置,如:alias v=’vim’,保存后重新载入:
source ~/.bashrc
对所有用户都有效修改/etc目录下的bashrc文件
可以在用户根目录下新建一个文件.bash_aliases存放命令别名设置。
scale=2
- obase=16 #设置输出为16进制
- ibase=2 #设置输入为2进制
- 10^10
- sqrt(100)
cd
cd ~
cd -
cd ..
cd ../..
cd !$
cp (选项) (要复制的文件(可多个文件)) (复制到的目录)
--a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数
• 源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用
--debug 详细显示指令执行过程,便于排错或了解程序执行的情形。
--directisa 告诉clock指令不要通过/dev/rtc设备文件,直接对硬件时钟进行存取。这个参数适用于仅有ISA总线结构的老式电脑。
--getepoch 把系统核心内的硬件时钟新时代数值,呈现到标准输出设备。
-s / --hctosys Hardware Clock to System Time,把系统时间设成和硬件时钟一致。由于这个动作将会造成系统全面更新文件的存取时间,所以最好在系统启动时就执行它。
--set--date 设置硬件时钟的日期和时间。
--setepoch--epoch=<年份> 设置系统核心之硬件时钟的新时代数值,年份以四位树字表示。
--show 读取硬件时钟的时间,并将其呈现至标准输出设备。
--systohc System Time to Hardware Clock,将系统时间存回硬件时钟内。
--test 仅作测试,并不真的将时间写入硬件时钟或系统时间。
--utc 把硬件时钟上的时间时为CUT,有时也称为UTC或UCT。
--version 显示版本信息。
cal(选项)(参数)
-l:显示单月输出;
-3:显示临近三个月的日历;
-s:将星期日作为月的第一天;
-m:将星期一作为月的第一天;
-j:显示“julian”日期;
-y:显示当前年的日历。
当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。
cat(选项)(参数)
-n或--number:从1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
设m1和m2是当前目录下的两个文件
cat m1 (在屏幕上显示文件m1的内容)
cat m1 m2 (同时显示文件m1和m2的内容)
cat m1 m2 > file (将文件m1和m2合并后放入文件file中)
df命令 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
df(选项)(参数)
-a或--all:包含全部的文件系统;
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或--inodes:显示inode的信息;
-k或--kilobytes:指定区块大小为1024字节;
-l或--local:仅显示本地端的文件系统;
-m或--megabytes:指定区块大小为1048576字节;
--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或--portability:使用POSIX的输出格式;
--sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或--print-type:显示文件系统的类型;
-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
--help:显示帮助;
--version:显示版本信息。
很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。
date(选项)(参数)
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。
<+时间日期格式>:指定显示时使用的日期时间格式。
日期格式字符串列表
%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分(00~59)
%p 显示出上午或下午
%r 时间,12小时制
%s 从1970年1月1日0点到目前经历的秒数
%S 秒(00~59)
%T 时间(24小时制)(hh:mm:ss)
%X 显示时间的格式(%H时%M分%S秒)
%Z 按字母表排序的时区缩写
%a 星期名缩写
%A 星期名全称
%b 月名缩写
%B 月名全称
%c 日期和时间
%d 按月计的日期(01~31)
%D 日期(mm/dd/yy)
%h 和%b选项相同
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%x 显示日期的格式(mm/dd/yy)
%y 年份的最后两个数字(1999则是99)
%Y 年份(比如1970、1996等)
%C 世纪,通常为省略当前年份的后两位数字
%U 一年中的第几周,以周日为每星期第一天
%e 按月计的日期,添加空格,等于%_d
格式化输出:
- 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 -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
- 2009/12/12 00:00.00
apache格式转换:
- date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
- 2009-12-05 00:00.37
格式转换后时间游走:
- date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
- 2007-12-05 00:00.37
加减操作:
- 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" //这样可以设置全部时间
用于临时关闭或者激活指定的shell内部命令。
若要执行的文件名称与shell内建命令相同,可用enable -n来关闭shell内建命令。若不加-n选项,enable可重新启动关闭的命令。
linux shell命令执行时,shell总是先在自己的shell builtin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量$PATH指定的路径中依次去查找待执行的命令。因为了解了这一点,所以看起来好像没有办法编写用户自己的命令来替代shell builtin命令。幸运的是,有了enable命令我们就能做到了。
enable(选项)(参数)
- -n:关闭指定的内部命令;
- -a:显示所有激活的内部命令;
- -f:从指定文件中读取内部命令。
使用enable命令显示所有激活的内部命令:
- [root@localhost ~]# enable -a
- enable .
- enable :
- enable alias
- enable bg
- enable bind
- enable break
- enable builtin
- enable caller
- enable cd
- enable command
- enable compgen
- enable complete
- enable continue
- enable declare
- .....
echo(选项)(参数)
-e:激活转义字符。
使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
- \a 发出警告声;
- \b 删除前一个字符;
- \c 不产生进一步输出 (\c 后面的字符不会输出);
- \f 换行但光标仍旧停留在原来的位置;
- \n 换行且光标移至行首;
- \r 光标移至行首,但不换行;
- \t 插入tab;
- \v 与\f相同;
- \ 插入\字符;
- \nnn 插入nnn(八进制)所代表的ASCII字符;
使用echo命令关机:echo o > /proc/sysrq-trigger reboots
free(选项)
- -b # 以Byte为单位显示内存使用情况;
- -k # 以KB为单位显示内存使用情况;
- -m # 以MB为单位显示内存使用情况;
- -g # 以GB为单位显示内存使用情况。
- -o # 不显示缓冲区调节列;
- -s<间隔秒数> # 持续观察内存使用状况;
- -t # 显示内存总和列;
- -V # 显示版本信息
file(选项)(参数)
- -b:列出辨识结果时,不显示文件名称;
- -c:详细显示指令执行过程,便于排错或分析程序执行的情形;
- -f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
- -L:直接显示符号连接所指向的文件类别;
- -m<魔法数字文件>:指定魔法数字文件;
- -v:显示版本信息;
- -z:尝试去解读压缩文件的内容。
用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。
该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2。
历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制。
history(选项)(参数)
- -c:清空当前历史命令;
- -a:将历史命令缓冲区中命令写入历史命令文件中;
- -r:将历史命令文件中的命令读入当前历史命令缓冲区;
- -w:将当前历史命令缓冲区命令写入历史命令文件中。
hexdump [选项] [文件]...
- -n length 只格式化输入文件的前length个字节。
- -C 输出规范的十六进制和ASCII码。
- -b 单字节八进制显示。
- -c 单字节字符显示。
- -d 双字节十进制显示。
- -o 双字节八进制显示。
- -x 双字节十六进制显示。
- -s 从偏移量开始输出。
- -e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:'a/b "format1" "format2"'。
每个格式字符串由三部分组成,每个由空格分隔,第一个形如a/b,b表示对每b个输入字节应用format1格式,a表示对每a个输入字节应用format2格式,一般a>b,且b只能为1,2,4,另外a可以省略,省略则a=1。format1和format2中可以使用类似printf的格式字符串,如:
- %02d:两位十进制
- %03x:三位十六进制
- %02o:两位八进制
- %c:单个字符等
还有一些特殊的用法:
- %_ad:标记下一个输出字节的序号,用十进制表示。
- %_ax:标记下一个输出字节的序号,用十六进制表示。
- %_ao:标记下一个输出字节的序号,用八进制表示。
- %_p:对不能以常规字符显示的用 . 代替。
同一行如果要显示多个格式字符串,则可以跟多个-e选项。
实例
- hexdump -e '16/1 "%02X " " | "' -e '16/1 "%_p" "\n"' test
- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ................
- 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F | ................
- 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F | !"#$%&'()*+,-./
halt命令 用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。
halt(选项)
- -d:不要在wtmp中记录;
- -f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;
- -i:在halt之前,关闭全部的网络界面;
- -n:halt前,不用先执行sync;
- -p:halt之后,执行poweroff;
- -w:仅在wtmp中记录,而不实际结束系统。
- halt -p //关闭系统后关闭电源。
- halt -d //关闭系统,但不留下纪录。
hash显示、添加或清除哈希表
linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。
第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找。
hash –l 显示详细路径
-p 添加hash表
hash -p /bin/ls bb //添加hash表,可以看到我把ls命令重新写了一遍,改名为bb
用于显示和设置系统的主机名称。
环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。
如果需要永久修改主机名,需要同时修改/etc/hosts和/etc/sysconfig/network的相关内容。
hostname(选项)(参数)
- -v:详细信息模式;
- -a:显示主机别名;
- -d:显示DNS域名;
- -f:显示FQDN名称;
- -i:显示主机的ip地址;
- -s:显示短主机名称,在第一个点处截断;
- -y:显示NIS域名。
hostnamectl (选项)(参数)
- status 显示当前主机名设置
- set-hostname NAME 系统设置主机名
- set-icon-name NAME 设置主机图标名称
- set-chassis NAME 为主机设置机箱类型
- set-deployment NAME 为主机设置部署环境
- set-location NAME 设置主机位置
hwclock命令 是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。
在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
- --hctosys:将系统时钟调整为与目前的硬件时钟一致;
- --set --date=<日期与时间>:设定硬件时钟;
- --show:显示硬件时钟的时间与日期;
- --systohc:将硬件时钟调整为与目前的系统时钟一致;
init命令 是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1
init命令是Linux操作系统中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程。
init(选项)(参数)
-b:不执行相关脚本而直接进入单用户模式;
-s:切换到单用户模式。
运行等级:指定Linux系统要切换到的运行等级。
几个常用的命令
查看系统进程命令:ps -ef | head
查看init的配置文件:more /etc/inittab
查看系统当前运行的级别:runlevel
到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。你也可以在/etc/inittab中查看它的英文介绍。
- #0 停机(千万不能把initdefault 设置为0)
- #1 单用户模式
- #2 多用户,没有 NFS(和级别3相似,会停止部分服务)
- #3 完全多用户模式 文本界面
- #4 没有用到
- #5 x11(Xwindow)
- #6 重新启动(千万不要把initdefault 设置为6)
id命令 可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需要在你的控制台输入id。不带选项输入id会显示如下。结果会使用活跃用户。
当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在/etc/group文件中搜寻。如往常一样,你可以在控制台输入man id进入id的手册页来获取更多的详情。
id [-gGnru]--[help][--version][用户名称]
- -g或--group 显示用户所属群组的ID。
- -G或--groups 显示用户所属附加群组的ID。
- -n或--name 显示用户,所属群组或附加群组的名称。
- -r或--real 显示实际ID。
- -u或--user 显示用户ID。
- -help 显示帮助。
- -version 显示版本信息。
用户root的UID号码 = 0,GID号码 = 0。用户root是下面组的成员:
- • root组GID号是:0
- • bin组GID号是:1
- • daemon组GID号是:2
- • sys组GID号是:3
- • adm组GID号是:4
- • disk组GID号是:6
- • wheel组GID号是:10
##补充说明
ifconfig命令 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
ifconfig(参数)
- add<地址>:设置网络设备IPv6的ip地址;
- del<地址>:删除网络设备IPv6的IP地址;
- down:关闭指定的网络设备;
- <hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件地址;
- io_addr<I/O地址>:设置网络设备的I/O地址;
- irq<IRQ地址>:设置网络设备的IRQ;
- media<网络媒介类型>:设置网络设备的媒介类型;
- mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
- metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;
- mtu<字节>:设置网络设备的MTU;
- netmask<子网掩码>:设置网络设备的子网掩码;
- tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的promiscuous模式;
IP地址:指定网络设备的IP地址;
网络设备:指定网络设备的名称。
启动关闭指定网卡:
- ifconfig eth0 up
- ifconfig eth0 down
为网卡配置和删除IPv6地址:
- ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址
- ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址
用ifconfig修改MAC地址:
ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE
配置IP地址:
- [root@localhost ~]# ifconfig eth0 192.168.2.10
- [root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0
- [root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
启用和关闭arp协议:
- ifconfig eth0 arp #开启网卡eth0 的arp协议
- ifconfig eth0 -arp #关闭网卡eth0 的arp协议
设置最大传输单元:
ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes
其它实例
- ifconfig #处于激活状态的网络接口
- ifconfig -a #所有配置的网络接口,不论其是否激活
- ifconfig eth0 #显示eth0的网卡信息
ls [options] [ files_or_dirs ]
示例
- ls -a 包含隐藏文件
- ls -l 显示额外的信息
- ls -R 目录递归通过
- ls -ld 目录和符号链接信息
- ls -1 文件分行显示
- ls –S 按从大到小排序
- ls –t 按mtime排序
- ls –u 配合-t选项,显示并按atime从新到旧排序
- ls –U 按目录存放顺序显示
- ls –X 按文件后缀排序
lscpu [选项]
- -a, --all 打印在线和离线CPU(默认为-e)
- -b, --online 仅打印在线CPU(-p的默认值)
- -c, --offline 打印离线CPU
- -e, --extended[=<list>] 打印出一个扩展的可读格式
- -p, --parse[=<list>] 打印出可解析的格式
- -s, --sysroot <dir> 将指定的目录用作系统根目录
- -x, --hex 打印十六进制掩码,而不是CPU列表
- -h, --help 显示此帮助并退出
- -V, --version 输出版本信息并退出
参数
可用列:
- CPU 逻辑CPU编号
- CORE 逻辑核心号码
- SOCKET 逻辑套接字号
- NODE 逻辑NUMA节点号
- BOOK 逻辑书号
- CACHE 显示了如何在CPU之间共享高速缓存
- POLARIZATION 虚拟硬件上的CPU调度模式
- ADDRESS CPU的物理地址
- CONFIGURED 显示管理程序是否分配了CPU
- ONLINE 显示Linux是否正在使用CPU
lsblk命令 用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。这个包带了几个其它工具,如dmesg。要安装lsblk,请在此处下载util-linux包。Fedora用户可以通过命令sudo yum install util-linux-ng来安装该包。
- -a, --all 显示所有设备。
- -b, --bytes 以bytes方式显示设备大小。
- -d, --nodeps 不显示 slaves 或 holders。
- -D, --discard print discard capabilities。
- -e, --exclude <list> 排除设备 (default: RAM disks)。
- -f, --fs 显示文件系统信息。
- -h, --help 显示帮助信息。
- -i, --ascii use ascii characters only。
- -m, --perms 显示权限信息。
- -l, --list 使用列表格式显示。
- -n, --noheadings 不显示标题。
- -o, --output <list> 输出列。
- -P, --pairs 使用key="value"格式显示。
- -r, --raw 使用原始格式显示。
- -t, --topology 显示拓扑结构信息。
ln命令 用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。
注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。
- ln [选项]... [-T] 目标 链接名 (第一种格式)
- 或:ln [选项]... 目标 (第二种格式)
- 或:ln [选项]... 目标... 目录 (第三种格式)
- 或:ln [选项]... -t 目录 目标... (第四种格式)
- --backup[=CONTROL] 为每个已存在的目标文件创建备份文件
- -b 类似--backup,但不接受任何参数
- -d, -F, --directory 创建指向目录的硬链接(只适用于超级用户)
- -f, --force 强行删除任何已存在的目标文件
- -i, --interactive 覆盖既有文件之前先询问用户;
- -L, --logical 取消引用作为符号链接的目标
- -n, --no-dereference 把符号连接的目的目录视为一般文件;
- -P, --physical 直接将硬链接到符号链接
- -r, --relative 创建相对于链接位置的符号链接
- -s, --symbolic 对源文件建立符号连接,而非硬连接;
- -S, --suffix=SUFFIX 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它;
- -t, --target-directory=DIRECTORY 指定要在其中创建链接的DIRECTORY
- -T, --no-target-directory 将“LINK_NAME”视为常规文件
- -v, --verbose 打印每个链接文件的名称
- --help 显示此帮助信息并退出
- --version 显示版本信息并退出
参数
源文件:指定连接的源文件。如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件;
目标文件:指定源文件的目标连接文件。
none, off # 不进行备份(即使使用了--backup 选项)
numbered, t # 备份文件加上数字进行排序
existing, nil # 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never # 永远使用普通方式备份
将目录/usr/mengqc/mub1下的文件m2.c链接到目录/usr/liu下的文件a2.c
- cd /usr/mengqc
- ln /mub1/m2.c /usr/liu/a2.c
在执行ln命令之前,目录/usr/liu中不存在a2.c文件。执行ln之后,在/usr/liu目录中才有a2.c这一项,表明m2.c和a2.c链接起来(注意,二者在物理上是同一文件),利用ls -l命令可以看到链接数的变化。
在目录/usr/liu下建立一个符号链接文件abc,使它指向目录/usr/mengqc/mub1
ln -s /usr/mengqc/mub1 /usr/liu/abc
执行该命令后,/usr/mengqc/mub1代表的路径将存放在名为/usr/liu/abc的文件中。
Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对于某个文件的各链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。
文件链接有两种形式,即硬链接和符号链接。
建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。如图所示的m2.c文件就在目录mub1和liu中都建立了目录项。
创建硬链接后,己经存在的文件的I节点号(Inode)会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式的第二列中看到,无额外链接的文件的链接数为l。
在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。
对硬链接有如下限制:
不能对目录文件做硬链接。
不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中。
符号链接也称为软链接,是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。事实上,它只是一个文本文件(如图中的abc文件),其中包含它提供链接的另一个文件的路径名,如图中虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。
与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。
符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。
用ln -s命令建立符号链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行符号链接。而当源文件用相对路径时,如果当前的工作路径与要创建的符号链接文件所在路径不同,就不能进行链接。
符号链接保持了链接与源文件或目录之间的区别:
删除源文件或目录,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据。
在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是l。
符号链接的大小是其链接文件的路径名中的字节数。
当用ln -s命令列出文件时,可以看到符号链接名后有一个箭头指向源文件或目录,例如lrwxrwxrwx … 14 jun 20 10:20 /etc/motd->/original_file其中,表示“文件大小”的数字“14”恰好说明源文件名original_file由14个字符构成。
- -m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
- -p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
在当前目录中建立etc下的file目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
mkdir -p-m 777 etc/file
mv命令 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。 source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
mv(选项)(参数)
- --backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
- -b:当文件存在时,覆盖前,为其创建一个备份;
- -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
- -i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
- --strip-trailing-slashes:删除源文件中的斜杠“/”;
- -S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
- --target-directory=<目录>:指定源文件要移动到目标目录;
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
关闭记录会被写入到/var/log/wtmp日志文件中。
poweroff [选项]
- -n 关闭之前不同步
- -p 当被称为halt时关闭电源
- -v 增加输出,包括消息
- -q 降低输出错误唯一的消息
- -w 并不实际关闭系统,只是写入/var/log/wtmp文件中
- -f 强制关机,不调用shutdown
ping命令 用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
ping(选项)(参数)
- -d:使用Socket的SO_DEBUG功能;
- -c<完成次数>:设置完成要求回应的次数;
- -f:极限检测;
- -i<间隔秒数>:指定收发信息的间隔时间;
- -I<网络界面>:使用指定的网络界面送出数据包;
- -l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
- -n:只输出数值;
- -p<范本样式>:设置填满数据包的范本样式;
- -q:不显示指令执行过程,开头和结尾的相关信息除外;
- -r:忽略普通的Routing Table,直接将数据包送到远端主机上;
- -R:记录路由过程;
- -s<数据包大小>:设置数据包的大小;
- -t<存活数值>:设置存活数值TTL的大小;
- -v:详细显示指令的执行过程。
目的主机:指定发送ICMP报文的目的主机。
reboot [-dfinw]
补充说明:执行reboot指令可让系统停止运作,并重新开机。
参数:
- -d 重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有"-n"参数的效果。
- -f 强制重新开机,不调用shutdown指令的功能。
- -i 在重开机之前,先关闭所有网络界面。
- -n 重开机之前不检查是否有未结束的程序。
- -w 仅做测试,并不真的将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。
stat(选项)(参数)
- -L:支持符号连接;
- -f:显示文件系统状态而非文件状态;
- -t:以简洁方式输出信息;
- --help:显示指令的帮助信息;
- --version:显示指令的版本信息。
三个时间戳:
- access time 访问时间,atime,读取文件内容
- modify time 修改时间, mtime,改变文件内容(数据)
- change time 改变时间, ctime,元数据发生改变
scp(选项)(参数)
- -1:使用ssh协议版本1;
- -2:使用ssh协议版本2;
- -4:使用ipv4;
- -6:使用ipv6;
- -B:以批处理模式运行;
- -C:使用压缩;
- -F:指定ssh配置文件;
- -i:identity_file 从指定文件中读取传输时使用的密钥文件(例如亚马逊云pem),此参数直接传递给ssh;
- -l:指定宽带限制;
- -o:指定使用的ssh选项;
- -P:指定远程主机的端口号;
- -p:保留文件的最后修改时间,最后访问时间和权限模式;
- -q:不显示复制进度;
- -r:以递归方式复制。
shutdown(选项)(参数)
- -c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令;
- -f:重新启动时不执行fsck;
- -F:重新启动时执行fsck;
- -h:将系统关机;
- -k:只是送出信息给所有用户,但不会实际关机;
- -n:不调用init程序进行关机,而由shutdown自己进行;
- -r:shutdown之后重新启动;
- -t<秒数>:送出警告信息和删除信息之间要延迟多少秒。
[时间]:设置多久时间后执行shutdown指令;
[警告信息]:要传送给所有登入用户的信息。
指定现在立即关机:
shutdown -h now
指定5分钟后关机,同时送出警告信息给登入用户:
shutdown +5 "System will shutdown after 5 minutes"
source在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态。
source [文件名] [参数]
读取和执行/root/.bash_profile文件。
[root@localhost ~]# source ~/.bash_profile
timedatectl status #结果中RTC time就是硬件时钟的时间。
# timedatectl | grep Time
3.查看所有可用的时区:
timedatectl list-timezones
4.根据地理位置找到本地的时区:
- timedatectl list-timezones | egrep -o “Asia/B.*”
- timedatectl list-timezones | egrep -o “Europe/L.*”
- timedatectl list-timezones | egrep -o “America/N.*”
5.在Linux中设置本地时区,使用set-timezone开关:
timedatectl set-timezone “Asia/shagnhai”
6.可以使用timedatectl命令设置系统的日期和时间:
timedatectl set-time 15:58:30 #只设置时间的话可以使用set-time开关以及HH:MM:SS(小时,分,秒)的时间格式。
7.只设置日期的话可以使用set-time开关以及YY:MM:DD(年,月,日)的日期格式。
timedatectl set-time 20151120
8.设置日期和时间:
timedatectl set-time '16:10:40 2015-11-20'
9.设置硬件时钟为UTC可以使用 set-local-rtc boolean-value选:
- timedatectl | grep local #首先确定硬件时钟是否设置为本地时区:
- timedatectl set-local-rtc 1 #将硬件时钟设置为本地时区:
- timedatectl set-local-rtc 0 #将硬件时钟设置为UTC:
- -a:或--time=atime或--time=access或--time=use 只更改存取时间;
- -c:或--no-create 不建立任何文件;
- -d:<时间日期> 使用指定的日期时间,而非现在的时间;
- -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
- -m:或--time=mtime或--time=modify 只更该变动时间;
- -r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
- -t:<日期时间> 使用指定的日期时间,而非现在的时间;
- touch -c -t 05061803 test.php #将档案时间改为,5月6日18点3分
- touch -r abc.php test.php #将test.php档案改成跟abc.php一样
- touch -d "2 days ago" test.php #将test.php日期修改为2天以前
- alias:别名。
- keyword:关键字
- Shell保留字。
- function:函数
- Shell函数。
- builtin:内建命令
- Shell内建命令。
- file:文件,磁盘文件外部命令。
- unfound:没有找到。
type(选项)(参数)
- -t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;
- -p:如果给出的指令为外部指令,则显示其绝对路径;
- -a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。
uname命令 用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
uname(选项)
- -a或--all:显示全部的信息;
- -m或--machine:显示电脑类型;
- -n或-nodename:显示在网络上的主机名称;
- -r或--release:显示操作系统的发行编号;
- -s或--sysname:显示操作系统名称;
- -v:显示操作系统的版本;
- -p或--processor:输出处理器类型或"unknown";
- -i或--hardware-platform:输出硬件平台或"unknown";
- -o或--operating-system:输出操作系统名称;
- --help:显示帮助;
- --version:显示版本信息。
who(选项)(参数)
- -H或--heading: 显示各栏位的标题信息列;
- -i或-u或--idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如 果该用户已超过24小时没有任何动作,则标示出"old"字符串;
- -m: 此参数的效果和指定"am i"字符串相同;
- -q或--count: 只显示登入系统的帐号名称和总人数;
- -s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
- -w或-T或--mesg或--message或--writable:显示用户的信息状态栏;
- --help: 在线帮助;
- --version:显示版本信息。
which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。which 默认是找 PATH 内所规范的目录
which(选项)(参数)
- -n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
- -p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
- -w:指定输出时栏位的宽度;
- -V:显示版本信息。
whereis命令 用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。
但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
whereis(选项)(参数)
- -b:只查找二进制文件;
- -B<目录>:只在设置的目录下查找二进制文件;
- -f:不显示文件名前的路径名称;
- -m:只查找说明文件;
- -M<目录>:只在设置的目录下查找说明文件;
- -s:只查找原始代码文件;
- -S<目录>只在设置的目录下查找原始代码文件;
- -u:查找不包含指定类型的文件。
指令名:要查找的二进制程序、源文件和man手册页的指令名。
whatis是用于查询一个命令执行什么功能whatis命令在用catman -w命令创建的数据库中查找command参数指定的命令、系统调用、库函数或特殊文件名。whatis命令显示手册部分的页眉行。然后可以发出man命令以获取附加的信息。
whatis命令等同于使用man -f命令。
转载于:https://blog.51cto.com/9019400/2360392
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。