持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
| Linux | 常用文件管理命令 |
|---|---|
| 禁令 | rm /* -rf |
| ctrl + c | 取消命令,并且换行,可以杀死某一个命令 |
| ctrl + u | 清空本行命令 |
| tab键 | 可以补全命令和文件名。连按两次tab键,可以显示备选选项 |
| ls | 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件 |
| ls -a | 可以看全部文件,包括隐形文件 |
| ls -A | 不显示当前目录和上层目录 |
| ll == ls -la == ls -al | |
| l | 表示输出文件的详细信息 |
| hl | 表示人性化输出 |
| pwd | 显示当前路径 |
| cd XXX | 进入XXX目录下 |
| .. /上层目录: | |
| cd .. | 返回上层目录 |
| cd .. | 返回上一层 |
| cd - | 回退到上一个目录(和cd ..表示不一样) |
| cd / | 和cd ./一样 /表示根目录 |
| ~/ | 表示家目录 |
| cp XXX YYY | 将XXX文件复制成YYY,XXX和YYY可以是一个路径 比如../dir_c/a.txt,表示上层目录下的 dir_c 文件夹下的文件a.txt cp a/tmp.txt b/tmp1.text 将文件从a文件夹复制粘贴到b文件夹中并重新命名 cp a b -r 将a文件夹复制粘贴到b文件夹中 cp a c -r将a文件夹复制黏贴到a的同级文件夹中并重新命名为c |
| mv XXX YYY | 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;重命名也是用这个命令,剪切+粘贴 如果是用.开头的文件,会默认设为隐藏文件 |
| mkdir XXX | 创建文件夹 |
| mkdir y\ c | 创建y c文件夹 |
| touch XXX | 创建一个文件 |
| rm XXX | 删除普通文件,可以多个删除文件 |
| rm a/* | 删除a文件夹中的所有文件 |
| rm XXX -r | 删除文件夹 |
| rm * -r | 删除当前文件夹下所有文件和文件夹 |
| rm * -i | 删除前逐一询问确认 |
| rm * -f | 即使原档案属性设为唯读,亦直接删除,无需逐一确认 |
| cat XXX | 展示文件XXX中的内容 |
| history | 显示历史指令 |
| 复制文本 | windows/Linux下:Ctrl + insert,Mac下:command + c |
| 粘贴文本 | windows/Linux下:Shift + insert,Mac下:command + v |
输出重定向
一般命令的输出都会显示在终端中,有此时候需要将一些命令结果保存到文件中并进行后续的分析,则需要重定向技术
: 覆盖技术
: 追加输出
命令行下编辑,编译,运行程序
- 编辑
$ vim [FILE] $ gedit [FILE] - 编译
$ g++ code.cpp #输出文件默认为a.out $ g++ code.cpp -o code #输出文件为code$ g++ code.cpp -o code -O2 # 开启O2优化 $ g++ code.cpp -o code -Wall #显示所有警告建议开启 - 运行程序
$ ./code $ ./a.out - 其他辅助工具
$ time ./code #统计运行时间 $ diff -b test.out test.ans # 比较文件差异,-b参数忽略行末空格
mkdir:
语法:mkdir [选项] 目录名称
功能:创建文件夹
示例: mkdir test -p 创建多层目录(mkdir -p test/test1)
rm:
语法:rm [选项] 目录名称
功能:删除文件夹
示例:
rm test (rmdir -p test/test1)
| 参数 | |
|---|---|
| -i | 删除前逐一询问确认 |
| -f | 即使原档案属性设为唯读,亦直接删除,无需逐一确认 |
| -r | 将目录及以下之档案亦逐一删除 |
| -p | 删除多层目录 |
删除文件可以直接无参数执行,删除目录则需要使用-r
通常我们可以直接使用-rf参数直接删除指定的目录或文件
cp:
语法:cp 源目录或文件 目标目录或文件
功能:复制文件,复制文件夹必须加 -r
示例: cp test test.txt (将test复制为test.txt,复制时重命名) -r 递归复制整个文件夹(cp -r test test1 将所有test目录内容复制到test1目录(自动创建test1目录))
mv:
语法:mv [选项] 源目标
功能描述:移动文件或重命名文件
示例:
命名: mv test test.txt(将test文件重命名为test.txt)、
移动文件: mv a.txt ./user/b.txt (相对路径移动并重命名文件)
重命名文件夹: mv aaa/ bbb
rm:
语法:rm [选项] 文件
功能描述:删除文件及目录
选项: -f:force强制执行 -r:recursive递归执行
示例: rm -rf test2
文件相关命令:
touch:
语法:touch [选项] 文件名
功能描述:新建文件
示例: touch test.txt
echo:
语法:echo 字符串或变量
功能描述:输出字符串或变量值,还可以搭配从定向符将内容存储到文件
示例:
echo hello
echo $SHELL
echo this is echo >> test.txt
cat:
语法:cat [选项] 文件名
功能描述:查看文件内容,从第一行开始显示
| 选项 | |
|---|---|
| -A | 列出特殊字符而非空白 |
| -b | 列出行号,空白行不算行号 |
| -n | 列出行号,空白行也会有行号 |
| -v | 列出一些看不出来的特殊字符 |
示例:cat -n test.txt
more:
语法:more [选项] 文件
功能描述:查看文件内容,一页一页的显示
使用说明:
| 空格键(space) | 向下翻一页 |
|---|---|
| enter | 向下翻一行 |
| q | 退出more,不在显示文件内容 |
| ctrl+f | 向下滚动一屏 |
| ctrl+b | 返回上一屏 |
| = | 输出当前行的行号 |
| :f | 输出文件名和当前行号 |
head:
语法:head [选项] 文件
功能描述:查看文件内容,只看头几行
选项: -n:查看头n行 示例:head -n 2 test.txt(只看头两行)
tail:
语法:tail [选项] 文件
功能描述:查看文件内容,只查看文件末尾几行
| 选项 | |
|---|---|
| -n | 末尾几行 |
| -f | follow输出文件修改的内容,用于追踪文件修改 |
| 示例: tail -n 2 test.txt |
wget:
语法:wget [参数] [url地址]
功能:下载网络文件
| 参数 | |
|---|---|
| -b | background后台下载 |
| -P | directory-prefix下载到指定目录 |
| -t | tries 最大尝试次数 |
| -c | continue断点续传clear |
| -p | page-requisites下载页面所有内容,包括图片、视频等 |
| -r | recursive递归下载 |
| 示例:下载百度logo wget www.baidu.com/img/bd_logo… |
查找命令:
find:
语法:find [搜索范围] [参数] [匹配条件]
功能描述:查找文件或目录
| 参数说明 | |
|---|---|
| -name | 按文件名称查找 |
| -user | 按文件拥有者查找 |
| -size | 根按文件大小查找文件(+n大于,-n小于,n等于) |
示例:
find test/ -name test1.txt
find test/ -user root
find test/ -size -102400
grep:
语法:grep [参数] 查找内容 源文件
功能描述:在文件内搜索字符串匹配的行并输出
| 参数 | |
|---|---|
| -c | count只输出匹配行的计数 |
| -n | line-number |
示例: grep -n James test.txt
压缩解压:
tar:
语法:tar [参数] 包名.tar.gz 待打包的内容
功能描述:打包目录,压缩后的文件格式为.tar.gz
| 参数 | |
|---|---|
| -c | create生成.tar打包文件 |
| -x | extract解包.tar文件 |
| -v | verbose显示详细信息 |
| -f | file指定压缩后的文件名 |
| -z | 打包同时压缩 |
| -C | 解压到指定目录 |
| 常用 | |
|---|---|
| tar -cvf 打包名.tar 源文件名1 源文件名2…… (打包文件) | |
| tar -xvf 打包文件名 (解包) | |
| tar -zcvf 压缩名.tar.gz 源文件名1 源文件名2…… (打包并压缩) | |
| tar -zxvf 压缩文件名 (解压缩并解打包) |
| 示例 |
|---|
| tar -cvf abc.tar a.txt b.txt c.txt |
| tar -xvf abc.tar |
| tar -zcvf abc.tar.gz a.txt b.txt c.txt |
| tar -zxvf abc.tar.gz |
| tar -zcvf abc.tar.gz test/ (压缩整个目录) |
| zip和unzip: |
压缩:
zip [参数] 包名.zip
解压:
unzip 包名.zip
功能描述:压缩文件和目录,windows和linux通用且可以压缩目录并保留源文件
参数: -r:recurse-paths递归压缩目录
示例:
zip test.zip test.txt test1.txt unzip test.zip
进程线程命令:
ps:
语法:ps [选项]
功能描述:查看系统中所有进程
| 参数 | |
|---|---|
| -a | all 显示现行终端机下的所有程序,包括其他用户的程序(比如多克隆几个会话执行不同命令,也会列出来) |
| -u | userlist 以用户为主的格式来显示程序状况 |
| -x | 显示所有程序,不以终端机来区分(前面讲过终端有很多类型,不仅显示当前终端) |
示例:
ps -aux
配合管道命令: ps -aux | grep xxx
kill:
语法:kill [选项] 进程id
功能描述:终止某个指定pid的服务进程
选项: -9:强迫进程立即停止
示例: kill -9 65482
系统状态检测命令:
netstat:
语法:netstat [参数]
功能描述:显示整个系统目前网络情况,比如目前的链接、数据包传递数据、路由表内容等
示例:netstat
free:
语法:free [选项]
功能描述:显示当前系统中内存的使用信息 选项:
-m:megabytes以兆字节显示 -h:human带单位输出
关机:
shutdown: 语法:shutdown [选项] [关机时间] [提示内容]
功能描述:关机
| 选项 | |
|---|---|
| -h | 关机 |
| -r | 重启 |
系统状况
top
查看所有进程的信息(Linux的任务管理器)
| 参数 | |
|---|---|
| 打开后,输入M | 按使用内存排序 |
| 打开后,输入P | 按使用CPU排序 |
| 打开后,输入q | 退出 |
| df -h | 查看硬盘使用情况 |
| free -h | 查看内存使用情况 |
| du -a | 查看所有目录以及文件的容量信息 |
| du -s | 仅显示总容量 |
| du -h | 人性化显示容量信息 |
| du -sh | 查看当前目录占用的硬盘空间 |
| ps aux | 查看所有进程 |
| kill -9 pid | 杀死编号为pid的进程 |
| kill -s SIGTERM pid | 传递某个具体的信号 |
| netstat -nt | 查看所有网络连接 |
| date | 显示系统的时间日期 |
| cal | 查看日历 |
| clear/ctrl + l | 清屏 |
| w | 列出当前登陆的用户 |
| ping www.baidu.com | 检查是否连网 |
文件权限
| 命令 | |
|---|---|
| chmod | 修改文件权限 |
| chmod +x xxx | 给xxx添加可执行权限 |
| chmod -x xxx | 去掉xxx的可执行权限 |
| chmod 777 xxx | 将xxx的权限改成777 |
| chmod 777 xxx -R | 递归修改整个文件夹的权限 |
文件检索
| 命令 | |||
|---|---|---|---|
| find /path/to/directory/ -name '*.py' | 搜索某个文件路径下的所有*.py文件 | ||
| grep xxx | 从stdin中读入若干行数据,如果某行中包含xxx,则输出该行;否则忽略该行 | ||
| wc | 统计行数、单词数、字节数,既可以从stdin中直接读入内容;也可以在命令行参数中传入文件名列表 | ||
| wc -l | 统计行数 | ||
| wc -w | 统计单词数 | ||
| wc -c | 统计字节数 | ||
| tree | 展示当前目录的文件结构 | ||
| tree /path/to/directory/ | 展示某个目录的文件结构 | ||
| tree -a | 展示隐藏文件 | ||
| ag xxx | 搜索当前目录下的所有文件,检索xxx字符串 | ||
| cut | 分割一行内容 | ||
| 从stdin中读入多行数据 | |||
| echo $PATH | cut -d ':' -f 3,5:输出PATH用:分割后第3、5列数据 | ||
| echo $PATH | cut -d ':' -f 3-5:输出PATH用:分割后第3-5列数据 | ||
| echo $PATH | cut -c 3,5:输出PATH的第3、5个字符 | ||
| echo $PATH | cut -c 3-5:输出PATH的第3-5个字符 | ||
| sort | 将每行内容按字典序排序 | ||
| 可以从stdin中读取多行数据 | |||
| 可以从命令行参数中读取文件名列表 | |||
| xargs | 将stdin中的数据用空格或回车分割成命令行参数 | ||
| find . -name '*.py' | xargs cat | wc -l | 统计当前目录下所有python文件的总行数 |
查看文件内容
| more | 浏览文件内容 |
|---|---|
| 回车 | 下一行 |
| 空格 | 下一页 |
| b | 上一页 |
| q | 退出 |
| less | 与more类似,功能更全 |
|---|---|
| 回车 | 下一行 |
| y | 上一行 |
| Page Down | 下一页 |
| Page Up | 上一页 |
| q | 退出 |
| 命令 | |
|---|---|
| head | 查看文件头部内容,默认显示前10行 |
| head -3 xxx | 展示xxx的前3行内容,同时支持从stdin读入内容 |
| tail | 查看文件尾部内容,默认显示末尾10行 |
| tail -3 xxx | 展示xxx末尾3行内容,同时支持从stdin读入内容 |
用户相关
|history|展示当前用户的历史操作。内容存放在~/.bash_history中|
工具
| 命令 | |
|---|---|
| md5sum | 计算md5哈希值,可以从stdin读入内容,也可以在命令行参数中传入文件名列表 |
| time command | 统计command命令的执行时间 |
| ipython3 | 交互式python3环境。可以当做计算器,或者批量管理文件 |
| ! echo "Hello World" | !表示执行shell脚本 |
| watch -n 0.1 command | 每0.1秒执行一次command命令 |
| tar | 压缩文件 |
| tar -zcvf xxx.tar.gz /path/to/file/* | 压缩 |
| tar -zxvf xxx.tar.gz | 解压缩 |
| diff xxx yyy | 查找文件xxx与yyy的不同点 |
安装软件
|sudo command|以root身份执行command命令| |apt-get install xxx|安装软件| |pip install xxx --user --upgrade|安装python包|