linux 命令及shell基础杂记

1、不管是linux命令行,还是Windows的Dos,执行一个命令,就会去path环境变量中找是否有这个变量。

pwd:print working directory

fdisk:查看系统disk

 

ctrl+l:清屏

ctrl+u:删除到行首

ctrl+a:光标到行首

ctrl+e:光标到行位‘

ctrl+z:把命令放到后台运行

ctrl+r:历史命令中搜索

一、搜索命令

1、locate:搜索文件名,是在一个数据库中搜索(一天更新一次),updatedb(强制更新)。

2、whereis:搜索执行命令及其man文档位置。which不能查看man文档。

3、find:搜索文件,功能强大,但也耗费资源。

4、grep:grep [options]  ‘pattern’ filename,在文件中搜索匹配字符串。

 

一般来说:搜索文件名采用通配符,完全匹配。在文件中搜索内容,采用正则表达式,搜索符合条件的字符串。

 

5、man相当于wahtis。ls --help

6、whoami:print effective userid

 

7、shell,壳,同gui一样,是用户与内核交互的入口。

 

8、远程登录退出:logout

 

二、挂载

1、

2、mount -a;把/etc/fstab这个文件中的所有开机自动挂载上。不要把杂七杂八的都写到这个文件,如果开机找不到要挂载的设备(比如说光盘,u盘),那么就会开不起机了。

6列:

# <file system>  <mount point>  <type>  <options>  <dump>  <pass>

 

① file system:要挂载的设备或伪文件系统:设备名称 or LABEL or UUID or 伪文件系统名称

1、使用设备名称(/dev/sda)来挂载分区时是被固定死的,一旦磁盘的插槽顺序发生了变化,就会出现名称不对应的问题。因为这个名称是会改变的。

2、使用label挂载就不用担心插槽顺序方面的问题。不过要随时注意你的Label name。

3、UUID,每个分区被格式化以后都会有一个UUID作为唯一的标识号。使用uuid挂载的话就不用担心会发生错乱的问题了。

 

② mount point:挂载点(扩展为swap):就是你要挂载到哪个目录下。

 

③ type:文件系统类型(auto 寻找默认的),

  普通设备挂载:ext#/xfs 等文件系统类型

  交换分区 swap:swap

  网络挂载地址 linux之间:nfs,windos挂载:cifs

  光盘 iso9660,文件 cifs

 

④ options:挂载选项:defaults代表包含了选项rw,suid,dev,exec,auto,nouser,async。有需要的功能可以添加,不能为空,这里用来填写设置选项,各个选项用逗号隔开。

 

⑤ dump:转储频率:备份 0:不做备份 1:每天转储 2:每隔一天转储

 

⑥ pass:开机时自检(非0),自检次序:(如果开机系统自检不过,就无法正常开机)

如果这里填0,则不检查;挂载点为 / 的(即根分区),必须在这里填写1,其他的都不能填写1。如果有分区填写大于1的话,则在检查完根分区后,接着按填写的数字从小到大依次检查下去。同数字的同时检查。比如第一和第二个分区填写2,第三和第四个分区填写3,则系统在检查完根分区后,接着同时检查第一和第二个分区,然后再同时检查第三和第四个分区。

 

三、Shell

命令行解释器。同时是一个功能强大的编程语言,即shell脚本。bash

/etc/shells

 

Shell还可以调用子shell,孙shell。

 

echo :把指定内容输出到屏幕上。

 

alias:别名,注销重登陆就失效。要想不失效,需要写入环境变量配置文件:~/.bashrc。 文件中别名直接生效:source ~/.bashrc

 

Linux命令分为两类,具体为内部命令外部命令

     内部命令:指shell内部集成的命令,此类命令无需人为安装,开机后自动运行在内存中,命令help查看所有内部命令的详情,如cd、type、echo、time、true等。

     外部命令:指通过外部介质安装的命令工具包,如通过yum、rpm等方式安装,具体安装路径在$PATH

 

 注:所有的内部命令在外部命令中都有存在,只是为了提高优先级而在shell中集成一部分

 

     命令查看: type查看命令分类,内部命令显示 shell相关信息,外部命令则显示$PATH路径 [root@localhost ~]#type time

   time is a shell keyword

   [root@localhost ~]# type date

   date is /bin/date

 

命令执行顺序:

1、alias > shell > hash > PATH

alias别名命令、内部命令、hash缓存命令、外部命令(path查找顺序中(冒号分隔的系统目录)找到的第一个)。

四、输出重定向   

标准输入:0

标准输出:1

输出------------à stdout(屏幕)

输出重定向-------------------------------à文件

 

覆盖:>

追加:>>

标准错误输出(2)重定向:2>   2>>

 

正确错误都写入文件:命令 >> 文件 2>>&1 其等价于命令 &>> 文件

正确错误分开存放:命令 >> 文件1  2>>文件2

 

输入统计:wc

输入重定向(几乎不会用):命令 < 文件名  比如:wc < test.log

命令 << 标识符

五、管道符

1、多命令顺序执行

1.1 顺序执行    命令1命令1

1.2 逻辑与   命令1&&命令2  只有命令1执行正确,命令2才会执行。命令1执行不正确,命令2不会执行。前面的命令执行成功,才会执行后面的命令,前面的命令执行失败,后面的命令不会执行

1.3 逻辑或  命令1||命令2  命令1执行正确,命令2不会执行。命令1执行不正确,命令2才会执行。当用此连接符连接多个命令时,前面的命令执行成功,则后面的命令不会执行。前面的命令执行失败,后面的命令才会执行。

 

2、管道符 |

命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象

 

六、特殊符号

1、 #符号

# 注释

行首以 # 开头(除#!之外)的是注释。#!是用于指定当前脚本的解释器。

 

2、引号

单引号、双引号用于用户把带有空格的字符串赋值给变量。如果没有单引号或双引号,shell会把空格后的字符串解释为命令。

     str="Today is Monday"

     echo $str

单引号和双引号的区别:单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括$\`

双引号包围的内容可以允许变量扩展,也允许转义字符的存在。如果字符串内出现双引号本身,需要转义,因此不一定双引号是成对的。

单引号括住的内容,被视为单一字符串,引号内的禁止变量扩展,所有字符均作为字符本身处理(除单引号本身之外),单引号必须成对出现。

 

3、斜线 反斜线

  3.1.斜线

     文件名路径分隔符。分隔文件名不同的部分(如/home/bozo/projects/Makefile)。也可以用来作为除法算术操作符

  3.2.反斜线,转义符号

      一种对单字符的引用机制。\X 将会“转义”字符X。这等价于"X",也等价于'X'。

 

4、反引号 `

 command 结构可以将命令的输出赋值到一个变量中去。

命令替换。这个引号包围的为命令,可以执行包围的命令,并将先执行的结果赋值给变量。如:a=`dirname '/tmp/x.log'` 。后面dirname返回的结果会赋值给a,注意,此处特地使用了反引号和单引号,注意区别。

 

5、美元符号 $

   5.1.变量替换,作为变量的前导符,用作变量替换,即引用一个变量的内容,比如:echo $PATH;a=5  $a 也是 5   其和${a}是等价的

   5.2.命令替换 $(命令)  与反应号作用是一样的,反引号实在是不容易分辨

 

6、小括号 ()

  6.1.命令组

  在括号中的命令列表,将会作为一个子 shell 来运行。在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的。父进程,也就是脚本本身,将不能够读取在子进程中创建的变量,也就是在子shell 中创建的变量。

#!/bin/bash

 a=123

( a=321;)

echo "a = $a"    //输出a=123,说明在子shell内修改了的变量,在父进程调用时是不会显示修改后的

 

7、大括号 { }

   7.1.文件名扩展

    cp t.{txt,back}  复制 txt 的内容到 back 中

   7.2.代码块

代码块,又被称为内部组,这个结构事实上创建了一个匿名函数(一个没有名字的函数)。然而,与“标准”函数不同的是,在其中声明的变量,对于脚本其他部分的代码来说还是可见的。

#!/bin/bash

 a=123

( a=321; )                 // 小括号里的相当于局部变量

echo"a=$a"          //输出a =123

 { a=321; }                //大括号里的相当于全局变量

echo"a=$a"          //输出a =321

 

8、中括号 []

8.1.条件

测试条件测试表达式放在[ ]中。

#!/bin/bash

a=5

if [ $a -gt 10]    //-gt  great than大于  -lt  less than小于

then

echo "a:$a"

else

echo"a>10"

 

8.2数组元素

在一个array结构的上下文中,中括号用来引用数组中每个元素的编号。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值