Linux命令分为内部命令和外部命令
内部命令:shell内置命令
外部命令:在文件系统的某个路径下有一个名称响应的可执行文件
★如果系统中命令有别名,可以使用\COMMAND使用原命令,使用alias查看系统中使用的命令别名
whatis :显示指定命令有哪些版本的帮户信息
which:显示命令路径
cd:切换当前目录
不加任何参数,切换到当前用户的家目录,等同于 ~
cd ~USERNAME 切换到制定用户的家目录
cd - 在当前目录和上一次目录之间来回切换
ls 列出目录内容
-a 列出所有内容,包括 . ..
-A 列出所有内容,除了. ..
-l 长格式显示
文件类型:
-:普通文件(f)
d:目录文件
b:快设备文件(block)
c:字符设备文件(character)
l:符号连接文件(symbolic link file)
p:管道文件(pipe)
s:套接字文件(socket )
文件权限:9位;每三位一组,rwx,没有-表示
文件硬链接次数
文件的属主属组
文件大小,默认单位字节
时间戳:显示最近一次被修改的时间
访问:access
修改:modify,文件内容发生改变
改变:change,元数据(metadata)改变
-h 以人类比较直观的单位显示
-d 显示目录自身的属性
-i 显示文件的索引号
-r 逆序显示文件
-R 递归显示目录及目录中的文件
type:显示指定命令属于那种类型,内置命令或者外部命令
date:显示或者设定系统日期与时间
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u 显示GMT。
格式化显示时间参数:
%% 显示%
%a 显示缩写的星期
%A 显示完整的星期
%b 显示缩写的月份
%B 显示完整的月份
%c 显示本地时间和日期
%C 显示世纪
%d 一个月的第几天01-31表示
%D 显示日期,同%m/%d/%y 02/25/16
%e 一个月的第几天1-31表示
%F 完全显示日期,同%Y-%m-%d 2016-02-25
%g 年份(yy)
%G 年份(yyyy)
%h 同%b
%H 小时(00..23)
%I 小时(01..12)
%j 一年的第几天
%k 小时(0..23)
%l 小时(1..12)
%m 月份(01..12)
%M 分钟(00..59)
%n 换行显示
%N 纳秒
%p AM或者PM
%P am或者pm
%r 12小时制时间(hh:mm:ss [AP]M)
%R 24小时制时间(hh:mm)
%s 从00:00:00 1970-01-01 UTC开始的秒数
%t 显示制表符
%T 24小时制时间(hh:mm:ss)
%u 一周的第几天(1..7); 1 表示星期一
%U 一年的第几周,周日为每周的第一天(00..53)
%V 一年的第几周,周一为每周的第一天 (01..53)
%w 一周的第几天 (0..6); 0 代表周日
%W 一年的第几周,周一为每周的第一天(00..53)
%x 日期(mm/dd/yy)
%X 时间(%H:%M:%S)
%y 年份(00..99)
%Y 年份 (1970…)
%z RFC-2822 风格数字格式时区(-0500)
%Z 时区(e.g., EDT), 无法确定时区则为空
具体用法
在设定时间方面
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
date -s “01:01:01 20080523″ //这样可以设置全部时间
date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
date -s “20080523 01:01:01″ //这样可以设置全部时间
显示时间
date +%Y%m%d //显示现在天年月日
date +%Y%m%d --date="+1 day" //显示后一天的日期
date +%Y%m%d --date="-1 day" //显示前一天的日期
date +%Y%m%d --date="-1 month" //显示上一月的日期
date +%Y%m%d --date="+1 month" //显示下一月的日期
date +%Y%m%d --date="-1 year" //显示前一年的日期
date +%Y%m%d --date="+1 year" //显示下一年的日期
hwclock 查询设置硬件时钟,clock 是hwclock的链接文件
-r|--show 查看硬件时间
-s|--hctosys 硬件时间同步到系统时间
-w|--systohc 系统时间同步到硬件时间
--adjust:hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟
--debug:显示hwclock执行时详细的信息
--directisa:hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟
--hctosys:将系统时钟调整为与目前的硬件时钟一致
--set --date=<日期与时间>:设定硬件时钟
--show:显示硬件时钟的时间与日期
--test:仅测试程序,而不会实际更改硬件时钟
--utc:若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作
echo 显示一段文字,默认自动打印换行符
-n 不要再结尾自动打印换行符
-e 启用 \
\\ 打印反斜杠本身
\a 发出警告声
\b 删除前一个字符
\c 最后不加换行符号
\f 换行但光标仍然停留在原来的位置
\n 换行切光标移至行首
\r 光标移至行首,但不换行
\t 插入tab
printf 格式化输出
目录管理命令
mkdir:创建空目录
-p 递归创建目录
-v 详细显示信息
-m|--mode=MODE 创建目录是设定权限
-Z 创建目录时设SELinux 安全上下文的CTX
mkdir /x/y/{a/c,b} 自动展开
{a,b}_{c,d}(展开分别为a_c,a_d,b_c,b_d)
tree:查看目录树
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I<范本样式> 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
rmdir:删除空目录
-p 递归删除空目录
touch:改变文件时间戳
-a 只改变访问时间
-c 如果文件不存在,则不建立文件
-d|--date=STRING 使用指定的日期时间,而非现在的时间 如"2004-02-29 16:21:42"
-m|--time=TIME 只改变变动时间
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期相同
-t 使用指定的日期时间,而非现在的时间 [[CC]YY]MMDDhhmm[.ss]
-h 会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者时,此选项才有用)
stat:查看文件或目录的详细信息
-L 如果是链接文件,则获取源文件信息
-Z 显示SELinux安全上下文信息
-f 显示文件所在的文件系统状态
-t|--terse 以简洁的形式打印输出信息(在没有改变输出格式的情况下):如下图第一幅图片
-c|--format=FORMAT 自定义输入格式,结尾有换行
--printf=FORMAT 自定义输入格式,结尾无换行,需手动添加
可选的文件信息输出格式
%a Access rights in octal 八进制格式的文件访问权限
%A Access rights in human readable form 可读形式访问权限(ls -l情况下显示的样子)
%b Number of blocks allocated (see %B) 分配的块数(单位参照%B的数值)
%B The size in bytes of each block reported by %b
每个块的大小(这个值是指硬盘上存储单元块的大小,与格式化的block块大小不同)
%d Device number in decimal 设备号(10进制)
%D Device number in hex 设备号(十六进制)
%f Raw mode in hex raw模式(十六进制,可以百度一下raw的意思)
%F File type 文件类型
%g Group ID of owner 文件所有者的组ID
%G Group name of owner 文件所有者的组名
%h Number of hard links 硬链接的数量(文件本身算1个)
%i Inode number inode号
%n File name 文件名
%N Quoted file name with dereference if symbolic link
取消软连接的文件名引用,变成普通字符串
%o I/O block size 系统格式化block的大小
%s Total size, in bytes 文件大小(单位byte)
%t Major device type in hex 主要设备类型(十六进制)
%T Minor device type in hex 次要设备类型(十六进制)
%u User ID of owner 所有者的用户ID
%U User name of owner 所有者的用户名
%x Time of last access 最后访问时间
%X Time of last access as seconds since Epoch 最后一次访问时间(大纪元秒)
%y Time of last modification 最后修改时间(内容改变)
%Y Time of last modification as seconds since Epoch 最后修改时间(内容改变)
%z Time of last change 最后改变时间(文件属性,权限所有者等,格式大纪元秒)
%Z Time of last change as seconds since Epoch
最后改变时间(文件属性,权限所有者等,格式大纪元秒)
stat -c "%a %A %b %B %d %D %f %F %g %G %h %i %n %N %o %s %t %T %u %U %x %X %y %Y %z %Z" file
可选的分区信息输出格式
%a Free blocks available to non-superuser 普通用户可用的block数量
%b Total data blocks in file system 分区的总数据块数量
%c Total file nodes in file system 文件系统的inode总数
%d Free file nodes in file system 空闲inode数量
%f Free blocks in file system 可用的block数量
%C Security context in SELinux selinux 安全上下文
%i File System ID in hex 分区ID(十六进制)
%l Maximum length of filenames 分区文件名最大长度
%n File name 文件名
%s Block size (for faster transfers) 块大小(都是系统block的大小)
%S Fundamental block size (for block counts) 基本块大小(都是系统block的大小)
%t Type in hex 文件系统类型(格式化的类型,十六进制)
%T Type in human readable form 文件系统类型(格式化的类型,可读形式)
stat -f -c "%a %b %c %d %f %C %i %l %n %s %S %t %T" file
cp:复制文件和目录,可以同时复制多个文件到一个目录中
-a, --archive 等于-dR --preserve=all 归档复制,常用于备份
--attributes-only 仅复制属性而不复制数据 --backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
-i, --interactive 覆盖前询问(使前面的 -n 选项失效)
-H 跟随源文件中的命令行符号链接
-l | --link 创建文件硬链接
-L |--dereference 复制链接指向的文件
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接,保持链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等
--sno-preserve=属性列表 不保留指定的文件属性
--parents 复制前在目标目录创建来源文件路径中的所有目录
-R, -r, --recursive 递归复制目录及其子目录内的所有内容
--reflink[=WHEN] 控制克隆/CoW 副本。
--remove-destination 尝试打开目标文件前先删除已存在的目的地文件 (相对于 --force 选项)
--sparse=WHEN 控制创建稀疏文件的方式
--strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
-s, --symbolic-link 只创建符号链接而不复制文件
-S, --suffix=后缀 自行指定备份文件的后缀
-t, --target-directory=目录 将所有参数指定的源文件/目录复制至目标目录
-T, --no-target-directory 将目标目录视作普通文件
-u, --update 只在源文件比目标文件新,或目标文件不存在时才进行复制
-v, --verbose 显示详细的进行步骤
-x, --one-file-system 不跨越文件系统进行操作
mv:移动或重命名文件
-b 若需覆盖文件,则覆盖前先行备份。
-f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i 若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u 若目标文件已经存在,且 source 比较新,才会更新(update)
-t --target-directory=DIRECTORY 指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-S, --suffix=后缀 自行指定备份文件的后缀
-T, --no-target-directory 将目标目录视作普通文件
install:复制文件和设置属性
--backup[=CONTROL] 为每个已存在的目的地文件进行备份
-b 类似 --backup,但不接受任何参数
-d,--directory 所有参数都作为目录处理,而且会创建指定目录的所有目录。
-D 创建<目的地>前的所有主目录,然后将<来源>复制至 <目的地>;在第一种使用格式中有用
-g,--group=组 自行设定所属组,而不是进程目前的所属组
-m,--mode=模 自行设定权限模式 (像chmod),而不是rwxr-xr-x
-o,--owner=所有者 自行设定所有者 (只适用于超级用户)
-p,--preserve-timestamps 以<来源>文件的访问/修改时间作为相应的目的地文件的时间属性
-s,--strip 用strip命令删除symbol table,只适用于第一及第二种使用格式
-S,--suffix=后缀 自行指定备份文件的<后缀>
文本处理命令
cat:连接并显示多个文件
-n 显示时输出行号
-e 等价于-vE
-E 在每行结束处显示$
-A --show-all 等价于 -vET
-b --number-noblank 对非空输出行编号
-s --squeeze-blank 有连续两行以上的空吧航,就代换为一行的空白行
-t 等价于-vT
-T --show-tabs 将跳格字符显示为 ^I
-v --show--nonprinting 使用 ^ 和 M- 引用,除了LFD和TAB之外
★在文本模式下使用shift+pageup|pagedown进行上下翻页(Linux有额定的缓存大小,只能缓存一定的 几屏)
tac:逆序显示文本
-b, --before 在行前而非行尾添加分隔标志
-r, --regex 将分隔标志视作正则表达式来解析
-s, --separator=字符串 使用指定字符串代替换行作为分隔标志
more 分屏显示,只能向下滚动
less 分屏显示,可以上下滚动
head:查看文件的前NUM行,默认10行
-c --bytes=[-]K 显示前多少字节数,默认单位为K,还可加上单位,默认是字节。1(byte) 、1k(1KB)、1m(1MB),可以为负数,意思为不打印最后的多少字节
-n --lines=[-] 显示前多少行,可以为负数,意思为不打印最后的多少行
-q --quiet --silent 获取多个文件的时候不显示文件名称头部
-v 获取多个文件的内容是显示文件名称头部,也是默认选项
tail:显示文件最后多少行
-c --bytes=[-]K 打印最后多少字节,默认单位为K,+NUM表示从多少字节开始显示文件
-n --lines=[ ] 打印最后多少行,默认10行,+NUM表示从多少行开始显示
-q --quiet --silent 获取多个文件的时候不显示文件名称头部
-v 获取多个文件的内容是显示文件名称头部,也是默认选项
-f 循环读取
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
cut:文本剪切
-d 指定字段分隔符,默认是一个空格
-f 指定要显示的字段,表示方法:-f 1,3 1-3
join:合并文本
sort:对显示的数据进行排序,默认根据ASCII升序
-n:根据数值大小降序
-r:逆序
-t:指定字段分隔符
-k #:指定以哪个字段进行排序
-u:排序后相同的行只显示一次
-f:忽略字符大小写
uniq:报告相同行,相同且相邻 为重复
-d 只显示重复的行
-D 显示所有重复的行
-c 显示行重复的次数
wc:文本统计,空白键 也是字符,显示的三个数分别是行数、单词数、字节数
-l 共多少行
-w 共多少单词
-c 共多少字节
-L 最长的一行共多少个字节
tr:转换或删除字符
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
tr中特定控制字符的不同表达方式
速记符含义八进制方式
\a Ctrl-G
铃声\007
\b Ctrl-H 退格符\010
\f Ctrl-L 走行换页\014
\n Ctrl-J 新行\012
\r Ctrl-M 回车\015
\t Ctrl-I tab键\011
\v Ctrl-X \030