1、线上查询及帮助命令
man | 查看命令帮助,命令的词典,更复杂的还有info,但不常用。 |
---|---|
help | 查看Linux内置命令的帮助。 |
示例:
//man
2、文件和目录操作命令
cd | 全拼change directory,功能是从当前工作目录切换到指定的工作目录。 |
---|---|
cp | 全拼 copy,其功能为复杂文件或目录。 |
mkdir | 全拼 makedirectories,其功能是创建目录。 |
mv | 全拼 move,其功能是移动或重命名文件。 |
pwd | 全拼 print working directory,其功能是显示当前工作,目录的绝对路径。 |
rename | 用于重命名文件 |
rm | 全拼 remove,其功能是删除一个或多个文件或目录。 |
rmdir | 全拼 remove empty directories,功能是删除空目录。 |
touch | 创建新的空文件,改变已有文件的时间戳属性。 |
tree | 功能是以树形结构显示目录下的内容。 |
chattr | 改变文件的扩展属性。 |
lsattr | 查看文件扩展属性。 |
file | 显示文件的类型 |
md5sum | 计算和校验文件的 MD5 值 |
2.1)cd 切换用户当前工作目录
//选项:
-L (默认值)如果要切换到的目标目录是一个符号连接,那么切换到符号连接的目录。
-P 如果要切换到的目标目录是一个符号连接,那么切换到它指向的物理位置目录。
- 当前工作目录将被切换到环境变量OLDPWD所表示的目录,也就是前一个工作目录。
实例:
cd # 进入用户主目录;
cd / # 进入根目录
cd ~ # 进入用户主目录;
cd .. # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. # 返回上两级目录;
cd !$ # 把上个命令的参数作为cd参数使用。
2.2)cp 切换用户当前工作目录
语法:cp(选项)(参数)
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
实例:
//将文件file复制到目录 /usr/men/tmp 下,并改名为file1
[root@host01 ~]# cp file /usr/men/tmp/file1
//将目录 /usr/men 下的所有文件及其子目录复制到目录 /usr/zh 中
[root@host01 ~]# cp -r /usr/men /usr/zh
//交互式地将目录 /usr/men 中的以m打头的所有.c文件复制到目录 /usr/zh 中
[root@host01 ~]# cp -i /usr/men m*.c /usr/zh
2.3)mkdir 用来创建目录
语法:mkdir (选项)(参数)
选项:
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。
目录:指定要创建的目录列表,多个目录之间用空格隔开。
实例:
//在目录 /usr/meng 下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问
[root@noe3 ~]# mkdir -mp 700 /usr/meng/test
//在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执 行,其他用户无权访问
[root@noe3 ~]# mkdir -p-m 750 bin/os_1
2.4)mv 用来对文件或目录重新命名
补充说明:
mv命令 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或
目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的
内容将被覆盖。
语法:mv(选项)(参数)
选项:
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
实例:
//将目录 /usr/men 中的所有文件移到当前目录(用 . 表示)中:
[root@noe3 ~]# mv /usr/men/* .
//移动文件
[root@noe3 ~]# mv file_1.txt /home/office/
//移动多个文件
[root@noe3 ~]# mv file_2.txt file_3.txt file_4.txt /home/office/
[root@noe3 ~]# mv *.txt /home/office/
//重命名文件或目录
[root@noe3 ~]# mv file_1.txt file_2.txt # 将文件file_1.txt改名为file_2.txt
//源文件比目标文件新时才执行更新
[root@noe3 ~]# mv -uv *.txt /home/office
//不要覆盖任何已存在的文件
[root@noe3 ~]# mv -vn *.txt /home/office
//复制时创建备份
[root@noe3 ~]# mv -bv *.txt /home/office
//无条件覆盖已经存在的文件
[root@noe3 ~]# mv -f *.txt /home/office
2.5)pwd 显示当前工作目录的绝对路径
选项:
-L (默认值)打印环境变量"$PWD"的值,可能为符号链接。
-P 打印当前工作目录的物理位置。
实例:
//打印当前所在位置
[root@host01 ~]# pwd
/root
2.6)rename 用字符串替换的方式批量改变文件名
rename命令存在两个版本用法上有所区别 很少用
C语言版本, 支持通配符
[常用通配符说明]
? 表示一个任意字符
* 表示一个或一串任意字符
Perl版本, 支持正则表达式
[常用正则表达式符号说明]
^ 匹配输入的开始位置
$ 匹配输入的结尾
. 匹配除换行符外的任意字符
+ 匹配前一个字符一次或多次
例如,"zo+"可以匹配"zoo",但不匹配"z" 12. [a-z] 表示某个范围内的字符,例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。 13. [^m-z] 否定的字符区间。与不在指定区间内的字符匹配。
//区别方法:
如果返回结果中包含 util-linux , 说明是C语言版本, 反之是Perl版本
实例:
//把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名 中的foo被替换为foo0。
>> rename foo foo0 foo?
2.7)rm 用于删除给定的文件和目录
rm 命令 可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前, 最好再看一下文件的内容,确定是否真要删除。
语法:rm (选项)(参数)
选项:
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上 -r 或者 -R 选项。
实例:
//1、删除当前目录下除隐含文件外的所有文件和子目录
[root@host01 ~]# rm -r *
//2、rm 命令删除当前目录下的 package-lock.json 文件
[root@host01 ~]# find . -name "package-lock.json" -exec rm -rf {} \;
//3、rm 命令删除当前目录下的 node_modules 目录
[root@host01 ~]# find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
2.8)rmdir 用来删除空目录
语法:rm (选项)(参数)
选项:
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
-v或-verboes:显示命令的详细执行过程;
--help:显示命令的帮助信息;
--version:显示命令的版本信息。
实例:
//1、将工作目录下,名为 www 的子目录删除 :
[root@host01 ~]# rmdir www
//2、在工作目录下的 www 目录中,删除名为 Test 的子目录。若 Test 删除后,www 目录成为空目 录,则 www 亦予删除。
[root@host01 ~]# rmdir -p www/Test
2.9)touch 创建新的空文件
说明:
touch命令 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它
们的数据将原封不动地保留下来;二是用来创建新的空文件。
语法:touch(选项)(参数)
选项:
-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间> 使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。
实例:
//1、在当前目录下建立一个空文件ex2,然后,利用 ls -l 命令可以发现文件ex2的大小为0,表示它是 空文件。
[root@host01 ~]# touch ex2
2.10)tree 树状图列出目录的内容
说明:
tree命令 以树状图列出目录的内容。 执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。
语法:tree(选项)(参数)
选项:
-a # 显示所有文件和目录。
-d # 显示目录名称而非文件。
-l # 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-f # 在每个文件或目录之前,显示完整的相对路径名称。
-x # 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件 系统上,则将该目录予以排除在寻找范围外。
-L level # 限制目录显示层级。
-s # 列出文件和目录大小。
-D # 列出文件或目录的更改时间。
实例:
1、列出目录 /private/ 第一级文件名
[root@host01 ~]# tree /private/ -L 1
2、忽略文件夹
[root@host01 ~]# tree -I node_modules #忽略当前目录文件夹node_modules
[root@host01 ~]# tree -P node_modules #列出当前目录文件夹node_modules的目录结构
[root@host01 ~]# tree -P node_modules -L 2 #显示目录node_modules两层的目录树结构
[root@host01 ~]# tree -L 2 > /home/www/tree.txt #当前目录结果存到 tree.txt 文件中
3、忽略多个文件夹
[root@host01 ~]# tree -I 'node_modules|icon|font' -L 2
4、非树状结构列出目录 /private/ 下的所有文件
[root@host01 ~]# tree -if /private/
2.10)chattr 用来改变文件属性
说明:
chattr命令 用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属 性共有以下8种模式:
语法
chattr(选项)
选项
a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。
-R:递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号>:设置文件或目录版本;
-V:显示指令执行过程;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性
实例
//用chattr命令防止系统某个关键文件被修改;
[root@host01 ~]# ls
test01
[root@host01 ~]# chattr +i /root/test01
//然后试一下rm、mv、rename等命令操作于该文件,都是得到Operation not permitted的结果。
[root@host01 ~]# rm -rf /root/test01
rm: cannot remove ‘/root/test01/foo09’: Permission denied
//让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作:
[root@host01 ~]# chattr +a /root/test01/
[root@host01 ~]# touch /root/test01/test.txt
[root@host01 ~]# ls test01/
fo0 foo01 test.txt