一、ls及其使用
ls是英文单词list的缩写,功能是列出当前目录下的文件列表,是非常常见的Linux命令之一。
1.Linux下目录特点
以 . 开头的文件是隐藏文件,使用ls查看时,需要加上 -a(all) 参数才能显示。
. 代表当前目录,. . 代表上一级目录(可以理解为隐藏的两个文件路径)。
cd .
跳到当前目录;
cd . .
跳到上一级目录。
2.ls常用选项
选项 | 功能 |
---|---|
[-a] | all,显示所有内容,包含隐藏文件 |
[-l] | (字母L小写) 显示文件详细信息 |
[-h] | human-readable,需要配合-l(字母L小写)选项,所谓的人性化显示 |
练习:
touch 123.txt
touch .123.txt
查看:
ls -a
显示:
ls -l
显示:
ls -l -h
显示:
只是文件大小显示改变。
选项可以合并,且顺序不影响
ls -lh
显示与前者相同。
查看所有文件和文件夹(包括隐藏文件)
ls -lah
显示:
3.ls配合通配符
通配符 | 功能 |
---|---|
* | 代表任意多个任意字符,可以没有字符 |
? | 代表就是一个任意字符,至少一个字符 |
[ ] | 代表一个字符,取值范围在[ ]中,例如[1234 ]匹配1、2、3、4中的任意一个,[a-g] 匹配从a到g范围内的任意一个 |
应用:
批量查询、修改文件。
练习:
touch 123.txt
touch 124.txt
touch 125.txt
touch 126.txt
touch 223.txt
touch 323.txt
touch 111.txt
touch 131.txt
touch 11.txt
touch 12345.txt
ls
显示:
找到以1开头的文件
ls 1*
显示:
找到以3结尾的文件
ls *3.txt
显示:
ls 1*1.txt
显示:
ls ?1?.txt
显示:
查询含有1的文件:
ls *1*.txt
显示:
ls 12[12345].txt
显示:
ls 12[1-6].txt
显示:
rm 1*1.txt
ls
显示:
rm *.txt
ls -a
显示:
删除文件时,只删除了非隐藏文件
删除全部文件用
rm .*.txt
ls -a
显示:
二、cd命令
cd是英文单词change directory的缩写,其功能就是跳转目录。
它与之前的几个命令不同的是,cd是BASH内置命令,没有帮助文档与相关手册。
所以在使用$which cd
的时候是看不到它的二进制路径的,因为系统中不存在cd命令的二进制文件。
命令 | 功能 |
---|---|
cd | 切换到当前用户的家目录(home/用户名) |
cd ~ | 和 cd 效果一样 |
cd … | 跳转到上一级目录 |
cd - | 在最近两个目录来回切换,有点像图形界面的 Alt + Tab切换窗口的感觉 |
cd后面的路径可以是两种:
相对路径和绝对路径。
相对路径:
指相对当前目录的路径;
绝对路径:
是指全路径。可以从 /(根目录)开始,或者是~(家目录)开始。
注意:
Linux下目录名称以及文件名称大小写是有区别的!
练习:
mkdir aaa
cd aaa
mkdir bbb
cd bbb
mkdir ccc
cd ccc
pwd
显示:
回到家目录:
cd ~
显示:
再次到ccc:
cd -
显示:
逐级回到家目录:
cd ..
cd ..
cd ..
显示:
cd ../Downloads
显示:
三、创建和删除的操作
1.mkdir命令
创建一个新的目录。
选项 | 功能 |
---|---|
[-p] | 可以递归创建目录 |
注意:
新建的目录名称不能重名。
2.rm命令
删除文件或目录。
选项 | 功能 |
---|---|
[-f] | 强制删除,忽略不存在的文件,无需提示 |
[-r] | 递归删除目录下的内容,删除文件夹就用这个选项 |
练习:
touch 123.txt
说明:
创建文件时,如果文件存在,只修改创建时间,不改变内容。
创建嵌套目录:
mkdir -p a/b/c
结果:
在Linux中,文件和文件夹不能重名。
touch 123
makdir 123
显示:
先创建文件夹,再创建同名文件时,相当于改变创建时间。
rm -f aabbcc
显示:
rm -r *
显示:
四、复制、移动文件
1.拷贝文件
cp命令:
拷贝文件或者目录,类似DOS中的copy。
cp 源文件 目标文件
选项 | 功能 |
---|---|
[-i] | interactive互动,覆盖文件时有提示 |
[-r] | 如果cp跟上的是目录,那么将会递归拷贝目录下的所有子目录和文件 |
tree命令:
tree命令可以将目录结构显示出来(树状显示)。
选项 | 功能 |
---|---|
[-d] | directory,只显示目录 |
有的同学系统中默认没有此命令。所以会提示:
可以用
sudo snap install tree
命令安装。
练习:
mkdir -p aaa/bbb/ccc
tree
显示:
touch aaa/123.txt
tree
显示:
tree ~
显示:
cd /
mkdir -p ~/Desktop/a/b/c
tree ~/Desktop
显示:
只看目录
tree -d ~/Desktop
显示:
cd Desktop/
cp aaa/123.txt .
tree ~
显示:
cp aaa/123.txt test.txt
显示:
带提示:
cp -i aaa/123.txt .
显示:
拷贝文件夹:
cp -r a b
tree
显示:
如果目标文件夹存在相同名称文件,则会提示覆盖。
2.移动文件
mv命令:
mv是move的缩写,用来移动文件/目录。
小技巧:
如果需要重命名,也可以使用mv命令覆盖当前文件/目录 达到效果
选项 | 功能 |
---|---|
[-i] | interactive,覆盖文件时有提示 |
练习:
mkdir -p a/b/c
touch a/b/c/123.txt a/b/c/124.txt a/b/c/125.txt
tree
显示:
mv a/b/c/123.txt .
mv a/b/c .
显示:
移动文件夹不需要-r选项。
如果目标文件夹存在相同名称文件,则会提示覆盖。
带提示:
mv -i c/124.txt 123.txt
显示:
mv -i 123.txt readme.txt
可实现修改文件名的功能。
五、查看文件内容相关命令
命令 | 功能 |
---|---|
cat 文件名 | concatenate,查看文件内容、创建文件、文件合并、追加文件内容等 |
more 文件名 | more,分屏显示文件内容(内容多一般用more) |
grep 搜索内容 文件名 | grep,搜索文件内容 |
1.查看文件
cat:
- 查看文件内容、创建文件、文件合并、追加文件内容等;
- 命令会一次性显示所有内容,所以适合查看内容较少的文件。
选项 | 功能 |
---|---|
[-b] | 显示每一行的行号 |
[-n] | 只显示有内容的行号,空行不算一行 |
more:
此命令可以分屏显示文件内容,每次只显示一页内容。所以适合查看内容多的文件。
使用more的操作按键:
操作按键 | 功能 |
---|---|
空格键 | 显示下一页 |
回车键 Enter | 显示下一行 |
b | back,显示上一页 |
f | forward,向前和空格效果一样 |
q | quit,退出 |
/ 搜索文字 | 搜索文本中的内容 |
cat 123.txt
显示:
cat -b 123.txt
显示:
cat -n 123.txt
显示:
more 123.txt
显示:
2.查找文件内容
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
选项 | 功能 |
---|---|
[-n] | line-number,显示匹配行及行号 |
[-v] | invert-match,选中不匹配的行 |
[-i] | ignore-case,忽略大小写 |
grep常用查找方式:
- 在file_name中 搜索Hello_world这个单词
grep Hello_world file_name
grep "Hello_world" file_name
- 在多个文件中查找
grep "Hello_world" file_1 file_2 file_3 ...
- 常用两种模式查找
参数 | 功能 |
---|---|
^hello | 行首,搜索以hello开头的行 |
world$ | 行尾,搜索以world结束的行 |
注意:
区分大小写。
grep corley 123.txt
显示:
带行号:
grep -n corley 123.txt
显示:
偏移字节数:
grep -b corley 123.txt
显示;
不区分大小写:
grep -in corley 123.txt
显示:
不包含corley:
grep -inv corley 123.txt
显示:
字符中间有空格时,加双引号:
grep -inv "hello corley" 123.txt
显示:
六、重定向&管道输出符
1.重定向
符号 > >>
- Linux中允许将命令执行结果 重定向到一个文件;
- 将本应该显示在终端上的内容输出/追加到指定文件中。
符号 | 功能 |
---|---|
> | 输出重定向到一个文件或设备 覆盖原来的文件 |
>> | 输出重定向到一个文件或设备 追加原来的文件 |
echo会在终端中显示参数指定的文字,通常会和重定向联合使用
2.管道输出
符号 |
- Linux允许将一个命令的输出通过管道作为另外一个命令的输入。
command 1 | command 2 | command 3 … …
echo hello world > abc
vi abc
显示:
ls -lh > abc
结果:
tree >> abc
结果:
管道符:
ls -lh ~
ls -lah ~
ls -lah ~ > b
grep -n vi b
显示:
相当于管道输出:
ls -lah ~ | grep -n vi
显示:
ls -lah ~/.*vi*
显示:
这种输出相对不直观。
ls -lah ~ | grep -in vi
显示:
转载:https://blog.csdn.net/CUFEECR/article/details/104076931