Linux常用文件管理命令

191 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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

输出重定向

一般命令的输出都会显示在终端中,有此时候需要将一些命令结果保存到文件中并进行后续的分析,则需要重定向技术

: 覆盖技术

: 追加输出

命令行下编辑,编译,运行程序

  1. 编辑
    $ vim [FILE]
       $ gedit [FILE]
    
  2. 编译
    $ g++ code.cpp   #输出文件默认为a.out
       $ g++ code.cpp -o code #输出文件为code$ g++ code.cpp -o code -O2 # 开启O2优化
       $ g++ code.cpp -o code -Wall #显示所有警告建议开启
    
  3. 运行程序
    $ ./code
       $ ./a.out
    
  4. 其他辅助工具
    $ 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末尾几行
-ffollow输出文件修改的内容,用于追踪文件修改
示例: tail -n 2 test.txt

wget:

语法:wget [参数] [url地址]

功能:下载网络文件

参数
-bbackground后台下载
-Pdirectory-prefix下载到指定目录
-ttries 最大尝试次数
-ccontinue断点续传clear
-ppage-requisites下载页面所有内容,包括图片、视频等
-rrecursive递归下载
示例:下载百度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 [参数] 查找内容 源文件

功能描述:在文件内搜索字符串匹配的行并输出

参数
-ccount只输出匹配行的计数
-nline-number

示例: grep -n James test.txt

压缩解压:

tar:

语法:tar [参数] 包名.tar.gz 待打包的内容

功能描述:打包目录,压缩后的文件格式为.tar.gz

参数
-ccreate生成.tar打包文件
-xextract解包.tar文件
-vverbose显示详细信息
-ffile指定压缩后的文件名
-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 [选项]

功能描述:查看系统中所有进程

参数
-aall 显示现行终端机下的所有程序,包括其他用户的程序(比如多克隆几个会话执行不同命令,也会列出来)
-uuserlist 以用户为主的格式来显示程序状况
-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 $PATHcut -d ':' -f 3,5:输出PATH用:分割后第3、5列数据
echo $PATHcut -d ':' -f 3-5:输出PATH用:分割后第3-5列数据
echo $PATHcut -c 3,5:输出PATH的第3、5个字符
echo $PATHcut -c 3-5:输出PATH的第3-5个字符
sort将每行内容按字典序排序
可以从stdin中读取多行数据
可以从命令行参数中读取文件名列表
xargs将stdin中的数据用空格或回车分割成命令行参数
find . -name '*.py'xargs catwc -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包|