「Linux 基础」基本操作命令
目录/文件
查
ls - list directory contents
1
2
3
4ls [选项]... [文件]...
选项(常用):
-a 不隐藏任何以"."开始的项目
-l 每行只列出一个文件tree
1
2
3
4tree [选项] [目录名]
选项(常用):
-a 列出全部文件
-d 只列出目录cat - concatenate files and print
1
2
3cat [选项]... [文件]...
选项(常用):
-n 对输出的所有行编号
增
mkdir - make directories
1
mkdir [选项]... 目录...
删
rmdir - remove empty directories
1
rmdir [选项]... 目录...
只有空目录才可以使用
rmdir
命令删除。rm - remove files or directories
1
2
3
4
5rm [选项]... 文件...
选项(常用):
-r 递归删除目录及其内容
-f 强制删除。忽略不存在的文件,不提示确认
-i 需要确认,在使用文件扩展名删除多文件时有用
处理文件
sed
1 | sed [选项] 命令 输入文本 |
例:
输出my.txt的第三行。
1 | sed -n '3p' my.txt |
删除my.txt文件的第二行到最后一行。
1 | sed '2,$d' my.txt |
在整行范围内把str1替换为str2。如果没有g标记,则只有每行第一个匹配的str1被替换成str2。
1 | sed 's/str1/str2/g' my.txt |
-e
选项允许在同一行里执行多条命令。例子的第一条是第四行后添加一个str
,第二个命令是将str
替换为aaa
。命令的执行顺序对结果有影响。
1 | sed -e '4a\str ' -e 's/str/aaa/' my.txt |
双引号内可以使用变量:
1 | #!bin/bash |
awk
: 文本分析工具
1 | awk 'pattern action' file |
例:
所有第一项大于2的行,输出第一项和第三项:
1 | awk '$1>2 {print $1,$3}' my.txt |
-F指定分割的字符
,则输出用,
分隔的第二项:
1 | awk -F, '{print $2}' my.txt |
复制
cp - copy files and directories
1
2
3cp [选项]... 源文件... 目录
选项(常用):
-r 递归复制目录及其子目录内的所有内容
移动
mv - move/rename file
1
mv [选项]... 源文件... 目录
mv file ../file_mv
→ 移动至上一层并重命名。因此重命名文件也可使用mv
操作
比较
diff
1 | diff [选项] 文件1 文件2 |
权限
Linux的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod
可以藉以控制文件如何被他人所调
chmod
1 | chmod 权限设定字串 文件... |
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群组,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
此外chmod
也可以用数字来表示权限,格式为:
1 | chmod abc 文件 |
abc为三个数字,分别表示拥有者,群组,其他人的权限。r=4,w=2,x=1
,用这些数字的加和来表示权限。例如:chmod 777 file
和chmod a=rwx file
效果相同。
输出
shell使用三种流:
- 标准输入:stdin ,由0表示
- 标准输出:stdout,由1表示
- 标准错误:stderr,由2表示
重定向和管道可以重定向以上的流。
重定向
>
改变送出的数据信道,使>
前命令的输出数据输出到>
后指定的文件中去。
>>
重定向追加输出,将>>
前命令的输出数据追加输出到>>
后指定的文件中去
<
重定向输入,将<
后指定的文件中的数据输入到<
前的命令中
- 三种流可同时重定向
1 | command < input.txt 1>output.txt 2>err.txt |
管道
|
可以连接命令:
1 | command1 | command2 | command3 | ... |
以上内容是将command1
的stdout
发给command2
的stdin
,command2
的stdout
发给command3
的stdin
,依此类推。
1 | cat < my.sh | grep "Hello" > output.txt" |
上述命令将my.sh的内容作为cat指令标准输入,cat指令stdout发给grep指令的stdin,grep在其中查找字符串,最后将结果输出到output.txt。
查找
find - search for files in a directory hierarchy
1
2
3
4find -name 文件名
-name 选项可以在当前目录下递归地查找符合参数所示文件名的文件,并将文件的路径输出至屏幕上。
find -name "*.py"
find . -name "test*"locate
1
locate [选项] 文件名
locate也是查找文件的指令,与find的不同之处在于: find 是去硬盘找,locate 只在/var/lib/slocate
资料库中找。locate的速度比find快,它并不是真的查找文件,而是查数据库,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库。
grep - print lines matching a pattern
1
2
3
4
5
6
7grep [选项]... PATTERN [FILE]...
选项(常用):
-a 不忽略二进制数据进行搜索
-i 忽略文件大小写差异
-r 从文件夹递归查找
-n 显示行号
grep -n echo test
快捷键
Ctrl+C
终止当前程序的执行。Ctrl+Z
挂起当前程序(挂起程序后会显示该程序挂起编号,若想要恢复该程序可以使用fg [job_spec]
即可,job_spec
即为挂起编号,不输入时默认为最近挂起进程)Ctrl+D
终止输入(若正在使用Shell,则退出当前Shell)Ctrl+I
清屏