Linux常用命令(博客地图):https://blog.csdn.net/sysukehan/article/details/105804511
1、切换目录cd(Change Directory)
cd [相对路径或绝对路径]
相对路径:路径的写法不是由根目录/写起,如cd opt
绝对路径:路径的写法一定由根目录/写起,如cd /etc/ssh
.代表此层目录,..代表上一层目录,~代表“目前用户身份”所在的主文件夹。
回到上一级目录:cd ..
回到上三级目录:cd ../../../
2、显示当前目录pwd(Print Working Directory)
3、列出目录下的内容ls
ls 目录名
目录名可以是相对路径也可以是绝对路径,不加目录名列出的是当前所在文件夹下的内容。
参数:
-a:全部文件,连同隐藏文件(开头为.的文件)一起列出来。
-l:列出长数据串,包含文件的属性与权限等数据。
-h:将文件容量以人类较易读的方式(例如GB,KB等)列出来。
-i:列出inode号码。
-n:列出UID与GID,而非用户与用户组的名称。
-S:以文件容量大小排序,而不是用文件名排序。
-t:依时间排序,而不是用文件名。
ls -al /opt
ls不加参数l的情况下文件或目录名会横向排列。
4、新建文件及目录
新建目录:mkdir
mkdir newDir
新建文件:touch
touch newFile
touch /opt/newFile
touch还可以用来修改已有文件的时间,每个文件有三个时间:
modification time(mtime):
当文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。
status time(stime):
当该文件的“状态”(status)改变时,就会更新这个时间。举例来说,如果权限和属性被更改了,就会更新这个时间。
access time(atime):
当“该文件的内容被取用”时,就会更新这个读取时间(access)。举例来说,使用cat去读取/etc/ssh/ssh_config,就会更新该文件的atime了。
默认情况下,ls -l显示的是文件的mtime。
touch [-acm] filename
参数:
-a:仅修改访问时间;
-c:仅修改文件的时间,若该文件不存在则不创建新文件;
-m:仅修改mtime;
不加参数在文件存在的情况下会修改文件的三个时间。文件不存在的情况下创建文件。
Linux文件长度限制:
1)单一文件或目录的最大容许文件名为255个字符。
2)包含完整路径名称及目录(/)的完整文件名为4096个字符。
5、文件及目录属性
关注第一列的十个字符。
第一个字符代表类型,有以下几种:
d:目录
-:文件(含纯文本文件(ASCII)、二进制文件(binary)、数据格式文件(data))
l:链接文件
b:块(block)设备文件
c:字符(character)设备文件
s:套接字(sockets)
p:管道(FIFO,pipe)
后九位分为三组,为rwx三个参数的组合。r代表可读,w代表可写,x代表可执行。
第一组为“文件所有者的权限”,第二组为“同用户组的权限”,第三组为“其他非本用户组的权限”。
r:表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以你就可以利用ls这个命令将该目录的内容列表显示出来。
w:表示具有更改该目录结构列表的权限:
1)新建新的文件与目录;
2)删除已经存在的文件与目录(不论该文件的权限为何);
3)将已存在的文件或目录进行重命名;
4)转移该目录内的文件、目录位置;
x:代表用户能否进入该目录成为工作目录。
chgrp:改变文件所属用户组
chgrp 组名 文件或目录
如:chgrp kehan newFile(图中第三列是所有者名,第四列是组名)
chown:改变文件所有者
chown 账号名称 文件或目录
chown 账号名称:组名 文件或目录
如:
chown root:root newFile
chown kehan newDir
chmod:改变文件或目录的权限
chmod 750 newFile
以上命令均可加-R参数,意思是进行递归的持续更改,即连同子目录下的所有文件、目录一起修改。如:chmod -R root:root newDir
chmod命令中修改权限用的是数字750,前面提过rwx分为三组,每一组的数字和占一位数字,r=4,w=2,x=1,因此750意思是rwxr-x---,而rw-r-----的数字表示为640.
6、文件隐藏属性
查看文件隐藏属性:lsattr filename
常见的几个属性:
a:当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性;
i:让一个文件“不能被删除、改名,而且设置连接也无法写入或添加数据”,对于系统安全性有相当大的帮助,只有root能设置此属性;
修改文件的隐藏属性:chattr [+-=][ai] filename
参数:
+:增加某一个特殊参数,其他原本存在参数则不动;
-:删除某一个特殊参数,其他原本存在参数则不动;
=:仅有后面接的参数;
如:chattr +i newFile
这时候尝试去删除这个文件,会报错。
把i属性去掉:chattr -i newFile
再尝试删除,删除成功。
7、拷贝文件(夹)
拷贝文件:cp sourceFile targetFile
cp ssh_config ssh_config_bak
拷贝文件到指定目录下,文件名不变:cp ssh_config /opt
拷贝文件夹cp -r sourceDir targetDir
cp -r /etc/ssh /opt
如果targetDir文件夹存在,则把sourceDir文件夹拷贝一份放到targetDir目录下。如果targetDir不存在,会创建一个新文件夹,名称为targetDir,内容是sourceDir的内容。相当于把sourceDir的内容拷贝过去后重命名为targetDir。
如cp -r /etc/ssh /opt/test
因为/opt/test在拷贝文件夹之前并不存在,所以相当于把ssh目录拷贝到/opt目录下后重命名为test。
cp命令几个常用选项:
-d:若源文件为链接文件(link file),则复制链接文件属性而非文件本身的属性。
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)。
-r:递归持续复制,用于目录的复制行为(常用)。
-a:相当于-pdr
拷贝多个文件或目录到指定目录下:
cp [options] source1 source2 source3 ... directory
在这种情况下最后一个一定是一个已存在的目录路径。
8、移动文件(夹)
mv source target
同一目录下移动文件或文件夹,相当于重命名。
mv newDir newDir2
不同目录下:
1)移动文件,如果目标存在且是文件夹,则把文件移动到指定文件夹下。如果目标存在但是是文件,则覆盖目标文件。如果目标目录存在但文件不存在,则移动到目录下后重命名为指定文件名。
mv /etc/ssh/ssh_config_bak /opt:移动/etc/ssh/ssh_config_bak文件到/opt下。
mv /etc/ssh/ssh_config_bak /opt/test1:移动/etc/ssh/ssh_config_bak文件到/opt下并重命名为test1。
mv /etc/ssh/moduli_bak /opt/test1:移动/etc/ssh/moduli_bak文件到/opt下,覆盖已有的test1文件。
2)移动文件夹,如果目标存在,则文件夹移动到目标下,名称不变。如果目标不存在,则文件夹移动到存在的上一级目录下,重命名为指定的文件夹名。
mv newDir2 /opt:移动newDir2文件夹到/opt目录下。
mv newDir2 /opt/newDir1:移动newDir2文件夹到/opt目录下并重命名为newDir1.
移动多个文件或目录到指定目录下:
mv [options] source1 source2 source3 ... directory
在这种情况下最后一个一定是一个已存在的目录路径。
9、删除文件(夹)
删除文件:rm filename
删除空文件夹:rmdir [-p] dirname
参数-p:连同上层“空的”目录也一起删除。
删除非空文件夹:rm -r dirname
参数:
-f:就是force的意思,忽略不存在的文件,不会出现告警信息。
-r:递归删除,常用在目录的删除。
10、取得路径的文件名与目录名称
取得路径的文件名称basename
basename /etc/ssh/ssh_config
取得路径的目录名称dirname
dirname /etc/ssh/ssh_config
11、链接文件(link)
hard link(硬链接或实际链接)
hard link只是在某个目录下新建一条文件名连接到某inode号码的关联记录而已。一般来说,使用hard link设置链接文件时,磁盘的空间与inode的数目都不会改变。
限制:
1)不能跨文件系统;
2)不能链接到目录;
symbolic link(软链接或符号链接,即快捷方式)
symbolic link就是在创建一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名。由于只是利用文件来作为指向的操作,所以当源文件被删除之后,symbolic link的文件会“打不开”,会一直提示“无法打开某文件”。实际上就是找不到源文件的“文件名”而已。
由于symbolic link所创建的文件为一个独立的新文件,所以会占用掉inode和block。
创建链接文件
ln [-sf] 源文件 目标文件(目标文件是源文件的链接文件)
参数:
-s:如果不加任何参数就创建链接,那就是hard link,-s就是symbolic link。
-f:如果目标文件存在时,就主动将目标文件直接删除后再创建。
创建hard link:ln /etc/ssh/ssh_config /etc/ssh/ssh_hard_link
创建symbolic link:ln -s /etc/ssh/ssh_config /etc/ssh/ssh_soft_link
如果要更新ssh_soft_link指向的链接,直接执行ln -s newFile /etc/ssh/ssh_soft_link是不行的,会报ssh_soft_link文件已存在,需要加上-f参数,把老的ssh_soft_link文件删除后再重新创建链接:ln -sf newFile /etc/ssh/ssh_soft_link。
参考资料
《鸟哥的Linux私房菜基础学习篇(第三版)》