目录的相关操作
cd 变换目录
pwd [-P] 显示目录
mkdir [-mp] 创建目录
不建议常用-p 这个选项,因为担心如果妳打错字,那么目录名称就会变的乱七八糟的!
rmdir [-p] 删除空目录
- 只能删除空的目录
- 被删除的目录里面必定不能存在其他的目录或文件
- 利用-p 这个选项,立刻就可以将test1/test2/test3/test4 一次删除 (前提是每一层都是空目录,没有文件!)
rmdir test1/test2/test3/test4 只删除test4文件夹
rmdir -p test1/test2/test3/test4 一起删除
环境变量PATH
查看PATH
echo $PATH
查看PATH目录
查阅文件属性的指令ls 完整文件名为:/bin/ls,可以在/bin(/usr/bin)找打ls文件
加入PATH
可不可以把.加入PATH,如果本目录有指令文件,就可以在本目录执行?
通过变量方式加入
Alternatively, you could also add the environment variable
GRADLE_HOME
and point this to the unzipped distribution. Instead of adding a specific version of Gradle to yourPATH
, you can add_$GRADLE_HOME_/bin
to yourPATH
. When upgrading to a different version of Gradle, just change theGRADLE_HOME
environment variable.[
](https://docs.gradle.org/current/userguide/installation.html#microsoft_windows_users_2)
GRADLE_HOME=/opt/gradle/gradle-6.8
export PATH=$PATH;$GRADLE_HOME/bin
ls, cp, rm, mv
查看
- ls -a 这个-a 的选项才能显示出隐藏文件的内容,而使用ls -al 才能显示出属性
- ls -l简写ll
复制
- 是否需要完整的保留来源文件的信息?
- 来源文件是否为连结档(symbolic link file)?
- 来源档是否为特殊的文件,例如FIFO, socket 等?
- 来源文件是否为目录
- 先不用掌握实体链接 cp -l
移动
更名
mv foo foo0
rename foo foo0 foo?
移除
很多distributions 都已经默认加入-i 这个选项
之前的rmdir只能删除空目录,删除有文件的目录使用rm -r
使用『rm -r 』这个指令之前,请千万注意了,因为该目录或文件『肯定』会被root 杀掉!
取得路径的文件名与目录名称
用/来区分目录和文件,例如/etc/和/etc
文件内容查阅
cat
cat -A
特殊字符cat -n
显示行号cat -b
显示行号(空白行不显示)
more
more /etc/man_db.conf
less (推荐)
head
tail
管线
管线(|) 的符号
取11~20行: head -n 20 /etc/man_db.conf | tail -n 20
取11~20行并显示行号: cat -n /etc/man_db.conf | head -n 20 | tail -n 10
tac nl od
- nl 相对于cat -n,可以将行号做比较多的显示设计
touch
- 建立一个空的文件;
- 将某个文件日期修订为目前(mtime 与atime)
注意
- 如果touch 后面有接文件, 则该文件的三个时间(atime/ctime/mtime) 都会更新为目前的时间
- 若该文件不存在,则会主动的建立一个新的空的文件
即使我们复制一个文件时,复制所有的属性,但也没有办法复制ctime 这个属性的。
总结:使用了touch,cp,mv,ctime都会更新为最新时间,mtime和atime根据操作/参数改变。
- mtime:默认
- ctime:—time=ctime
- atime:—time=atime
date指令:当前时间
默认权限
默认目录完全权限为 drwxrwxrwx
,文件则为 -rw-rw-rw-
要注意的是,umask 的分数指的是『该默认值需要减掉的权限!
查看:umask
设定:umask 002
关于预设umask 的设定可以参考/etc/bashrc 这个文件的内容,不建议修改
隐藏属性
chattr和lsattr仅chattrxt2/Ext3/Ext4/xfs 文件系统可用,xfs参数不能完全支持
+i,+a重要
lsattr [-adR]
观察文件类型 file
file
脚本文件名的搜寻
which / type
寻找执行档
# 发现sdk是个declared function created by sdkman-main.sh (in ~/.sdkman/src)
# once called from ~/.sdkman/bin/sdkman-init.sh
type -a sdk
whereis
find不常用,速度慢。whereis和locate找不到才用find
- whereis 只找系统中某些特定目录底下的文件而已
- whereis 主要是针对/bin /sbin 底下的执行档,以及/usr/share/man 底下的man page 文件
locate/updatedb
- locate利用数据库来搜寻文件名
- 这也是个很方便好用的指令,如果你忘记某个文件的完整档名时~~
- 当你新建立起来的文件,却还在数据库更新之前搜寻该文件,那么locate 会告诉你『找不到!』
更新数据库,花费数分钟updatedb
find (一般不用,使用方法查阅书本)
1, 与时间有关的选项
- 与使用者或组名有关的参数
- 与文件权限及名称有关的参数