1.1 创建和删除目录
和目录相关的几个命令
mkdir 关注-p选项 (针对目录) -v可视化
rmdir 同样也有一个-p选项 (针对目录) 删除空目录
tree 树状结构
touch 创建文件
1.2 rm命令
rm -r(连目录一起删) -f(强制) 两个常用选项 (目录和文件都可以删)
-i 会提示你是否删除
-v 可视化
which rm
1.3 cp命令
cp -r 针对目录, 有时我们使用/bin/cp就不会提示信息了
1.4 移动和重命名mv
mv 重命名或者移动, 有时我们使用/bin/mv就不会提示信息了,当我们mv目录时,注意若是目标目录存在的情况下,那么会把源目录移动到目标目录里
1.5 文件查看命令
和文本相关的命令
cat 读取文本内容 加上-A后查看每一行后面会有一个$符号
tac 读取文本内容(从后开读)
more 空格键一屏一屏往下翻,enter健一行一行往下翻
less 几个快捷键:j下, k上, g到首行, G到末行, ctrl+b上翻, ctrl+f下翻, 空格下
/搜索关键字 n向下 N向上 ?搜索关键字 n向上 N向下
head -n (默认前十行)
tail -n -f(动态查看) (默认末十行)
1.6 文件和目录属性
属主、属组
类型 d目录, -普通文件, c字符设备(如键盘、鼠标、显示器), b块设备(如磁盘), l软链接, s socket(进程间的通信),p 管道文件(ls -l /var/spool/postfix/public/pickup)
可以在ls -l /dev/ 下看到
权限 rwx (读写执行) 最后一个点是selinux的标记位
inode 索引节点
1.7 chmod命令1.8 chown命令
chown 更改所属主,所属组 -R子文件或子目录继承父目录的所属主和所属组 可以用x:x或者x.x
chmod 更改rwx权限 -R子文件或子目录继承父目录的权限
chmod u=rwx,g=r--,o=r-- 1.txt
chmod u-x,g+x,o-r 1.txt
chmod a+r 1.txt #a是所有者
umsk(用来规定目录和文件的权限) (0022) 指定默认权限, 目录755 文件644, 目录若没有执行权限,我们不能cd到这个目录下,但是可以ls这个目录
1.9 chattr文件隐藏属性
chattr -a (+a 不能修改,删除,重命名,只能追加重定向) -i (+i不能重定向,追加重定向,删除,重命名,基本都不可以更改) 特殊权限
lsattr -a (-d只查看目录本身)(-R不仅能列出当前目录,以及子目录和子文件都列出来,即逐层查看) 如果遇到文件删除不了,就可以用lsattr -R 来查看了
lsattr查看时,e是ext4或ext3文件系统特有的
2.0 特殊权限之suid
set_uid=4(r) chmod u+s u-x(小s变成S) (rws 如/usr/bin/passwd是给用户来更改密码的,/etc/shadow是存放密码的配置文件ls -l /etc/shadow,初root外) (作于于可执行的二进制文件,比如ls命令) 普通用户临时拥有所属主的权限
ls -l /usr/bin/passwd s就是set_uid
chmod u+s /tmp/ls
su - xuan
/tmp/ls /root/
普通用户用的是o权限,要去掉chmod o-x /tmp/ls
su - xuan
/tmp/ls /root/
有执行权限的就是小s,没有执行权限的就是大S
2.1 特殊权限之sgid
set_gid=2 (w) chmod g+s(x变成s) g-x(小s变成S) (作用于文件和目录) 普通用户临时拥有所属组的权限
chmod g+s /bin/ls
mkdir /tmp/222
chmod 777 /tmp/222
su - xuan
cd /tmp/222
touch file
mkdir dir
logout
chmod g+s /tmp/222
su - xuan
cd /tmp/222
touch file2
mkdir dir2
ls -l
2.2 特殊权限之sticky
(防删除位:防止别人删除自己的文件)sticky_bit =1(x)chmod o+t(变成t) o-x(变成T) (作用于目录)
特殊权限
一个目录的权限取决于父目录的权限。
mkdir /tmp/333
chmod 777 /tmp/333
cd /tmp/333
vi 12.txt
su - xuan
cd /tmp/333
vi 12.txt (wq!)
logout
chmod o+t .
chmod o-x .
cp 12.txt 33.txt
su - xuan
cd /tmp/333
rm -f 33.txt
2.3 find搜索命令
which 搜索一个命令的绝对路径,在echo $PATH这些路径下去找,必须要有执行权限
whereis 只是在某些目录下去搜
locate 搜索一些文件的
yum install -y mlocate (/tmp/下搜索不到)
updatedb 手动生成库
locate ls 包含ls都会列举出来
find -type(d、f、c、b、s等等) -name -mtime(创建、更改时间,单位是天)-atime(访问时间) -ctime(如更改文件名、属主、属组,原数据、inode,就会改ctime时间)
atime--ctime
ctime--不一定更改atime、mtime
唯独touch三个time都会更改
如:find /tmp/ -mmin(分钟) -5
find /tmp/ -mmin +5
find / -inum 141418
find /tmp/ -type f |xargs -i mv {} {}.bak -i是一个一个的
2.4 三个时间属性
stat 命令可以查看三个time (stat filename)
我平时通常同find命令找一些文件时会用到这些参数
文件的 Access time,atime 是在读取文件或者执行文件时更改的。
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
文件的 Change time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。
因此,更改文件的内容即会更改 mtime 和 ctime,但是文件的 ctime 可能会在 mtime 未发生任何变化时更改,如权限更改了但文件内容没有更改。
如何获得一个文件的atime mtime 以及ctime?
ls(1) 命令可用来列出文件的 atime、ctime 和 mtime。
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息。而这是加了 noatime 取消了, 不代表真实情況。反正, 这三个 time stamp 都放在 inode 中. 若 mtime, atime 修改, inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了(理论上是这样的,但是真实情况并非如此,如果是读取文档或者执行二进制文件的时候,虽然atime会变,但ctime不变,这是系统这样设计的)。
touch 一个文件如果文件不存在,可以创建它;如果这个文件存在的话,它就更改了三个time。
2.5 软链接和硬链接
linux下的链接文件
ln
软连接(相当于Windows快捷方式,可以夸分区,可以做文件和目录的软连接,有节省空间资源的作用) ln -s
ls -l /lib
du -sh /lib/librt.so.1 /lib/librt-2.12.so #比较两个大小
硬连接(多个文件对应同一个inode,多个inode不可以对应同一个文件,只能在同一个分区做,不可以做目录的硬链接)
ln
find /etc/ -type l