目录的相关操作

cd 变换目录

image.png

image.png
image.png

pwd [-P] 显示目录

Print Working Directory
image.png

mkdir [-mp] 创建目录

不建议常用-p 这个选项,因为担心如果妳打错字,那么目录名称就会变的乱七八糟的!
image.png

rmdir [-p] 删除空目录

  • 只能删除空的目录
  • 被删除的目录里面必定不能存在其他的目录或文件
  • 利用-p 这个选项,立刻就可以将test1/test2/test3/test4 一次删除 (前提是每一层都是空目录,没有文件!)

rmdir test1/test2/test3/test4 只删除test4文件夹
rmdir -p test1/test2/test3/test4 一起删除
image.png

环境变量PATH

指令 <——> 指令文件

查看PATH

echo $PATH 查看PATH目录
查阅文件属性的指令ls 完整文件名为:/bin/ls,可以在/bin(/usr/bin)找打ls文件

加入PATH

image.png

可不可以把.加入PATH,如果本目录有指令文件,就可以在本目录执行?
image.png

通过变量方式加入

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 your PATH, you can add _$GRADLE_HOME_/bin to your PATH. When upgrading to a different version of Gradle, just change the GRADLE_HOME environment variable.[

](https://docs.gradle.org/current/userguide/installation.html#microsoft_windows_users_2)

  1. GRADLE_HOME=/opt/gradle/gradle-6.8
  2. export PATH=$PATH;$GRADLE_HOME/bin

ls, cp, rm, mv

查看

  • ls -a 这个-a 的选项才能显示出隐藏文件的内容,而使用ls -al 才能显示出属性
  • ls -l简写ll

image.png
image.png

复制

  1. 是否需要完整的保留来源文件的信息?
  2. 来源文件是否为连结档(symbolic link file)?
  3. 来源档是否为特殊的文件,例如FIFO, socket 等?
  4. 来源文件是否为目录

image.png
image.png
image.png
image.png
image.png

  • 先不用掌握实体链接 cp -l

image.png
image.png

移动

image.png

更名

mv foo foo0
rename foo foo0 foo?
image.png

移除

很多distributions 都已经默认加入-i 这个选项
之前的rmdir只能删除空目录,删除有文件的目录使用rm -r
使用『rm -r 』这个指令之前,请千万注意了,因为该目录或文件『肯定』会被root 杀掉!
image.png
image.png

取得路径的文件名与目录名称

用/来区分目录和文件,例如/etc/和/etc
image.png

文件内容查阅

cat

cat -A 特殊字符
cat -n 显示行号
cat -b 显示行号(空白行不显示)

more

more /etc/man_db.conf

image.png
重复搜寻同一个字符串,直接按下n

less (推荐)

image.png

head

image.png

tail

image.png

管线

管线(|) 的符号
取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

  1. 建立一个空的文件;
  2. 将某个文件日期修订为目前(mtime 与atime)

注意

  • 如果touch 后面有接文件, 则该文件的三个时间(atime/ctime/mtime) 都会更新为目前的时间
  • 若该文件不存在,则会主动的建立一个新的空的文件

即使我们复制一个文件时,复制所有的属性,但也没有办法复制ctime 这个属性的。
总结:使用了touch,cp,mv,ctime都会更新为最新时间,mtime和atime根据操作/参数改变。

  • mtime:默认
  • ctime:—time=ctime
  • atime:—time=atime

image.png
date指令:当前时间
image.png
image.png

默认权限

默认目录完全权限为 drwxrwxrwx ,文件则为 -rw-rw-rw-
要注意的是,umask 的分数指的是『该默认值需要减掉的权限!
查看:umask
设定:umask 002
关于预设umask 的设定可以参考/etc/bashrc 这个文件的内容,不建议修改

隐藏属性

chattr和lsattr仅chattrxt2/Ext3/Ext4/xfs 文件系统可用,xfs参数不能完全支持
+i,+a重要
image.png
image.png
image.png
lsattr [-adR]
image.png

观察文件类型 file

file

脚本文件名的搜寻

which / type

寻找执行档
image.png

  1. # 发现sdk是个declared function created by sdkman-main.sh (in ~/.sdkman/src)
  2. # once called from ~/.sdkman/bin/sdkman-init.sh
  3. type -a sdk

whereis

find不常用,速度慢。whereis和locate找不到才用find

  • whereis 只找系统中某些特定目录底下的文件而已
  • whereis 主要是针对/bin /sbin 底下的执行档,以及/usr/share/man 底下的man page 文件

image.png

locate/updatedb

  • locate利用数据库来搜寻文件名
  • 这也是个很方便好用的指令,如果你忘记某个文件的完整档名时~~
  • 当你新建立起来的文件,却还在数据库更新之前搜寻该文件,那么locate 会告诉你『找不到!』

image.png
更新数据库,花费数分钟
updatedb

find (一般不用,使用方法查阅书本)

1, 与时间有关的选项
image.png

  1. 与使用者或组名有关的参数
  2. 与文件权限及名称有关的参数