ls命令
列出当前工作目录中的内容(包含普通文件和目录,不包含隐藏文件)
隐藏文件:在Linux上,隐藏文件通常是文件名 以点号开始的文件。这些文件并没有在默认的ls命令输出中显示出来,通常称其为隐藏文件。
work:/$ls
1 boot dev etc lib lost+found media mnt noah proc sbin srv tmp var
bin cgroup DoorGod home lib64 matrix misc net opt root selinux sys usr
-
目录名
列出该目录下的内容
如:列出百度目录下的所有内容work:~$ls baidu base ps-se qualifiedcoder
-
-a
列出所有文件,包含隐藏文件和普通文件及目录work:/$ls -a . .autofsck boot DoorGod lib matrix mnt opt root srv usr .. .autorelabel cgroup etc lib64 media net proc sbin sys var 1 bin dev home lost+found misc noah .readahead_collect selinux tmp
-
-l
产生长列表格式的输出,包含了目录中每个文件的更多相关信息,例如文件权限、链接数、所有者名称和组所有者、文件大小、最后修改的时间和文件/目录名称work:/$ls -l total 144 -rw-r--r-- 1 root root 375 Sep 17 2020 1 dr-xr-xr-x. 2 root root 4096 May 21 2018 bin drwxr-xr-x. 109 root root 12288 Mar 29 19:33 etc drwxr-xr-x 7 root root 4096 Mar 9 16:29 home dr-xr-xr-x. 13 root root 4096 May 21 2018 lib dr-xr-xr-x. 9 root root 12288 Jan 28 11:46 lib64 dr-xr-x---. 12 root root 4096 Mar 12 20:50 root drwxr-xr-x. 13 root root 4096 Jul 27 2017 usr drwxr-xr-x. 21 root root 4096 Jan 28 11:30 var
-
-F
在ls命令输出条目后加上文件类型的指示符号
" / ":表示这是一个目录名
" * ":表示这是一个可执行程序work:~$ls -F 111.txt baidu/ bashrc install.sh
-
-R
递归选项,列出当前目录下包含的子目录中的文件work:~/dudu$ls -R .: build.sh ci.yml cr.txt favorite_fruits.dict Main.java pom.xml README.md readme.txt release.sh src ./src: main test ./src/main: java ./src/main/java: com ./src/test: java ...以下内容省略
touch命令
TODO
mkdir命令
创建一个新目录
work:~/dudu/stc$ls -F
work:~/dudu/stc$mkdir test
work:~/dudu/stc$ls -F
test/
-
-p
用于创建多层级目录,不带-p选项创建多层级目录时会报错work:~/du/stc$mkdir test/new/ps mkdir: cannot create directory `test/new/ps': No such file or directory # work:~/dudu/stc$mkdir -p test/new/ps work:~/dudu/stc$ls -R .: test ./test: new ./test/new: ps ./test/new/ps:
cp命令
在文件系统中将文件和目录从一个位置复制到另一个位置
如:cp source destination
当source和destination参数都是文件名时,cp命令将源文件复制成一个新文件,并且以 destination命名。新文件就像全新的文件一样,有新的修改时间。
work:~/dudu$ls -l test_*
-rw-rw-r-- 1 work work 0 Mar 30 15:48 test_one
-rw-rw-r-- 1 work work 0 Mar 30 15:48 test_two
-
-i
强制shell询问是否需要覆盖已有文件,如果不回答y,文件复制将不会继续。work:~/dudu$cp -i test_one test_two cp: overwrite `test_two'?
-
复制到目录 / 从目录复制
work:~/dudu$cp test_one ./src/ work:~/dudu$ls -l src total 8 drwxrwxr-x 3 work work 4096 Jan 29 14:00 main drwxrwxr-x 3 work work 4096 Jan 29 14:00 test -rw-rw-r-- 1 work work 0 Mar 30 16:34 test_one # 注意src后有/,表示这是一个目录而非一个文件。 # 如果不加/,./src目录又不存在,当试图将一个文件复制到src子目录反而会创建一个名为src的文件,连错误消息都不会显示! # 本例采用了相对路径,也可以采用绝对路径 # 单点符.表示当前目录,非常实用!
-
-r
同-R
在一条命令中递归地复制整个目录的内容。work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src test_one work:~/dudu$mkdir stc work:~/dudu$cp -r src/ stc work:~/dudu$ls stc src work:~/dudu$rm -r stc/* work:~/dudu$cp -r src/* stc work:~/dudu$ls stc main test test_one test_two # # 注意:cp -r src stc:是将src目录(包括src目录本身)复制到stc目录中 # 注意:cp -r src/ stc:是将src目录(包括src目录本身)复制到stc目录中 # 注意:cp -r src/* stc:是将src目录内文件(不包括src目录本身)复制到stc目录中
mv命令
mv命令可以将文件和目录移动到另一个位置或重新命名
-
重命名
work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src test_one work:~/dudu$mv test_one test_two work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src test_two
-
移动位置
work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src test_two work:~/dudu$mv test_two src/test_three work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src work:~/dudu$ls src main test test_one test_three # 可以看见当前目录下的test_one已经移动到src目录下,并改了名字
-
移动文件夹
work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src test_one work:~/dudu$mkdir stc work:~/dudu$mv stc src work:~/dudu$ls src main stc test test_one test_two # # mkdir命令创建了stc目录 # mv命令移动stc目录到src目录
-
-i
和cp命令类似,在mv命令中使用-i参数,可以试图覆盖已有的文件时得到提示work:~/dudu$touch test_one work:~/dudu$mv -i test_one src mv: overwrite `src/test_one'? # touch命令创建了test_one新文件 # 使用-i选项得到了提示
rm命令
文件删除命令
注意:rm不加选项只能用来删除普通文件,即非目录文件
work:~/dudu/src$ls -F
main/ test/ test_one test_two
work:~/dudu/src$rm test_two
work:~/dudu/src$rm main/
rm: cannot remove `main/': Is a directory
-
-i
和cp命令类似,在rm命令中使用-i参数,可以试图删除已有的文件时得到提示work:~/dudu/src$ls main test test_one work:~/dudu/src$rm -i test_one rm: remove regular empty file `test_one'?
-
-f
强制删除,不带有任何提示!!! -
-r
同-R
可以递归删除整个目录的内容(包括目录本身)work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src test_one work:~/dudu$mkdir stc work:~/dudu$cp -r src/* stc work:~/dudu$ls -F stc main/ test/ test_one work:~/dudu$rm -r stc work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src test_one work:~/dudu$mkdir stc work:~/dudu$cp -r src/* stc work:~/dudu$rm -r stc/* work:~/dudu$ls stc work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src stc test_one work:~/dudu$rm -r stc/ work:~/dudu$ls build.sh Main.java README.md readme.txt release.sh src test_one # # 注意:rm -r stc/:递归删除目录内容包括目录本身 # 注意:rm -r stc :递归删除目录内容包括目录本身 # 注意:rm -r stc/* :递归删除目录内容同时不包括目录本身
rmdir命令
用于删除空目录,注意是空目录
work:~/dudu$mkdir stc
work:~/dudu$ls -F
build.sh* Main.java README.md readme.txt release.sh* src/ stc/ test_one
work:~/dudu$rmdir stc
work:~/dudu$ls -F
build.sh* Main.java README.md readme.txt release.sh* src/ test_one
file命令
查看文件类型
work:~/dudu$file src
src: directory
work:~/baidu/qualifiedcoder/wanglizhi04$file Main.java
Main.java: ASCII Java program text
cat命令
显示文本文件所有内容,对于大型文件来说,只能显示最后的1000行(因为cat命令是全部显示,但终端只有1000行)
work:~/dudu$cat Main.java
import java.util.List;
public class Main {
public static void main(String[] args) {
System.out.println("Hello");
System.out.println("World!");
}
}
-
-n
给所有的行加上行号work:~/dudu$cat -n Main.java 1 import java.util.List; 2 3 public class Main { 4 public static void main(String[] args) { 5 System.out.println("Hello"); 6 System.out.println("World!"); 7 } 8 }
-
-b
只给有文本的行加上行号work:~/dudu$cat -b Main.java 1 import java.util.List; 2 public class Main { 3 public static void main(String[] args) { 4 System.out.println("Hello"); 5 System.out.println("World!"); 6 } 7 }
more命令
与cat命令类似,more命令会显示文本文件的内容,但会在显示每页数据之后停下来。可以通过按空格键或回车键以逐行向前的方式浏览文本文件。浏览完之后,按q键退出。
less命令
与more命令类似,less命令会显示文本文件的内容,会在显示每页数据之后停下来,但比more命令更高,less支持文件内容搜索,并支持方向键浏览
注意:less命令使用后,屏幕底部会出现 : ,如下图所示,此时输入 / ,: 会自动变为 / ,然后输入搜索词,按回车,会搜索到匹配的文本内容
tail命令
tail命令会显示文件最后几行的内容(文件的“尾部”)。默认情况下,它会显示文件的末尾10行
-
-n
来修改所显示的行数,从文件末尾开始算work:~/dudu$tail -n 4 Main.java System.out.println("Hello"); System.out.println("World!"); } } # # 从从文件末尾开始算,显示四行
-
-f
允许在其他进程使用该文件时查看文件的内容。 tail命令会保持活动状态,并不断显示添加到文件中的内容。也就是当该文件末尾内容变化会显示到屏幕上,实时监测该文件(使用tail -f命令后,使用ctrl+c退出)
head命令
显示文件开头那些行的内容,默认前十行
-
-n
同tail命令一样,来修改所显示的行数,从文件开头开始算work:~/dudu$head -n 4 Main.java import java.util.List; public class Main { public static void main(String[] args) {