参考链接: 如何运行不同目录中的Java类文件
引用:尚硅谷韩老师的《尚硅谷-Linux-经典升级》 日常总结
pwd 指令 (显示当前工作目录的绝对路径)
基本语法
pwd (功能描述:显示当前工作目录的绝对路径)
ls指令 (显示文件目录)
基本语法
ls [选项] [目录或是文件]
可选项
-a :显示当前目录所有的文件和目录,包括隐藏的 (文件名以.开头就是隐藏)。
-l :以列表的方式显示信息
-h : 显示文件大小时,以 k , m, G单位显示 应用实例
案例:查看当前目录的所有内容信息
案例:递归查找根目录下所有的文件 -ls -R /
du命令(查看目录、文件所占用磁盘空间的大小)
常用的选项:
-h :以人类可读的方式显示
-a :显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
-s :显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
-c :显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
--apparent-size :显示目录或文件自身的大小
-l :统计硬链接占用磁盘空间的大小
-L :统计符号链接所指向的文件占用的磁盘空间大小
案例:
du -sh : 查看当前目录总共占的容量。而不单独列出各子项占用的容量 du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量。du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序du -sk filename 查看指定文件大小
tree命令(树状显示文件)
tree命令是可以把指定文件夹的所以文件用树状罗列出来,呈现目录形式的一个命令,没有安装之前,tree命令默认不能直接使用。
安装tree
yum install tree
$ tree --help
-a 列出所有文件。
-d 仅列出目录。
-l 遵循目录等符号链接。
-f 打印每个文件的完整路径前缀。
-x 仅保留在当前文件系统上。
-L 级下降深层级目录。
-R 达到最高等级时重新运行树。
-P 模式仅列出与给定模式相匹配的文件。
-I 模式不要列出与给定模式匹配的文件。
--ignore-case 模式匹配时忽略大小写。
--matchdirs在-P 模式匹配中包含目录名称。
--noreport 关闭树列表末尾的文件/目录计数。
--charset X 使用字符集X作为终端/ HTML和缩进行输出。
--filelimit# 不要下载超过#个文件的dirs。
--timefmt <f> 根据格式<f>打印和格式化时间。
-o 文件名输出到文件而不是标准输出。
---------------文件选项---------------
-q 将不可打印的字符打印为'?'。
-N 按原样打印不可打印的字符。
-Q 用双引号引用文件名。
-p 打印每个文件的保护。
-u 显示文件所有者或UID号码。
-g 显示文件组所有者或GID号码。
-s 打印每个文件的字节大小。
-h 以更易读的方式打印尺寸。
--si像-h,但在国际单位制中使用(幂数为1000)。
-D 打印上次修改日期或(-c)状态更改。
-F 附加'/','=','*','@','|'或'>'按照ls -F。
--inodes 打印每个文件的inode编号。
- 设备打印每个文件所属的设备ID号。
---------------排序选项---------------
-v 按文本字母数字排序文件。
-t 按上次修改时间对文件进行排序。
-c 按上次状态更改时间对文件进行排序。
-U 保留文件未排序。
-r 反转排序的顺序。
--dirsfirst 列出文件之前的目录(-U禁用)。
- 排序X选择排序:名称,版本,大小,mtime,ctime。
---------------图形选项---------------
-i 不要打印缩进线。
-A 打印ANSI线图形缩进线。
-S 使用CP437(控制台)图形缩进线打印。
-n 始终关闭着色(-C覆盖)。
-C 总是打开彩色。
--------------- XML / HTML / JSON选项---------------
-X 打印树的XML表示。
-J 打印出树的JSON表示。
-H baseHREF以baseHREF作为顶层目录打印HTML格式。
-T 字符串用字符串替换默认的HTML标题和H1标题。
--nolinks 关闭HTML输出中的超链接。
---------------其他选项---------------
--version 打印版本并退出.
--help 打印使用情况和此帮助信息并退出。
-- 选项处理终止符
直接输入tree命令,就会自动给以树形的形式列出当前目录的文件和文件夹,不加任何参数,它会自动列表当前目录下面所有深度级别的文件和目录。
案例1:显示各层级目录的拥有者
$ tree -u
├── [root ] kingsoft
│ └── [root ] wps-office
│ └── [root ] office6
│ ├── [root ] addons
│ │ └── [root ] homepage
│ │ ├── [root ] 1033_et.html
│ │ ├── [root ] 1033_wait.html
│ │ ├── [root ] 1033_wpp.html
│ │ ├── [root ] 1033_wps.html
│ │ ├── [root ] 1041_et.html
│ │ ├── [root ] 1041_wait.html
│ │ ├── [root ] 1041_wpp.html
│ │ ├── [root ] 1041_wps.html
│ │ ├── [root ] 2052_et.html
案例2:查看不同级别子目录和文件使用"tree -L 1 "这个命令,只查看当前第一级的目录。和文件使用"tree -L 2 "这个命令,只查看当前第二级的目录和文件使用"tree -L N "这个命令,只查看当前第N级的目录和文件。
$ tree -L 1
├── android-studio
├── java
├── kingsoft
└── teamviewer
//查看当前第二级的目录和文件
$ tree -L 2
├── android-studio
│ ├── bin
│ ├── build.txt
│ ├── gradle
│ ├── Install-Linux-tar.txt
│ ├── jre
│ ├── lib
│ ├── license
│ ├── LICENSE.txt
│ ├── NOTICE.txt
│ └── plugins
│ └── chrome
├── java
│ └── eclipse
├── kingsoft
│ └── wps-office
└── teamviewer
├── config -> /etc/teamviewer
├── doc
├── logfiles -> /var/log/teamviewer12
└── tv_bin
案例3:把目录结构信息保存到文本中
$ tree -L 2 > /home/root/log/tree.txt
案例4:默认情况下,tree命令无法显示中文文件或文件夹名,会是一串转义字符,这时可以用选项-N来显示中文文。
cd 指令(切换目录)
基本语法
cd [参数] (功能描述:切换到指定目录)
常用参数
cd ~ 或者cd :回到自己的家目录
cd .. 回到当前目录的上一级目录
cd - 快速的切换到上一个工作目录
-P 以物理路径进入
绝对路径【从 / 开始定位】
相对路径【从当前的位置开始定位】
案例1:使用绝对路径切换到root目录 [cd /root]
案例2: 使用相对路径到/root 目录 [ cd ../root]
案例3:表示回到当前目录的上一级目录 [ cd ..]
案例4:回到家目录 [ cd ~ ]
案例5:我现在在usr里面的lib文件里面,我需切换到root目录(使用相对路径)。[cd ../../root]
案例6:快速的切换到以前的工作目录(类似于撤销)
[atguigu@hadoop102 hadoop]$ pwd/opt/module/hadoop-2.7.2/etc/hadoop [atguigu@hadoop102 hadoop]$ cd ~ [atguigu@hadoop102 hadoop-2.7.2]$ pwd/opt/module/hadoop-2.7.2 [atguigu@hadoop102 hadoop-2.7.2]$ cd - /opt/module/hadoop-2.7.2/etc/hadoop [atguigu@hadoop102 hadoop]$ pwd/opt/module/hadoop-2.7.2/etc/hadoop
注意,如果$HOME环境变量被设置为您的主目录路径,那么仅仅运行cd命令(没有任何参数)也会将带您到您的主目录。
[atguigu@hadoop102 hadoop-2.7.2]$ pwd/opt/module/hadoop-2.7.2 [atguigu@hadoop102 hadoop-2.7.2]$ cd [atguigu@hadoop102 ~]$ pwd/home/atguigu
修改$HOME环境变量为/opt/module/hadoop-2.7.2/
[atguigu@hadoop102 ~]$ pwd /opt [atguigu@hadoop102 ~]$ HOME=/opt/module/hadoop-2.7.2/ [atguigu@hadoop102 opt]$ cd [atguigu@hadoop102 hadoop-2.7.2]$ pwd/opt/module/hadoop-2.7.2 [atguigu@hadoop102 hadoop-2.7.2]$
-P 选项:(不切换到软链接目录)
默认情况下,这cd命令会切换到软链接的目录,而不是真正的物理目录
[atguigu@hadoop102 home]$ ll 总用量 12lrwxrwxrwx 1 root root 29 3月 2 06:54 etc -> /opt/module/hadoop-2.7.2/etc/ [atguigu@hadoop102 home]$ cd /etc/ [atguigu@hadoop102 etc]$ pwd/etc [atguigu@hadoop102 etc]$ cd /home/ [atguigu@hadoop102 home]$ ll 总用量 12lrwxrwxrwx 1 root root 29 3月 2 06:54 etc -> /opt/module/hadoop-2.7.2/etc/ [atguigu@hadoop102 home]$ cd -P etc/ [atguigu@hadoop102 etc]$ pwd/opt/module/hadoop-2.7.2/etc
加上-P 选项后,我们切换到了真正的物理目录
https://baijiahao.baidu.com/s?id=1613359705269696917&wfr=spider&for=pc
mkdir指令 [make directory] (创建目录)
说明
mkdir指令用于创建目录
基本语法
mkdir [选项] 要创建的目录
常用选项
-p :创建多级目录 应用实例
案例1:创建一个目录 /home/dog mkdir /home/dog
案例2:创建多级目录 /home/animal/tiger mkdir -p /home/animal/tiger
rmdir指令 [remove directory](删除目录)
说明
该命令从一个目录中删除一个或多个子目录项(注意,rm -r dir 命令可以代替rmdir,但是很危险,万一它突然就不是空的咧?),另外删除某目录时必须具有对父目录的写权限。
基本语法
rmdir [选项] 要删除的空目录
常用选项
- p 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
-v, --verbose 显示指令执行过程
-p 递归删除目录dirname, 当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
应用实例
案例1:删除一个目录 /home/dog rmdir /home/dog [要求 /home/dog 空目录]
案例2: rmdir 不能删除非空目录 rmdir notempty(非空目录)
这样会提示:not empty目录非空,你删不掉的。
案例3: rmdir -p 当子目录被删除后使它也称为空目录的话,则顺便一并删除 rmdir -p watch/avi
删掉avi目录,watch目录就空掉了,那还看什么?所以干脆把watch目录一起删掉,眼不见为不净嘛。
使用细节
rmdir 删除的是空目录,如果目录下有内容时无法删除的。
提示:如果需要删除非空目录,需要使用 rm -rf 要删除的目录
touch指令(创建空文件)
说明
touch指令创建空文件, 还可以更新文件的修改时间
基本语法
touch 文件名称
应用实例
案例1: 创建一个空文件 hello.txt touch hello.txt
案例2: 一次性创建多个文件 touch a.txt b.txt
说明:如果文件存在,则表示刷新该文件的修改时间.(文件内容还在)
cp指令[copy] (拷贝)
说明
cp 指令拷贝文件到指定目录 ,路径使用相对路径和绝对路径都可以。
注意:这个指令,当发现目标目录下有相同的文件,会提示你是否覆盖,有多少相同的文件就要输入多少个y来确定。
基本语法
cp [选项] source(源) dest(目的文件)
常用选项
-r :递归复制整个文件夹 (recursion 递归)
应用实例
案例1: 将 /home/aaa.txt 拷贝到 /home/bbb 目录下 (拷贝单个文件) cp /home/aaa.txt /home/bbb
案例2: 递归复制整个文件夹
举例, 将 /home 整个目录拷贝 /opt 使用细节
使用细节:
如果我们再次拷贝,会提示你要不要覆盖。强制覆盖不提示的方法:\cp
注意:使用相对路径时一定要注意你当前的目录位置,然后准确的定位,源目标和目标目录。
rm指令(移除文件或目录)
说明
rm 指令移除文件或目录
基本语法
rm [选项] 要删除的文件或目录
常用选项
-r :递归删除整个文件夹
-f : 强制删除不提示
应用实例
案例1: 删除文件,将 /home/aaa.txt 删除 rm /home/aaa.txt
案例2: 删除目录,删除文件夹 /home/bbb(空) rm –r /home/bbb
使用细节
如果文件夹里面还有文件或者目录,需要反复确定是否删除,很麻烦。
比如我桌面有目录aaa,aaa里面有bbb目录。
强制删除不提示的方法:带上 -f 参数即可 rm –rf aaa
比如我桌面有文件aaa,aaa里面有bbb目录,和文件a.txt,我需要删除aaa目录。
mv指令 (移动文件与目录或重命名 )
说明
mv命令是move的缩写,可以用来移动文件与目录或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
命令功能
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。
基本语法
mv [选项] 源文件或目录 目标文件或目录
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件或目录)
命令参数
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
应用实例
案例1: 将 /home/aaa.txt 文件 重新命名为 pig.txt mv aaa.txt pig.txt (产生的是重命名的效果,移动到当前目录,应为当前目录已经有aaa.txt了,它就认为你是想重命名,它就把aaa.txt 该成pig.txt了)
案例2: 将 /home/pig.txt 文件 移动到 /root 目录下 mv /home/pig.txt /root/
案例3: 将 /home/pig.txt 文件 移动 pig.txt 并且重命名为 big.txt 到 /root 目录下 mv /home/pig.txt /root/big.txt
案例4: mv log1.txt log2.txt log3.txt test3 命令将log1.txt ,log2.txt, log3.txt 三个文件移到 test3目录中去。
案例5: mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt 命令又将三个文件移动到test4目录中去。
案例6: 将文件 log1.txt 改名为 log2.txt ,如果 log2.txt 已经存在,则询问是否覆盖 。 mv -i log1.txt log2.txt
案例7: 将文件 log1.txt 改名为 log2.txt ,即使 log2.txt 存在,也是直接覆盖掉, mv -f log1.txt log2.txt ,log2.txt的内容直接覆盖了log1.txt内容,-f 这是个危险的选项,使用的时候一定要保持头脑清晰,一般情况下最好不用加上它。
案例8: 目录的移动 mv dir1 dir2 如果目录dir2不存在,将目录dir1改名为dir2;否则,将dir1移动到dir2中 。
案例9: 移动当前文件夹下的所有文件到上一级目录。 mv * ../ 。
案例10: 把当前目录的一个子目录里的文件移动到另一个子目录里。 mv test3/*.txt test5
案例11: 文件被覆盖前做简单备份,前面加参数-b。 mv a.txt -b b.txt
说明: -b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。 --backup该选项指定如果目标文件存在时的动作,共有四种备份策略: 1.CONTROL=none或off : 不备份。 2.CONTROL=numbered或t:数字编号的备份 3.CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1...n: 执行mv操作前已存在以数字编号的文件log2.txt.~1~,那么再次执行将产生log2.txt~2~,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。 4.CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。
案例12: 有文件 /home/aaa/bbb/ccc/a.txt
重命名需要这样写
注意:只有在同一个目录中才会产生重命名效果。
查看文件类容
cat指令(查看文件内容只读 )
说明
cat 查看文件内容 ,是以只读的方式打开。
基本语法
cat [选项] 要查看的文件
常用选项
-n :显示行号
应用实例
案例1: /ect/profile 文件内容,并显示行号 cat -n /ect/profile(-n显示行号)
使用细节
cat 只能浏览文件,而不能修改文件(直接到文件末尾),为了浏览方便,一般会带上 管道命令 | more (一页一页的看)
cat xxx.txt | more (把cat xxx.txt 输出结果交给 more 处理)
more指令(分屏查看文件类容)
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键。
快捷键
空白键(space) 向下翻页
b,ctrl+b 向上翻页
ctrl+f 向下翻页
Enter 向下滚动 1 行
= 显示当前行号
v 用vi编辑器打开当前内容
:f 显示当前文档文件名与当前行号
d,ctrl+D 向下翻 K 行,默认k=11
q,Q 退出more
ctrl+L 类似于清屏
h 显示快捷键帮助
基本语法
more 要查看的文件
应用实例
案例: 采用more查看文件 more /etc/profile
less指令(分屏查看文件类容)
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
基本语法
less 要查看的文件
快捷键
f : 查看下一页(f为forward的意思)
b : 查看上一页(b为back的意思)
PageDown : 查看下一页
PageUp : 查看上一页
d : 查看下半页
u : 查看上半页
空格键 : 向下滚动一页
回车键 : 向下滚动一行
h : 显示帮助界面
q : 退出less命令
/字串 向下搜寻【字串的功能】 n:想下查找 N:想上查找
?字串 向上搜寻【字串的功能】 n:想上查找 N:想下查找
应用实例
案例: 采用less查看一个 大文件文件
echo指令 (输出内容到控制台)
说明
echo输出内容到控制台。
基本语法
echo [选项] [输出内容]
案例:
使用echo 指令输出$PATH环境变量。echo $PATH
使用echo 指令输出hello,world!
head指令 (显示文件的开头部分)
说明
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
基本语法
head 文件 (功能描述:查看文件头10行内容)
head -n n 文件 (功能描述:查看文件头n行内容)
案例: 查看/etc/profile 的前面5行代码 head -n 5 /etc/profile
tail指令 (显示文件尾部内容、实时监控文件)
说明
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
基本语法
1) tail 文件 (功能描述:查看文件头10行内容)
2) tail -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
3) tail -f 文件 (功能描述:实时追踪该文档的所有更新)
应用实例
案例1: 查看/etc/profile 最后5行的代码 tail -n 5 /etc/profile
案例2: 实时监控date.log , 当我向这个文件添加内容就可以实时监控文件的变化。tail -f 文件名
我虚拟机在目录home里面创建一个文件date.log
然后我用Xshell向date.log添加内容
我就可以实时监控date.log有没有变化,如果有变化就会看到。
> 指令 和 >> 指令(重定向和追加)
说明
> 输出重定向(会覆盖掉原来文件的内容) 和 >> 追加
基本语法
1) ls -l >文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
2) ls -al >>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
3) cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
4) echo "内容">> 文件
应用实例
案例1: 将 /home 目录下的文件列表覆盖写入到 /home/info.txt 中 ls –l /home/ > /home/info.txt [如果文件不存在,则会自动创建]
案例2: 将 /home 目录下的文件列表追加到 /home/info.txt 中 ls –l /home/ >> /home/info.txt [如果文件不存在,则会自动创建]
案例3: 将当前日历信息 追加到 /home/mycal 文件中 date >> /home/mycal [如果文件不存在,则会自动创建]
案例4: 将文件1的内容覆盖到文件2 cat 文件1 > 文件2 [如果文件不存在,则会自动创建]
案例5: 把""里面写的内容覆盖写入到文件里面 echo "内容" > 文件 [如果文件不存在,则会自动创建]
案例6: 把""里面写的内容追加到文件里面 echo "内容" >> 文件 [如果文件不存在,则会自动创建]
ln 指令 [link] (软链接)
说明
软链接也成为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径 。
基本语法
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接(快捷方式))
应用实例
案例1: 在/home 目录下创建一个软连接 linkToRoot,连接到 /root 目录 ln -s /root/ linkToRoot
虽然我到了root目录,但是我用pwd来查看的话,我仍然还在linkToRoot下面。(好比我双击桌面图标打开一个软件,我进入了软件里面那个文件夹,但是我仍然在桌面)
案例2: 删除软连接 linkToRoot rm –rf linkToRoot (不要带斜杠,带斜杠他认为你是把链接里面的文件删掉,而不是删除这个链接)
细节说明 :当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。
history指令 (查看历史命令)
说明
查看已经执行过历史命令,也可以执行历史指令 。
基本语法
history (功能描述:查看已经执行过历史命令)
应用实例
案例1: 显示所有的历史命令 history
案例2: 显示最近使用过的10个指令。 history 10
案例3: 执行历史编号为n的指令 !n