一、linux中文件或文件目录的命名规则:
1.长度不能超过255个字符;
2.仅不能使用“/”当文件名;
3.严格区分大小写;
二、文件管理类命令
(一)文件管理:touch ; stat ;file ;文本编辑器nano ;rm ;cp ; mv ;install ; uninstall ;cat ; tac ;more ; less ; head ; tail ; cut ; jion ; sed ; awk ; sort ;uniq ; wc ;tr ;
(1)创建和删除文件:
touch:用于修改文件时间戳(默认参数是同时修改访问/修改/改变三个时间戳为当前时间,选项中可改功能,其中改变时间是必会改成当前时间的,因为时间戳也属于文件属性,必定当下被改)
touch PATH/XX.xxx:当PATH路径下XX文件不存在时创建xxx(文件类型)新的空文件XX(附带的功能)
stat:显示一个文件或文件系统的状态信息
file:查看文件内容类型
ELF:可链接的文件格式(linux只能识别这种格式的文件执行)
echo:“”内的内容打印到屏幕(有无双引号影响参数功能)
echo $变量:可获取变量值
backslash escape:反斜杠转义/逃逸(使反斜杠有意义)
如在echo命令中 echo -e "a \n b" (-e 使 \n 有换行意义,但注意 \* 只有在 “” 内才有意义) 如下例
printf:按格式显示字符(同样 \* 需要在 “” 内才有意义)
rm XX:删除XX文件
-i:interactive 交互式(管理员默认rm = rm -i,rm是rm -i的别名,避免误操作)
使用 \rm 可以使用 rm 本身的命令而不是 rm -i
-f:强行删除
-r:recursive 递归删除 可以用来删目录
(2)文本编辑器:
ASCII:美国国家标准信息交换代码 ,规定了基本的二进制位变化表示的不同的字符
如128个不同的字符需要7位数字 2^7=128 0-127 从 000 0000 - 111 1111
计算机最小储存单位是字节,1个字节是8位(二进制数字 0000 0000 - 1111 1111)
ASCII码是纯文本,文本编辑器是编辑纯ASCII码的,区别于word,word是字处理器,除了文本内容外,还存储了诸如颜色,大小,下划线等很多属性信息
汉字标准:GB18030,GBK,GB2312(国标)2^16=65536 转换器/转义集
Unicode(全球统一标准)
文本编辑器:如windows的Notepad++(可以识别仅$行结束符,其他windows文本编辑器如记事本可能识别出来仅一行,Notepad++可以正常识别),linux里的文本编辑器有 nano,也可以创建文件并能键入一些内容
linux中 ^ 表示control键
(3)复制和移动文件
cp:copy 复制文件 复制一个文件到一个文件,或 多个文件到一个目录(默认不会复制目录)
cp SRC(源)... DEST(目标)
cp 1 2 3 (只有最后一个是目标,此前都是源)
-r/R:recursive 递归复制,可以复制目录
-f:强行复制
在root权限下默认是cp -i命令的别名
-p:保留原有文件的权限,属主和属组以及时间戳
-a:archive,归档复制,保留原有文件所有属性,常用于备份
-L:(dereference)如果复制的是一个符号链接文件,不复制链接,复制链接指向的文件
-P:(no dereference)如果复制的是一个符号链接文件,保持链接
-d:同为保持链接
mv:move 移动文件,基本用法同 cp(但默认可以移动目录,不需要 -r)
mv SRC... DEST
mv a b:在当前目录下,将文件/目录a重命名为文件/目录b
mv -t DEST SRC...
install:复制文件并设置属性(默认不能复制目录,也不能通过 -r 实现)
-d DIRECTORY...:创建目录,可以多个
SRC DEST:复制文件并赋予使用权限
-m:指定权限
install -t DIRECTORY SRC...
(4)查看文本
cat:concatenate 将纯文本文件连接并逐个显示(全倾倒dump)文件显示为一行
-n:显示行号
-E:显示linux文本文件行结束符$(windows的文本文件行结束符是$+回车符,所以Linux的文本复制到windows中后全显示为一行,是因为linux的行结束符没有回车符windows不识别。同样windows的文本复制到Linux中来可能识别不了或者报错,是因为多了一个回车符)
tac:逆序显示文本
Ctrl+c键:终止/撤销命令
Shift+Pageup/Pagedown键:在终端翻屏(翻屏数有限)
more:从前向后分屏显示文本内容,翻到尾部自动退出
space键向后翻屏 b键向前(前提是没翻到尾部) enter键按行向后翻
less:查看文本,用法同man
head:查看文件前n行 tail:查看文件后n行(n默认是10)
-n:显示的行数 head -n 3 FILE(显示前3行)与前面的显示行数区分开 = head -3 FILE
tail -f:follow,查看文件尾部,并不退出,等待显示后续追加至此文件的新内容,起实时监控作用
(5)文本处理
cut:剪切文件按列显示,列与列之间由分隔符隔开
-d:delimiter 指定字段分隔符,默认是一个空格或 -d' '
-f:field 指定要显示的字段 -f 1 显示第一个字段 -f 1,3(离散表示法) 显示第一个和第三个字段 -f 1-3(连续表示法) 显示1到3段字符
(6)文本排序
sort:与cut一样,不影响原文件内容,只影响显示次序,默认按字符在ASCII码表中顺序升序进行
-n:按数值大小升序
-r:降序(默认了-n)
-t:指定字段分隔符,-t$'\t'表示以制表符TAB作为分隔符
-k:以哪个字段为关键字进行排序
-u:排序后相同的行只显示一次
-f:排序时忽略字符大小写
sort多字段排序:
# sort -k1 -k3 FILE 表示先按第一列排序,第一列相同时按第三列排序
# sort -k1.2,1.6 FILE 表示按第一列的第一个字符到第一列的第六个字符之间的字符排序,可以叠加选项如-n按数值升序等
# sort -k 1, 1: 按照第一列的值进行排序,如果只有一个1的话,相当于告诉sort从第一列开始直接到行尾排列
uniq:排序后报告或忽略相同且相邻的行 (因为要求相同且相邻因此一般在使用前要先用sort进行排序)
-d:只显示重复的行(显示一次)
-D:显示所有重复的行(重复几次显示几次)
-c:显示文件中行重复的次数
(7)文本统计
wc:word count 统计文件中1.行数 2.单词数 3.字节数(包括空白)
-l:只显示行数
-w:只显示单词数
-c:只显示字节数 -m:只显示字符数
-L:显示最长的一行包含多少字符
(8)字符处理命令
tr:转换或删除字符
-d:删除出现在字符集中的所有字符(按字符处理不是按单词处理)
(二)目录管理:ls ; cd ; pwd ; mkdir ; rmdir ; tree ;
pwd:查看现在所处的文件位置(printing working directory)
ls:列出指定路径下的所有子目录(文件夹)/文件(list) 列出的蓝色显示为目录,绿色为具有执行权限
-l :long 长格式,显示完整信息
依次解释 -l 之后显示的信息含义:
左1栏:10位:第1位.文件类型(不是内容类型而是文件本身属性类型),linux中有如下分类:
-:普通文件(f)file ; d:目录文件 ; b:块设备文件(block); c:字符设备文件(character); l:符号链接文件(symbolic link file)/软连接文件(类似windows的快捷方式);p:命令管道文件(pipe);s:套接字文件(socket)
后9位:文件权限(mode),每3位一组,每一组:rwx(读,写,执行三种权限),-表示无相应权限,自左而右分别是属主,属组,其他用户
左2栏:文件硬链接的次数
左3栏:文件的属主(owner)(文件创建者)
左4栏:文件的属组(group)
左5栏:文件大小(size),单位是字节
左6栏(6.7.8):时间戳(timestamp),每一个文件都有三个时间戳,最近一次被访问/修改/改变的时间,显示的是最近一次被修改的时间。访问:access;修改:modify(改变文件内容);改变:change(改变文件属性/metadata,元数据)。
右1栏:文件名
-h(human readable,人可读的):做单位转换,默认是b,转换成kb/Mb/Gb等
-a(all):显示以“.”开头的隐藏文件
.:表示当前目录(ls .:显示当前目录)
..:表示父目录(参考cd ..,返回上一级目录,ls ..:显示上一级目录)
-A:显示所有隐藏文件但不包含“.”和“..”
-d:显示目录自身属性
-i:显示文件索引节点号index node(inode) 每一个文件对应一个索引节点——一个号码
-r:逆序显示文件
-R:递归(recursive)显示,显示当前目录,子目录,子子目录(依此类推)内容(内容多的时候很消耗资源)
cd XX: 切换目录(change directory) 不能进入文件
家目录,主目录(home directory),在家目录中用户有所有操作权限,默认登录位置
cd不接参数:回到用户家目录 = cd ~
cd ~username:进入指定用户的家目录(只有管理员有权限进别的用户家目录,普通用户不可以)
cd -:在当前目录和前一次所在的目录之间来回切换)
cd ..:进入上层目录
mkdir:创建空目录,创建的是路径上的最后一个目录
mkdir /root/x/y/z:创建目录z,如果/x/y不存在则无法创建
-p:parent 父目录
mkdir -p x/y/z:如果z文件夹已存在则不创建,如果不存在则创建;如果/x/y不存在则创建
-v:verbose 详细信息
rmdir:删除目录(remove directory)只用于删除空目录
rmdir -p /x/y/z:x下只有y,y下只有z,删除z后y变空目录被删除,然后x变空目录也被删除,实现全部删除,多分枝的目录删到不为空的目录停止
tree:查看目录树
(三)、日期时间: date ;clock ;hwclock ;cal ;
date:时间管理(显示系统时间/修改)
date +%s:时间戳,显示格林威治时间自1970-01-01时起经过的秒数,意义是全球各地当地时间不同,但这个时间相同,用来计量全球统一时间,用来在数据库中记录精确时间而非当地时间
86400=一天的秒数
clock:显示硬件时间
hwclock:显示硬件时间(hardware clock)
hwclock -w:将系统时间同步到硬件区(将硬件时间改为系统时间)
hwclock -s:读取硬件时钟到系统(将系统时间改为硬件时间)
linux的时间实现方式:电脑上计量时间的设备是一个晶体振荡器,需电,主板上有一个纽扣电池。这个时间叫硬件时钟,rtc(real time clock,实时时钟),每次操作系统开机时都是从硬件系统中读取的当前时间,然后设置为当前系统时钟,此后靠内核以软件的方式模拟晶体振荡器,不再使用硬件时钟。所以Linux开机后有两个时钟,硬件时间和系统时间,系统时钟在CPU非常繁忙的时候可能会出现误差。硬件时间和系统时间不一定是一致的,就算一开始一致,可能走着走着就不一致了。可以单独修改其中任意一个。
ntp:时间服务器(network time protocol)主机时间走的非常准,客户机都可以以它的时间作为时钟,可以在本地时间不准的时候校准,需联网。
cal:calendar显示日历,可以具体年月
bc:计算器
scale=n 结果精度,结果保留几位小数(否则只显示整数位,非四舍五入)
quit退出