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结构的上下文中,中括号用来引用数组中每个元素的编号。