Shell Command
2023-12-14
| 2023-12-14
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
这里写文章的前言: 一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。

1.基础指令操作

  • . :代表此层目录,注意加cd跳转
  • .. :代表上一层目录
  • -:代表前一个工作目录
  • ~ :代表【目前用户身份】所在的家目录
  • ~account :代表account这个用户的家目录(account是账号名称)
 
  • alias:显示命令别名,如很多系统中vi=vim
    • alias name1='command':如 alias lm=‘ls -al | more’
    • unalias name1:取消别名
 
  • bc:简单好用的计算器
  • cal:显示日历
    • cal [month] [year] :显示指定年月的日历
  • date :显示日期与时间
 
  • chmod [-R] 777 文件或目录 :改变文件权限 777表示所有者/群组/其他分别对应的rwx权限
  • cp [-R] 来源文件 目标文件 :复制文件 -R 表示递归持续变更
  • Ctrl+c :中断当前程序
  • Ctrl+d :键盘输入结束,相当于exit
 
  • declare :定义变量的类型
  • df : 列出文件系统的整体磁盘使用量 (displays information about file system disk space usage on the mounted file system)
    • df [-ahikHTm] [目录或文件名]
      • a :列出所有的文件系统,包括系统特有的 /proc 等文件系统
      • k :以KBytes的容量显示各文件系统
      • m :以MBytes的容量显示各文件系统
      • h :以人们较易阅读的 GB、MB、KB 等格式自行显示
      • H :以 M = 1000K 取代 M = 1024K 的进位方式
      • T :连同该partition的filesystem名称例如(xfs)也列出
      • i :不用磁盘容量,而以 inode 的数量来显示
    • df :将系统内所有的 filesystem 列出来
    • df -h :将容量结果以易读的容量格式显示出来
    • df -h /etc :将 /etc 底下的可用的磁盘容量以易读的容量格式显示
 
  • du (provides information about the disk usage)
    • du [-ahskm] 文件或目录名称
      • a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已
      • h :以人们较易读的容量格式(G/M/K)显示(human-readable)
      • s :列出总量而已,而不列出每个目录占用容量(summary)
      • S :不包括子目录下的总计,与 -s 有点差别
      • k :以 KBytes 列出容量显示
      • m :以MBytes列出容量显示
    • du -sh * :查看当前路径下各文件/子文件夹磁盘使用情况
 
  • env/export :列出目前的shell环境下的所有环境变量与其内容
  • export 变量名 :自定义变量转成环境变量
  • EOF(END Of File)缩写,表示自定义终止符。在linux按ctrl+d就代表EOF
     
    • groupadd gname :增加新的群组
    • history :历史命令
      • history [n]
      • history [-c]
      • history [-raw] histfiles
      • n :数字,意思是【要列出最近的n笔命令行表】
      • c :将目前的shell中的所有history内容全部消除
      • a :将目前新增的 history 指令新增入 histfiles 中,若没有加hisfiles,则默认写入 ~/.bash_history
      • r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中
      • w :将目前的 history 记忆内容写入 histfiles 中
      • history 3 :列出目前最近的3条命令
    • id uname :查阅uname账号的属性
     
    • ln :为某一个文件在另一个目录建立一个同步的链接,不会重复占用磁盘空间
      • ln [参数] [源文件或目录] [目标文件或目录]
      • 软链接(symbolic link):
        • 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
        • 软链接可以 跨文件系统,硬链接不行
        • 软链接可以对一个不存在的文件名进行链接
        • 软链接可以对目录进行链接
      • 硬链接(hard link):
        • 硬链接,以文件副本的形式存在。但不占用实际空间
        • 不允许给目录创建硬链接
        • 硬链接只有在同一个文件系统中才能创建
      • 不论是硬链接还是软链接都不会将原来的档案复制一份,只会占用非常少量的磁盘空间
      • 必要参数:
        • b :删除,不该以前建立的链接
        • d :允许超级用户制作目录的硬链接
        • f :强制执行
        • i :交互模式,文件存在则提示用户是否覆盖
        • n :把符号链接视为一般目录
        • s :软链接(符号链接)
        • v :显示详细的处理过程
      • 选择参数
        • S S <字尾备份字符串>-suffix=<字尾备份字符串>
        • V V <备份方式>-version-control=<备份方式>
        • -help :显示帮助信息
        • -version :显示版本信息
      • ln log2013.log ln2013 :为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
      • ln -s log2013.log link2013 :为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效
     
    • ls :文件与目录的检视
    • lsattr [-adR] 文件或目录 :显示文件隐藏属性
      • a :将隐藏文件的属性也秀出来
      • d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名
      • R :连同子目录的数据也一并列出来
     
    • touch 文件名 :建立空文件
    • rm [-fir] 文件或目录 :删除谬或文件
      • f :就是force的意思,忽略不存在的文件,不回出现警告讯息
      • i :互动模式,在删除前会询问使用者是否确认
      • r :递归删除,整目录删除
    • rmdir [-p] 目录名称 :删除目录(注意rmdir只能删除空的目录),-p 表示连同上层空目录级联删除
    • mkdir [-mp] 目录名称 :创建目录
      • m :配置文件权限,例:mkdir -m 755 test
      • p :将所需要的目录(包含上级目录)递归建立
    • mv [-fiu] source destination :移动文件与目录,或更名
      • f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
      • i :若目标文件已经存在,会询问是否覆盖
      • u :若目标文件已存在,且source比较新,才会更新(update)
     
    • ps -aux :查看后台执行程序
     
    • pwd -P :显示目前所在的目录 -P 显示出确实的路径,而非使用链接(link)路径
     
    • reboot、halt、poweroff :重启
    • shutdown :关机
    • shutdown -h now :立刻关机
    • shutdown -h 20:25 :系统在今天的20:25关机,如果当前时间大于20:25隔天关机
    • shutdown -h +10 :系统再过十分钟自动关机
    • shutdown -r now :系统立刻重新启
    • shutdown -r +30 'The system will reboot' :再过30分钟系统会重新启动,并显示后面的讯息给所有在线的使用者
    • shutdown -k now 'This system will reboot' :仅发出警告信件的参数!系统并不会关机
     
    • set :查看所有变量(含环境变量和自定义变量),env升级版
     
    • shift+up :向前翻页
    • shift+down :向后翻页
     
    • useradd -G gname uname :建立uname账号,属于gname分组
     
    • find [PATH] [option] [action] :在指定路径下检索文件
      • find /home -user user1 :搜寻 /home 底下属于 user1 的文件
      • find / -name passwd :找出名为 passwd 这个文件
      • find / -name "*passwd*" :模糊匹配
      • find /dir1 /dir2 -name "*passwd*" :可以指定多个路径
      • find . -name "*passwd*" -exec ls -l {} \; :模糊匹配后输出相应信息
        • exec command :command为其他指令,-exec 后面可再接其他指令处理匹配到的结果
        • {} :代表 【由find找到的内容】,find的结果会放到 {} 中
        • exec 一直到 ; 是关键词,代表find额外动作的开始到结束,中间就是额外指令 ,这里是ls -l {}
        • 因为 ; 在bash环境下是有特殊意义的,因此利用反斜杠来跳脱
      • find / -size +1M :找出系统中,大于 1MB 的文件
    • whereis [-bmsu] 文件或目录名 :在一些特定的目录中寻找文件名
      • l :可以列出whereis会去查询的几个主要目录
      • b :只找 binary 格式的文件
      • m :只找在说明文件 manual 路径下的文件
      • s :只找 source 来源文件
      • u :搜寻不在上述三个项目当中的其他特殊文件
      • whereis 只找几个特定目录,因此速度比 find 快
     
    • man [命令] :查看命令帮助文档
    • info [命令] :查看指令详细内容
    • 一般看信息都用查看man文档,而help只是一个简单的描述,方便,但man文档中都包含了

    2.文件内容查阅

    • cat :由第一行开始显示文件内容
    • more :一页一页的显示文件内容
      • 空格键(space):代表向下翻一页
      • Enter:代表向下翻一行
      • /字符串:代表在这个显示的内容当中,向下搜寻【字符串】这个关键词
      • :f :立刻显示出文件名以及目前显示的行数
      • q :代表立刻离开 more,不再显示该文件内容
      • bctrl + b :代表往回翻页,不过这动作只对文件有用,对管线无用
    • less :与more类似,但是比more更好的是它可以向前翻页
      • 空格键:向下翻动一页
      • [pagedown] :向下翻动一页
      • [pageup] :向上翻动一页
      • /字符串 :向下搜寻【字符串】的功能
      • ?字符串 :向上搜寻【字符串】的功能
      • n :重复前一个搜寻(与 / 或 ?搭配用)
      • N :反向的重复前一个搜寻(与 / 或 ?搭配用)
      • g :前进到这个资料的第一行
      • G :前进到这个数据的最后一行去
      • q :离开less这个程序
    • head [-n number] 文件 :只看头几行
      • n :后面接数字,代表显示几行的意思
    • tail [-n number] 文件 :只看尾巴几行
      • n :后面接数字,代表显示几行的意思
      • tail -n +100 文件 :列出文件100行以后的数据
      • tail -f 文件 :持续侦测文件内容

    3.vim

    vim共分为三种模式
    • 一般指令模式(command mode):vi打开文件就是这个模式
    • 编辑模式(insert mode):按下【i,I,o,O,a,A,r,R】等任何一个字母之后才会进入编辑模式,ESC退出回到一般模式
    • 指令行命令模式(command-line mode):一般模式时输入【: / ?】三个中的任何一个按钮进入
    简单执行范例:
    • 使用 vi filename 进入一般指令模式
    • 按下 i 进入编辑模式,开始编辑文字
    • 按下 ESC 按钮回到一般指令模式
    • 按下 : 进入指令行模式,wq 文件保存并离开 vi 环境
    一般指令模式常用指令:
    • 移动光标的方法
      • 小键盘上下左右…
      • ctrl + f :屏幕向下移动一页
      • ctrl + b :屏幕向上移动一页
      • ctrl + d :屏幕向下移动半页
      • ctrl + u :屏幕向上移动半页
      • n<space> :n表示数字,例如20,按下数字后再按下空格,光标会向右移动这一行的20个字符
      • 0 或 功能键Home :移动到这一行的最前面字符处
      • $ 或 功能键End :移动到这一行的最后面字符处
      • gg :移动到这个文件第一行
      • G :移动到这个文件的最后一行
      • nG :n为数字。移动到这个文件的第n行
      • n<Enter> :n 为数字。光标向下移动 n 行
    • 搜寻与取代
      • /word :向光标之下寻找一个名称为word的字符串
      • ?word : 向光标之上寻找一个名称为word的字符串
      • n :代表【重复前一个搜寻动作】,如继续查找
      • N :与 n 相反,为【反向进行前一个搜寻动作】
      • 使用 /word 配合 n 及 N 是非常有帮助的,可以让你重复的找到一些你搜寻的关键词
      • :n1,n2s/word1/word2/g :n1 与 n2 位数字,在 n1 与 n2 行之间寻找word1这个字符串,并将该字符串取代为word2
      • :1,$s/word1/word2/g :从第一行到最后一行寻找word1字符串,并将该字符串取代为word2
      • :1,$s/word1/word2/gc :从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认是否需要取代
    • 删除、复制与贴上
      • x, X :在一行字当中,x为向后删除一个字符(相当于【del】),X为向前删除一个字符(相当于【backspace】)
      • nx :连续向后删除n个字符
      • dd :删除游标所在的那一整行
      • ndd :删除光标所在的向下n行
      • d1G :删除光标所在到第一行的所有数据
      • dG :删除光标所在到最后一行的所有数据
      • yy :复制游标所在的那一行
      • p, P :p为将已复制的数据在光标下一行贴上,P则为贴在游标上一行
      • u :复原前一个动作(撤销)
      • ctrl + r :重做上一个动作(回退)
      • . :重复前一个动作
    指令列模式常用指令:
    • 储存、离开等指令
      • :w :将编辑的数据写入硬盘文件中
      • :w! :若文件属性为【只读】时,强制写入该文件。是否成功与该文件的文件权限有关
      • :q :离开vi
      • :q! :若曾修改过文件,又不想储存,使用!为强制离开而不储存文件
      • :wq :储存后离开,若为 :wq! 则为强制储存后离开
      • ZZ :大写的Z,若文件没有更动,则不储存离开,若文件已经被更动过,则储存后离开
      • :w [filename] :将编辑的数据储存成另一个文件(类似另存档)
    • vim 环境的变更
      • :set nu :显示行号,设定之后,会在每一列的前缀显示该列的行号
      • :set nonu :与 set nu 相反,取消行号
     
    grep :分析一行讯息,若当中有我们所需要的信息,就将该行拿出来
    • grep [-acinv] [--color=auto] '搜寻字符串' filename
      • a :将binary 文件以 text 文件的方式搜寻数据
      • c :计算找到 ‘搜索字符串’ 的次数
      • i :忽略大小写的不同,所以大小写视为相同
      • n :顺便输出行号
      • v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
      • -color=auto :可以将找到的关键词部分加上颜色的显示
    • history | grep "test" :取出历史命令中带test的记录
    • history | grep -v "test" :取出历史命令中不带test的记录
    • history | grep "test" | cut -d ' ' -f 5 :取出历史命令中带test的记录以’ '切分取第五列

    📎 参考文章

     
    技术分享
  • Coding
  • 开发
  • 工具
  • Mac快捷键设置Notion效率提升
    Catalog