Linux(三)——Unix&Linux 的基础命令

快捷键

Ctl-A   光标移动到行首
Ctl-C   终止命令
Ctl-D   注销登录
Ctl-E   光标移动到行尾
Ctl-U   删除光标到行首的所有字符,在某些设置下,删除全行
Ctl-W   删除当前光标到前边的最近一个空格之间的字符
Ctl-H   删除光标前边的字符
Ctl-R   匹配最相近的一个文件,然后输出
Ctl-Z   将目前任务转为后台运行

Path 相关(cd、ls)

pwd             #print working dir
// 目录查看
ls == ls -h     #list files under current directory
ls -l           #list with block and property
ls -A           #list including hidden files
ls -Alh         #list in a friendly view
ls /home        #list a upper dir
ls *.json       #list by wildcards
ls -lrt         #按时间排序,以列表的方式显示目录项

// 目录跳转
cd -            #switch to last path
cd  ..          #switch to upper path
cd /            #switch to root path
cd ~/hexo       #switch by absolute path
cd ./user/xx    #switch by relative path

帮助命令(help、man、info、type)

help            #仅适用于内置命令,效果不佳
man ls          #查看命令手册
info ls         #GNU的更详细的命令手册

type xxx
$ xxx is a shell builtin        #说明是内建命令,这些命令都是在 bash 源码中的 builtins 的 .def 中
$ xxx is /usr/bin/xxx           #说明是外部命令
$ xxx is an alias for xx        #说明该指令为命令别名所设定的名称

文件相关

文件查看(cat、nl、head、tail、more、less、file)

//文件内容
cat file            #preview file
cat -n fileA        #preview file with linenum
nl fileA            #preview trim file with linenum
more/less fileA     #分页查看,more会直接结束,less 需要q退出
tail file           #只看后几行
tail -n 2 file      #只看2行

cut -c -5 file      #每行前五个字节(包含第五个)
cut -c 5- file      #每行前五个之后的字节(包含第五个)
cut -c 5 file       #每行第五个字节
cut -c 2-5 file     #每行第2到5之间的字节(包含第五个)

//文件类型
file file           #查看文件类型

文件创建、复制、删除、重命名(touch、mkdir、rm、cp、mv)

// 创建
touch filename              #create empty file
mkdir xxx/xx -p             #create path(-p: create xxx)
//复制
cp -r A B                   #duplicate A's files to B(B unexist & only one floor)
cp -r A B                   #copy A to B(if B exist)
//删除
rm filename                 #delete filename
rm -r dir                   #delete dir
//重命名
mv xxx/oldfile xxx/newfile  #rename a file
mv oldfile xxx/newfile      #rename & move a file
mv dir  xxx/dir             #move dir to xxx/dir which is created

文件压缩和解压

// 压缩 zip
zip -rqo file.zip ./filename        #普通压缩
zip -{1…9} -rqo zip.zip ./filename  #不同级别压缩、加密压缩
zip -dv cp.zip file                 #从cp.zip中删除文件
    # -d 从压缩文件内删除指定的文件
    # -o 将压缩文件的更改时间设成和文件的最新更改时间一致
    # -q 不显示指令执行过程
    # -r 递归处理,将指定目录下的所有文件和子目录一并处理
    # -v 显示指令执行过程或显示版本信息

//查看
unzip -l file.zip                   #显示压缩文件内所包含的文件

//解压 unzip
unzip file.zip                      #直接解压
unzip -q file.zip -d ./dir          #解压到 dir 中
    # -d <目录> 指定文件解压缩后所要存储的目录
    # -q 执行时不显示任何信息
    # -v 执行时显示详细的信息

//tar
//压缩
tar -cf file.tar xxx.xx             #把xxx.xx 压缩为 file.tar
tar -czvf file.tar.gz xxx.xx        #把xxx.xx 打包为 tar.gz 文件
    # -c 建立新的备份文件
    # -f 指定备份文件
    # -v(--verbose) 显示指令执行过程
    # -z(--gzip) 通过gzip指令处理备份文件

tar -cphf etc.tar /dir              #一般用于系统备份
    # -p 保留文件属性和跟随链接(符号链接或软链接)
    # -h(--dereference) 不建立符号连接,直接复制该连接所指向的原始文件
    # 使用 tar 备份文件当你在其他主机还原时希望保留文件的属性和备份链接指向的源文件而不是链接本身

//查看压缩内容
tar -tf file.tar                    #查看 file.tar
tar -tzvf test.tar.gz               #查看压缩文件内容
    # -C<目录>(--directory) 指定文件解压缩后所要存储的目录
    # -f 指定备份文件

//解压
tar -xf file.tar -C ./dir           #解压 file.tar
tar -xzf file.tar.gz                #解压 tar.gz 打包文件
    # -x (--extract) 从备份文件中还原文件
    # -z(--gzip) 通过gzip指令处理备份文件

文件软链接(ln)

软链接:

  1. 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  2. 软链接可以 跨文件系统 ,硬链接不可以
  3. 软链接可以对一个不存在的文件名进行链接
  4. 软链接可以对目录进行链接
ln -s log.log link          #为log.log 建立名为 link 的软链接
    # -s 软链接(符号链接)

文件查找(whereis、which、find)

locate \*.jpg       #locate 会维护一个数据库,查找时不会真的去找
which who           #查找安装的命令、程序可以用

//find 命令
find [path] [option] [action]
find . -name \*.jpg     #查找 jpg 文件
find . -type f          #查找一般文件
    #d: 目录
    #c: 字型装置文件
    #b: 区块装置文件
    #p: 具名贮列
    #f: 一般文件
    #l: 符号连结
    #s: socket
find . -ctime n         #在过去n天内被变更过的文件
find . -atime n         #在过去n天内被访问过的文件
find . -mtime n         #在过去n天内容最后被修改的时间的文件
    # -mtime n:n 为数字,表示为在 n 天之前的一天之内修改过的文件
    # -mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
    # -mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
find . -newer /home/shiyanlou/Code
    # -newer file:file为一个已存在的文件,列出比file还要新的文件

find . -type f -perm 644 -exec ls -l {} \;
    #查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件

File Permission(chown、chmod)

  • 3 个权限组,每组 3 位
  • 一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件
  • 图片暂缺
chmod 600 file          #为 file 设置600权限
//g、o 还有 u 分别表示 group、others和user
//+ 和 - 分别表示增加和去掉相应的权限
chmod go-rw iphone6     #表示去掉group、others 的读写权限

chown username file     #grant file ownership to user
chown :group file       #grant file ownership to group
chown xx:xx file        #grant file ownership to xx & xx
chown -R user:group dir #grant dir(-r) ownership to xx & xx

文件合并(join、paste)

join file1 file2         #逐行合并,相同的部分仅保留一份
    #「1 hello」和「1 world」合并为「1 hello world」

paste f1 f2 [文件...]     #逐行合并
    # -d 自定义合并后的分割符( '\n' 以回车为每行的分割符)
paste -s file            #将一个文件中的多行数据合并为一行显示,但不修改原文件

软件安装

dpkg 和 apt-get

主要应用于类 Debian 系统
dpkg 是 Debian 的软件包管理的底层系统(名称来源于 Debian Package),被用于安装、卸载和供给和 .deb软件包相关的信息。

apt 是Advance Packaging Tool(高级包装工具)的缩写,APT最早被设计成dpkg的前端,用来处理deb格式的软件包,现在已经成为 Debian 及其派生发行版的软件包管理器。

apt 主要解决了软件的安装源、依赖关系处理、软件更新和发行版升级的问题。

apt-get 的使用

一般情况下,使用 apt 命令即可完成一般的安装操作。
主要由三个功能组成

  • apt-get
  • apt-cache
  • apt-file
// apt-get
apt-get update          #更新软件源,软件源记录了软件和软件依赖,通过一并安装依赖保证软件能够正常运行
apt-get install name    #安装软件
apt-get remove name     #移除<package>以及任何依此存包的其它包
apt-get purge name      #与remove相同,同时移除配置等文件
apt-get autoremove name #移除不再被依赖的软件包
apt-get autoclean       #移除已安装的软件包
    # -y 自动同意安装软件包的选项
    # -q 静默安装方式
    # -f 修复损坏的依赖关系
    # -d 只下载不安装

// apt-cache
apt-cache search softname #搜索是否安装了该软件

// apt-file

dpkg 的使用

dpkg -l                 #列出系统中安装的所有程序
sudo dpkg -i name.deb   #安装指定deb包
sudo dpkg -r name       #移除指定的软件包
dpkg -s name            #查看已安装软件的详细信息

RPM 和 yum

具体使用方法还请自行搜索。
Linux rpm命令 | 菜鸟教程

RPM包管理器(简称RPM,全称为The RPM Package Manager),是由Red Hat推出的软件包管理系统,现在在各种发行版中普遍使用,被用于安装、卸载和供给和 .rpm软件包相关的信息。

使用RPM的发行版
Fedora 和 Red Hat Enterprise Linux
CentOS、Oracle Linux
openSUSE 和 SUSE Linux Enterprise

rpm软件包形式管理软件虽然方便,但是rpm只是追踪软件包之间的依赖关系并没有进行解决。

yum(yellowdog Updater,Modified)是一个rpm的前端程序,主要目的是用来解决rpm的依赖关系问题,其特点如下:

  • 自动解决依赖关系
  • 可以对rpm进行分组,并基于组进行安装操作
  • 引入仓库概念,支持多个仓库
  • 配置简单

Homebrew

macOS 上使用的包管理器,功能强大,使用方便。

主要是凑一下 Unix 系统包管理的数。

详细介绍参看少数派文章 像 Mac 高手一样管理应用,从 Homebrew 开始

Linux(三)——Unix&Linux 的基础命令的更多相关文章

  1. 对Linux(Unix)的基础知识归纳

    前言,不论是原生APP(Android&IOS),还是大型架构级基础环境(.NET&J2EE,或LAMP阵营等), 基本都不可避免的涉及到Linux(Unix),故还是觉得有必要把自己 ...

  2. linux远程方式,以及基础命令

    最近准备学习linux系统,购买了阿里巴巴的云服务器,系统为CentOS. 一.连接实例 1.使用管理终端. 这是阿里巴巴云服务器管理控制台,需要登录阿里巴巴,找到自己实例后,点击右侧远程连接即刻. ...

  3. linux rhel unix centos FreeBSD 常用命令

    一:使用CentOS常用命令查看cpu more /proc/cpuinfo | grep "model name" grep "model name" /pr ...

  4. Linux(2):基础命令

    linux 的规则: 1. linux 命令行组成结构:如下 [root@neo ~]# [用户名@主机名 当前工作路径]# ~ 用户的家目录 2. linux系统命令操作语法的格式(命令的样子): ...

  5. Linux学习日志第一天——基础命令①

    文章目录 前言 命令的作用及基本构成 关于路径 命令 ls (list) 命令 pwd (print working directory) 命令cd (change directory) 命令 mkd ...

  6. Linux(一) - Unix&Linux 历史

    Unix Unix 的诞生 Unix的历史可以追溯到20世纪60年代中期,当时麻省理工学院,AT&T,贝尔实验室和通用电气公司联合开发了一种名为Multics的操作系统,Multics 中存在 ...

  7. Linux(二) - Unix&Linux 基本概念

    主机 = 内核 + 实用工具 内核(kernel) 当计算机启动时,计算机要经历一系列动作,这些动作构成了引导过程.引导过程的最后一个动作是启动一个非常复杂的程序,该程序就被称为内核(Kernel) ...

  8. Linux vs Unix - Linux与Unix到底有什么不同?

    来自:Linux迷链接:https://www.linuxmi.com/linux-vs-unix.html Linux和Unix这两个术语可以互换地用来指同一操作系统.这在很大程度上是由于他们惊人的 ...

  9. 【Linux】unix/Linux常用命令英文全称

    英文全称解释更容易理解 知其然,更要知其所以然 man: Manual 意思是手册,可以用这个命令查询其他命令的用法. pwd:Print working directory 显示当前工作路径. su ...

  10. linux之vi编辑器的基础命令

    1,假如要在这个php文件的phpinfo.php;之后加入一行,我们可以先按键盘的"a",光标就会跳转到之前绿色光标之后,也就是说,"a"是代表在当前光标之后 ...

随机推荐

  1. salesforce初探

      Salesforce的商业模式? 从做CRM SAAS起家,可以理解为在线CRM,不需要硬件和服务器,输入用户名和密码就能登陆使用.2007年推出PaaS平台Force.com,可以说,它依托CR ...

  2. Android屏幕适配讲解与实战

    文章大纲 一.屏幕适配是什么二. 重要概念讲解三.屏幕适配实战四.项目源码下载   一.屏幕适配是什么   Android中屏幕适配就是通过对尺寸单位.图片.文字.布局这四种类型的资源进行合理的设计和 ...

  3. MongoDb 集群不可用后SECONDARY节点强制启动

    机房意外断电断网不得不预防,下面模拟测试某机房断电断网,B机房断电断网后A机房可正常提供服务,A机房断电断网后可能需要强制重启继续提供服务了,目前查看数据都还在,暂时没验证是否有数据丢失,小试了一把. ...

  4. Sql中CHARINDEX用法

    CHARINDEX作用 写SQL语句我们经常需要判断一个字符串中是否包含另一个字符串,但是SQL SERVER中并没有像C#提供了Contains函数,不过SQL SERVER中提供了一个叫CHAEI ...

  5. nginx 安装、启动、重启、关闭 (linux系统命令行)

    前言: 最近在部署我的hexo静态博客到腾讯云服务器上,用到了很多nginx的知识,在此做下总结: 刚接触的linux服务器上,nginx配置乱的有点令人发指,就把老的卸载了重新装一下. 1.卸载 y ...

  6. 在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制

    Swashbuckle.AspNetCore3.0 介绍 一个使用 ASP.NET Core 构建的 API 的 Swagger 工具.直接从您的路由,控制器和模型生成漂亮的 API 文档,包括用于探 ...

  7. 关于.Net mvc 项目在本地vs运行响应时间过长无法访问时,解决方法!

    最近可能是刚升级了电脑使用了window10操作系统,总是遇到了一些以前没有遇到过的事情! 今早来到公司本来准备写bug的,但是当我打开vs运行的时候发现今天的电脑响应的时间明显的要比之前打开网页调试 ...

  8. LINQ 常规实践总结

    1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续两次OrderBy,后面一个有可能会打乱前面一个的排序顺序,可能与预期不符. 要实现sql中的order by word,nam ...

  9. Xcode 10 iOS12 "A valid provisioning profile for this executable was not found

    问题:Xcode10 build 没问题,跑虚拟机也没问题,数据线连上run到真机上出现 Xcode 10 iOS12 "A valid provisioning profile for t ...

  10. 死磕 java集合之ConcurrentHashMap源码分析(二)——扩容

    本章接着上一章,链接直达请点我. 初始化桶数组 第一次放元素时,初始化桶数组. private final Node<K,V>[] initTable() { Node<K,V> ...