Linux命令

Posted jason1999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令相关的知识,希望对你有一定的参考价值。

Linux命令(一)

文件管理

1.cat

  • cat 命令用于连接文件并打印到标准输出设备上。
  • 使用权限
    所有使用者
  • 语法格式
cat [-AbeEnstTuv] [--help] [--version] fileName

参数说明:

  1. -n 或 --number:由 1 开始对所有输出的行数编号。

  2. -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

  3. -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

  4. -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

  5. -E 或 --show-ends : 在每行结束处显示 $。

  6. -T 或 --show-tabs: 将 TAB 字符显示为 ^I。

  7. -A, --show-all:等价于 -vET。

  8. -e:等价于"-vE"选项;

  9. -t:等价于"-vT"选项;

实例:

  • 把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

    cat -n textfile1 > textfile2

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

    cat -b textfile1 textfile2 >> textfile3

两个>> 是在文末加入
一个> 全部修改
清空 /etc/test.txt 文档内容:

cat /dev/null > /etc/test.txt

cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:

cat /dev/fd0 > OUTFILE

相反的,如果想把 image file 写到软盘,输入:

cat IMG_FILE > /dev/fd0

注:

    1. OUTFILE 指输出的镜像文件名。
    1. IMG_FILE 指镜像文件。
    1. 若从镜像文件写回 device 时,device 容量需与相当。
    1. 通常用制作开机磁片。

2. mv

Linux mv命令用来为文件或目录改名、或将文件或目录移入其它位置。
语法:

mv [options] source dest
mv [options] source... directory

参数说明:

  • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
  • -f: 在mv操作要覆盖某已有的目标文件时不给任何指示;

mv参数设置与运行结果

命令格式 运行结果
mv 文件名 文件名 将源文件名改为目标文件名
mv 文件名 目录名 将文件移动到目标目录
mv 目录名 目录名 目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名
mv 目录名 文件名 出错
  • 实例:

将文件 aaa 更名为 bbb :

mv aaa bbb

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

mv info/ logs

再如将/usr/student下的所有文件和目录移到当前目录下,命令行为:

$ mv /usr/student/* .

目标目录与原目录一致,指定了新文件名,效果就是仅仅重命名。

mv /home/ffxhd/a.txt /home/ffxhd/b.txt

目标目录与原目录不一致,没有指定新文件名,效果就是仅仅移动。

mv /home/ffxhd/a.txt /home/ffxhd/test/

或者

mv /home/ffxhd/a.txt /home/ffxhd/test

目标目录与原目录一致, 指定了新文件名,效果就是:移动 + 重命名。

mv /home/ffxhd/a.txt /home/ffxhd/test/c.txt

3. git

Linux git命令是文字模式下的文件管理员。

git是用来管理文件的程序,它十分类似DOS下的Norton Commander,具有互动式操作界面。它的操作方法和Norton Commander几乎一样。

  • 1、创建

克隆一个已存在的远程版本库到本地

$ git clone ssh://user@domain.com/repo.git

创建一个新的本地版本库

$ git init

  • 2、本地修改

在工作区修改文件

$ git status

追踪修改的文件(对比工作区与版本库的区别)

$ git diff

添加所有当前修改到暂存区(下一次提交前)

$ git add

添加指定文件到暂存区(下一次提交前)

$ git add -p <file>

提交所有本地修改的文件

$ git commit -a

提交暂存区的文件

$ git commit

修改最后一次提交的信息(没有推送提交之前)

$ git commit --amend

  • 3、提交历史

显示从开始到最近的所有提交日志

$ git log

显示指定文件的修改日志

$ git log -p <file>

显示指定文件谁在哪些时间做了哪些修改

$ git blame <file>

  • 4、分支和标签

列出所有已存在的分支

$ git branch

切换分支并将当前版本指向该分支

$ git checkout <branch>

创建一个基于当前版本的新分支

$ git branch <new-branch>

创建一个基于远程分支的新分支(与远程分支做关联)

$ git branch --track <new-branch> <remote-branch>

删除一个本地分支

$ git branch -d <branch>

给当前提交打上一个标签

$ git tag <tag-name>

  • 5、更新和推送

列出所有当前已配置的远程版本库(-v为详细显示)

$ git remote -v

显示一个远程版本库的信息

$ git remote show <remote>

添加并命名一个新的远程版本库

$ git remote add <remote> <url>

从远程版本库中下载所有修改,但不整合进当前版本

$ git fetch <remote>

下载修改并直接合并或整合进当前版本

$ git pull <remote> <branch>

推送本地修改到一个远程版本库

$ git push <remote> <branch>

在远程版本库上删除一个分支

$ git push <remote> :<branch>

推送所有标签(到远程版本库)

$ git push --tags

  • 6、合并&重新定义(版本库状态)

将分支合并进当前版本

$ git merge <branch>

重新定义当前版本在分支上的状态(没有推送提交之前)

$ git rebase <branch>

终止一个重新定义

$ git rebase --abort

在解决冲突后继续一个重新定义

$ git rebase --continue

使用配置合并工具保存冲突

$ git mergetool

手动编辑解决冲突并在解决冲突之后标记保存文件

$ git add <resolved-file>

删除标记保存的文件

$ git rm <resolved-file>

  • 7、撤销

在工作目录中丢弃所有本地修改

$ git reset --hard HEAD

丢弃指定文件的本地修改

$ git checkout HEAD <file>

撤销一个提交(撤销会产生一个新的提交)

$ git revert <commit>

回退到一个之前的提交,并丢弃之后的所有修改

$ git reset --hard <commit>

回退到一个之前的提交,并撤销暂存区的修改(即重新放回工作区)

$ git reset <commit>

回退到一个之前的提交,并保留未提交的本地修改

$ git reset --keep <commit>

4.rm

Linux rm命令用于删除一个文件或者目录。

  • 语法

rm [options] name...

参数

-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
  • 实例

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

# rm  test.txt 
rm:是否删除 一般文件 "test.txt"? y  
# rm  homework  
rm: 无法删除目录"homework": 是一个目录  
# rm  -r  homework  
rm:是否删除 目录 "homework"? y 

删除当前目录下的所有文件及目录,命令行为:

rm -r *

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

5.chmod

Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。

  • 使用权限
    所有使用者
  • 语法

    chmod [-cfvR] [--help] [--version] mode file...

  • 参数说明
    mode : 权限设定字串,格式如下 :

    [ugoa...][[+-=][rwxX]...][,...]

其中:

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

其他参数

c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本

实例
将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

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

chmod a+r file1.txt

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

chmod ug+w,o-w file1.txt file2.txt

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

chmod u+x ex1.py

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

chmod -R a+r *

此外chmod也可以用数字来表示权限如 :

chmod 777 file

语法为:

chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1

  • 若要rwx属性则4+2+1=7;
  • 若要rw-属性则4+2=6;
  • 若要r-x属性则4+1=5。

    chmod a=rwx file

chmod 777 file

效果相同

chmod ug=rwx,o=x file

chmod 771 file

效果相同

若用chmod 4755 filename可使此程序具有root的权限

以上是关于Linux命令的主要内容,如果未能解决你的问题,请参考以下文章

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

VSCode自定义代码片段15——git命令操作一个完整流程