linux命令

Linux命令——文件管理

cat命令

命令:cat

cat命令用于连接文件并打印到标准输出设备上。

使用权限

所有使用者

语法格式

cat [选项列表] [文件列表]

参数说明

-A, –show-all

-b, –number-nonblank 给非空输出行编号

-E, –show-ends 在每行结束显示$

-s, –squeeze-blank 将所有的连续的多个空行替换为一个空行

-T, –show-tabs 把TAB字符显示为^I

-v, –show-nonprinting 除了LFD和TAB之外所有控制符用^和M-记方式显示

–help 显示帮助信息并退出

–version 显示版本信息并退出

实例

查看textfile1.txt文件的内容并并打印到标准输出设备上

cat textfile1.txt

把textfile1.txt的文档内容加上行号后输入textfile2.txt文档中:

cat -n textfile1.txt > textfile2.txt

把textfile1.txt和textfile.txt的文档内容加上行号(空白行不加)之后将内容附加到textfile3.txt文档里

cat -b textfile1.txt textfile2.txt >> textfile3.txt

chmod命令

命令:chmod

chmod - 改变文件的访问权限

使用权限

所有使用者

语法格式

chmod [-cfvR] [--help] [--version] [--]

参数说明

其中:

  • u表示文件的拥有者,g表示与该文件的拥有者属于同一个群体(group)者,o表示其他以外的人, a表示这三者皆是(所有用户)。
  • +表示增加权限、-表示取消权限、=表示唯一设定权限。
  • r表示可读,w表示可写, x表示可执行,X表示只有当该文件是一个子目录或者该文件已经被设定过为可执行。

其他参数说明:

-c, –changes 只有在文件的权限确实改变时才进行详细的说明

-f, –silent, –quiet 不能输出权限不能改变的文件的错误信息

-v, –verbose 详细说明权限的变化

-R, –recursive 改变目录及其所有子目录的文件的权限

–help 显示辅助说明

–version 显示版本信息

实例

将文件file.txt设置为所有人皆可读取:

chmod ugo+r file1.txt
chmod a+r file1.txt

将文件file.txt设置为该文件拥有者,与其他同一个群体者可写入,但其他以外的人则不可写入

chmod ug+w,o-w file.txt

将hello.py设定为只有该文件拥有者才可以执行

chmod u+x hello.py

将目录下的所有文件与子目录皆设为任何人可读取

chmod -R a+r *

用数字来表示权限

用的三位二进制数来表示,如 rwx为111,转为十进制为7,rw-为110,十进制为6,r-x为101,为5,r–为100,为4

设置为所有人可读可写可执行

chmod 777 hello.py

chown 命令

命令chown

修改文件所有者和组别

chown修改每个由第一个非选项参数声明的给定file文件的用户和/或组的所有权

使用权限

所有使用者

语法格式

chown [options] user [:group] file...

参数说明

-R 递归地修改目录及其下面内容的所有权

-c, –changes 详尽地描述每一个file实际改变了哪些所有权

-f, –silent, –quiet 不打印文件所有全部能修改的报错信息

-h, –no-dereference 只作用于其本身的符号链接,而部修改他们所指向的文件, 这只在提供了lchown系统调用的情况下才使用

-v, –verbose 详尽地描述对每个file所执行的操作(或者无操作)

–dereference 修改符号链接目标端的所有权,而非符号链接自身

–reference=rfile 修改file的所有权为rfile的所有权

–help 在标准输出上打印一条用法信息,并以成功状态退出

–version 在标准输出上打印版本信息,然后以成功状态退出

实例

将文件file1.txt的拥有者设为users群体的使用者tengtengcai

将文件file2.txt的拥有者设为root超级管理员的使用者

chown tengtengcai:users file1.txt
chown root file2.txt

cmp命令

命令cmp

比较两个文件一个字节一个字节的不同

语法

cmp [-clsv][-i <字符数目>] [--help] [文件名称1] [文件名称2]

参数

-b, –print-bytes 输出不同的字节

-i, –ignore-initial 跳过两个输入的第一个跳过字节

-l, –verbose 输出两个文件不同字节数的值

-n, –bytes=LIMIT 最多比较limit个字节

-s, –quiet, –silent 支持所有的普通输出

–help 显示帮助信息并正常退出

-v, –version 输出版本信息并正常退出

实例

比较file1.py和file2.py两文件字节的不同

cmp file1.py file2.py

diff命令

命令diff

找出两个文件的不同点

语法

diff [选项] 源文件 目标文件

参数

-a 所有的文件都视为文本文件来逐行比较,甚至他们似乎不是文本文件

-b 忽略空格引起的变化

-B 忽略插入删除空行引起的变化

–brief 仅报告文件是否相异,在乎差别的细节

-c 使用上下问输出格式

-C 行数(一个整数)

–context[=lines] 使用上下问输出格式,显示以指定行数(一个整数), 或者是三行(当行数没有给出时,对于正确的操作,上下文至少要有两行)

-i 忽略大小写

-r 比较子目录中的文件

-v 显示版本信息,并正常退出

-help 显示帮助信息,并正常退出

实例

比较两个文件的不同

diff cal.py cal1.py 
3c3
< 
---
> # 这是注释
30c30
< 
---
> # 这也是个注释

file命令

命令file

确定文件类型

语法

file [-bcnsvzL][-f 命令文件][-m 幻数文件] file...

参数

-b 不输出文件名(简要模式)

-c 检查时打印输出幻数文件的解析结果,常与-m一起使用,用了在安装幻数文件之前调试它.

-f 命名文件 从参数表前的[命名文件], 中读出将要检查的文件名(每行一个文件), 要有[命名文件],或者至少有一个文件名参数;如果要检查标准输入,使用‘’-‘’作为文件参数.

-m list 指定包含幻数的文件列表,可以是单个文件,也可以是用冒号分开的多个文件.

-n 每检查完一个文件就强制刷新标准输出,仅在检查一组文件时才有效,一般在将文件类型输出到管道时才采用此选项.

-v 打印程序版本并退出.

-z 视图查看压缩文件内部信息.

-L (在支持符号链接的系统上)选项显示符号链接文件的原文件,就像ls命令的like-name选项

-s 通常,file只是视图去检查在文件列表中那些stat报告为正常文件的文件类型,由于读特殊文件将可能导致不可知后果,所以这样可以防止发生问题。使用-s选项时file命令也将去读取文件列表中的块特殊文件和字符特殊文件.

实例

显示文件类型:

file test.py 
test.py: Python script, UTF-8 Unicode text executable

# 不显示文件名称
file -b test.py   
Python script, UTF-8 Unicode text executable

# 显示MIME类型
file -i test.py
test.py: text/x-python; charset=utf-8

# 不显示名字而且显示出MiME类型
file -bi test.py
text/x-python; charset=utf-8

显示符号链接的文件类型

file nginxhost/
nginxhost/: directory

file nginxhost
nginxhost: symbolic link to `/usr/share/nginx/html/'

git命令

命令git

git是文字模式下的管理员,git是用来管理文件的程序,是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

语法

git [选项参数]

参数

add 添加文件到索引

clone 将存储库克隆到新目录中

commit 记录对数据库的更改

diff 显示提交和提交工作树之间的更改

init 创建一个空Git存储库或重新初始化一个已存在的

log 显示提交日志

**mv **移动或重命名文件、目录或symlink

pull 从另一个存储库或本地分支获取和合并

push 与相关对象一起更新远程引用

rm 从工作树和索引中删除文件

show 显示各种类型的对象

status 显示工作数状态

tag 创建、列出、删除或验证用签名标记的对象

实例

初始化一个仓库

git init
Initialized empty Git repository in /home/tianjun/pycode/.git/

克隆一个github上的一个项目

git clone https://github.com/TengTengCai/BookCrawler.git
Cloning into 'BookCrawler'...
remote: Counting objects: 118, done.
remote: Compressing objects: 100% (48/48), done.
remote: Total 118 (delta 36), reused 49 (delta 19), pack-reused 48
Receiving objects: 100% (118/118), 71.65 KiB | 13.00 KiB/s, done.
Resolving deltas: 100% (62/62), done.

文件到索引

git add code.py

将记录变更到文件库

git commit -m '版本说明,消息'

创建分支

git checkout -b tj

查看分支

git branch
  master
* tj

切换分支

git branch master

删除分支

git checkout -D tj

将文件库发送到远端服务器进行更新,只有配置了远端服务器才会生效

git push origin <分支名>

从远端服务器进行更新或回退文件库版本,只有配置了远端服务器才会生效

git pull origin <分支名>

cut命令

命令cut

在文件的每一行中提取片断,在每个文件file的各行中,把提取的片段显示在标准输出

语法

cut [option] [file]

参数

-b, –bytes=LIST 输出这些字节,这些字符位置将忽略多字符边界,除非也指定了-n标志

-c, –character=LIST 输出这些字符

-d, –delimiter=DELIM 自定义分隔符,默认为制表符

-f, –fields=LIST 与-d一起使用,指定显示哪个区域

-n 取消分割多字节符。仅和-b标志一起使用。如果字符的最后一个字符落在由-b标志的List参数指示的范围之内,该字符将被写出,否则,该字符将被移除

实例

查看文件中每行的第一个字符

cat hello.txt 
你好
我是藤藤菜
他
cut -c 1 hello.txt 
你
我
他

ln命令

命令ln

ln命令是一个飞车重要的命令,它的功能是为某一文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只需要在某一个固定的目录,放上该文件,然后在其他的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

语法

ln [参数] [源文件或目录] [目标文件或目录]

软链接

  • 软链接,以路径的形式存在,类似于windows操作系统中的快捷方式
  • 软链接可以跨文件系统,硬链接不可以
  • 软链接可以对一个不存在的文件名进行链接
  • 软连接可以对目录进行链接

硬链接

  • 硬链接,以文件副本的形式存在。但不占用实际空间
  • 不允许给目录创建硬链接
  • 硬链接只有在同一个文件系统中才能创建

参数

-b 删除,覆盖以前建立的链接

-d 允许超级用户制作目录的硬链接

-f 强制执行

-i 交互模式,文件存在则提示用户是否覆盖

-n 把符号链接视为一般目录

-s 软链接(符号链接)

-v 显示详细的处理过程

实例

less命令

命令less

它与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件

语法

less [参数] [文件]

参数

-b <缓冲区大小> 设置缓存区的大小

-e 当文件显示结束后,自动离开

-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件

-g 只标志最后搜索的关键词

-i 忽略搜索时的大小写

-m 显示类似more命令的百分比

-N 显示每行的行号

-o <文件名> 将less输出的内容在指定文件中保存起来

-Q 不使用警告音

-s 显示连续空行为一行

-S 行过长时将超出部分舍弃

-x<数字> 将“tab”键显示为规定的数字空格

/字符串 向下搜索字符串的功能

?字符串 向上搜索字符串的功能

n 重复前一个搜索(与/或?有关)

N 反向重复前一个搜索(与/或?有关)

b 向后翻一页

d向后翻半页

h 显示帮助界面

Q 退出less命令

u 向前滚动半页

y 向前滚动一行

空格键 滚动一页

回车键 滚动一行

[pagedown] 向下翻动一页

[pageup] 向上翻动一页

实例

查看文件

less myredis.conf

ps查看进程信息并通过less分页显示

ps -ef | less

more命令

命令more

类似cat,不过会以一页一页的形式显示,更方便使用者逐页阅读,而基本的命令就是按空白键(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字符串的功能(与vi相似)使用中的说明文件,按h

语法

more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames...]

参数

-num 一次显示的行数

-d 提示使用者,在画面下方显示[Press space to continue, ‘q’ to quit], 如果使用者按错键,则会显示[Press ‘h’ for instructions] 而不是‘哔’一声

-l 取消遇见特殊字元^L(送纸字元)时会暂停的功能

-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)

-p 不以卷动的方式显示每一页,而是先清除屏幕后再显示内容

-c 于-p相似,不同的是先显示内容再清除其他旧资料

-s当遇到有连续两行以上的空白行,就代换为一行的空白行

-u 不显示下引号

+num从第num行开始显示

fileNames 欲显示内容的文档,可为复数个数

实例

逐页显示myredis.conf文件

more myredis.conf

从第480行开始显示myredis.conf文件

more +480 myredis.conf

mv命令

命令mv

用来为文件或目录改名、或将文件或目录移入其他位置。

语法

mv [选项] ... 源文件 目标文件
mv [选项] ... 源文件... 目录
mv [选项] ... --target-directory=DIRECTORY SOURCE...

参数

-b 为现有的每个目标文件作一个备份

-f, –force 覆盖前永不提示

-i, –interactive 覆盖前提示

-u, –update 只移动更老的或者标记新的非目录

-v, –verbose 说明完成了什么

–help 显示帮助并退出程序

–version 输出版本信息且退出程序

实例

将文件aaa更名为bbb

mv aaa bbb

将info目录放入logs目录中。注意,如果logs目录不存在,则该命令info改名为logs

mv info/ logs

将/home/tengtengcai 下的所有文件和目录移到当前目录下

mv /usr/student/* .

rm命令

命令rm

移除文件或目录

语法

rm [操作] [文件或目录]

参数

-i 删除前逐一询问确认

-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认

-r 将目录及以下之档案亦逐一删除

实例

删除文件可以直接使用rm命令,若删除目录则必须配合选项“-r”,例如

rm -i test.txt 
rm:是否删除普通空文件 "test.txt"?y

不询问,直接删除homework目录下的所有文件

rm -rf homework/*

文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令

touch命令

命令touch

用于修改文件或者目录的时间属性,包括存取和更改时间。若文件不存在,系统会创建一个新的文件。

语法

touch [-acm] [-r ref_file(参照文件)] | -t time(时间值)] | file...

参数

-a 修改文件file的存取时间

-c 不创建文件file

-m 修改文件file file

-r ref_file 将参照文件 ref_file相应的时间戳记的数值作为指定文件 file时间戳记的新值

**-t time **使用指定的时间值time做为指定文件file相应时间戳记的新值,此处的time规定为如下形式的十进制数:[[CC]YY]MMDDhhmm[.SS]

实例

使用指令修改文件的时间属性为当前系统时间

touch test.txt

使用指令时,如果指定的文件不存在,则将创建一个新的空白文件,如,在当前目录下使用指令创建一个空白文件file

touch file

cp命令

命令cp

复制文件和目录

语法

cp [选项] 文件路径
cp [选项] 文件...目录

参数

-a, –archive复制时,尽可能保持文件的结构和属性.但不保持目录结构 等同于 -dpR

-d, –no-dereference 复制符号链接作为符号链接而不是复制它指向的文件,并且保护在副本中原文件之间的硬链接.

-f, –force 删除存在的目标文件

-i, –interactive 无论是否覆盖现存文件都作提示

-l, –link 制作硬链接代替非目录拷贝

-p, –parents 保持原始文件的所有者,组,许可和时间表属性

-r 递归地复制目录,复制任何非目录和非符号链接

-R, –recursive 递归地复制目录,保留非目录

实例

使用命令将当前目录test下所有文件复制到新目录newdir下

cp -r test/* newdir

你可能感兴趣的:(linux命令)