目录与路径相关,文件与目录的增删改查命令等
参考资料:鸟哥的linux私房菜
目录与路径
绝对路径:从根目录写起,如/usr/share/doc
相对路径:即相对当前工作目录,如由usr/share/doc到/usr/share/man目录,可cd../man
目录相关操作
切换目录: cd [路径]
显示当前目录: pwd [-P] (-P可选参数,加上则显示实际当前路径,若不加则显示连接文件本身的目录名)
创建一个新目录: mkdir [-mp] [目录] (-m可选参数,可配置文件权限,-p可递归创建多层目录)
xxx@xxx:~/test$ mkdir -m 557 helloxxx@xxx:~/test$ ls -l总用量 4dr-xr-xrwx 2 xxx xxx 4096 1月 5 22:17 hello
删除一个空目录: rmdir [-p] [目录] (-p可选参数,连同上层空目录一起删除)
文件与目录管理
查看文件目录:ls -[aAdfFhilnrRSt] [目录] (-a全部包括隐藏文件,-A全部但不包括隐藏文件,-d仅目录本身,-l列出文件属性与权限[最常用],-n列出UID,GID,-rRSt均为排列方式不同)
ls [--full-time] 目录 (输出访问时间或权限改变时间)
复制文件:cp [-adfilprsu] [源文件] [目标文件] (-a数据特性完全一致,-d复制连接文件,-i若目标文件已存在则覆盖时先询问,-p连同文件属性一起复制,-r用于目录复制的递归复制,-s复制成连接文件)
xxx@xxx:/home/xxx/test# cp /home/xxx/code/a.json .xxx@xxx:/home/xxx/test# ls -l总用量 4-rw-r--r-- 1 root root 23 1月 6 01:15 a.jsonroot@xxx:/home/xxx/test# ls -l /home/lht/code/a.json-rw-r--r-- 1 xxx xxx 23 1月 1 23:03 /home/lht/code/a.json 如上复制出来属性不同,需合理使用参数
删除文件:rm [-fir] [文件或目录] (-f即force忽略不存在的文件,-i删除前询问用户,-r递归删除)
移动文件或改名:mv [-fiu] [源文件] [目标文件] (-f强制移动,-i若目标文件存在则询问是否覆盖,-u若目标文件存在且较新才更新)
取得文件名:basename [文件或目录]
取得目录名:dirname [文件或目录]
创建文件: touch [-acdmt] [文件] (-a修改访问时间,-c仅修改文件时间 文件不存在不创建新文件,-d可接修改日期,-m仅修改mtime,-t接修改时间格式[YYMMDDhhmm])
xxx@xxx:~/test$ touch -t 1612300202 helloxxx@lxxx:~/test$ ls -l hello-rwxr-xr-x 1 xxx xxx 18 12月 30 2016 hello
文件内容查阅
1.直接查看
直接查看:cat [-AbEnTv] [文件](-A列出特殊字符,-b列出行号,-n列出行号包括空白行,-T显示tab键,-v列出一些看不出来的特殊字符)
反向列示:tac [文件] (行逆向输出)
xxx@xxx:~/test$ cat -b hello 1 hello 2 world 3 yes 4 !xxx@xxx:~/test$ tac hello!yesworldhello
添加行号打印:nl [-bnw] [文件] ()
2.可翻页查看
more [文件]
less [文件] (可前后翻)
3.数据选取
取前几行: head [-n number] [文件]
取后几行: tail [-n number] [文件]
非纯文本查看: od [-t TYPE] [文件] (TYPE为输出类型,a默认,c ASCAII形式,d十进制,f浮点数,o八进制,x十六进制)
xxx@xxx:~/test$ od -t x hello0000000 6c6c6568 6f770a6f 0a646c72 0a7365790000020 00000a210000022
文件与目录默认权限与隐藏权限
文件默认权限:umask [-S] (-S可选参数,以rwx形式显示) //默认属性的意思即是创建一个文件或目录所赋予的属性
xxx@xxx:~$ umask0022xxx@xxx:~$ umask -Su=rwx,g=rx,o=rx
数字形态:第一个为特殊权限,后面三个分别为user,group,others,rwx权限需要不需要哪个加上相应数字4,2,1即可,如:不要写和执行即1+2=3
xxx@xxx:~$ umask 033xxx@xxx:~$ umask -Su=rwx,g=r,o=r
设置文件隐藏属性:chattr [+-=] [-ASacdistu] [文件或目录] (+增加,-减少,=设置)(-S同步写入磁盘,-a只能增加不能修改删除数据【root可用】,-c自动压缩,-i文件无法删除改名添加写【root可用】,-s删除时完全删除,-u与s相反)
xxx@xxx:~/test$ sudo chattr +i world[sudo] xxx 的密码:xxx@xxx:~/test$ rm worldrm: 无法删除'world': 不允许的操作
查看文件隐藏属性:lsattr [-adR] [文件或目录] (-a隐藏文件属性,-d若接目录则仅列出目录,-R列出子目录数据)
xxx@xxx:~/test$ lsattr world----i---------e---- world
文件特殊权限
SUID:仅对二进制文件有效;执行者需要可执行权限;执行过程有效;执行者具有所有者权限
SGID:对二进制文件有效;执行者需要可执行权限;执行者执行过程中获得程序用户组支持;(若为目录:具有rx权限时可进入目录;用户在此目录下用户组可变成该目录用户组;此目录下具有w权限)
SBIT:仅对目录有效;若用户对此目录具有w权限时->用户在该目录下创建的文件或目录只有root和自己才能删除。
设置方式,在权限数字前加4,2,1对应SUID,SGID,SBIT
xxx@xxx:~/test$ touch helloxxx@xxx:~/test$ chmod 4755 helloxxx@xxx:~/test$ ls -l hello-rwsr-xr-x 1 xxx xxx 0 1月 6 00:50 hello
命令与文件的查询
寻找执行文件: which [文件]
寻找特定文件: whereis [-bmsu] [文件或目录] (-b二进制格式,-m在说明文件manual路径下的文件,-s只找源文件,-u查找不在上述三个选项中的其他文件)
xxx@xxx:~$ whereis passwdpasswd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1.gz /usr/share/man/man1/passwd.1ssl.gz
在数据库中寻找相关文件名:locate [-ir] [部分或全部文件名] (-i忽略大小写差异,-r可接正则表达式)
终极解决方案:find [PATH] [option] [action] 参数有许多选择方案,另外细讲