shell初探

linux注意点

linux和window的区别

linux严格区分大小写,注意和doc是不一样的
linux的所有内容都以文件的形式保存,包括硬件
linux没有扩展名的这种名称的

  • 压缩包:.gz .bz2 .tar.baz2 .tgz等
  • 二进制: .rpm
  • 网页 html .php
  • 脚本 .sh
  • 配置文件 .conf
    以上就是约定俗称的的名称但是如果没有
    window的程序不能直接在linux下运行

字符界面的优势

占用的系统资源更少
减少了出错,减少了被攻击的可能性

linux的安装

  • ide 硬盘”、: /dev/hd*

  • scsi usb sata : /dev/sd*

linux的常用命令

[root@loclalhost ~]#
root 当前登录用户
localhost 主机名
~当前所在的目录
#超级用户的提示符
$ 如果是普通用户的话,就显示$

一、命令基本格式

命令 [选择] [参数]
注意

  • 个别不支持上述的命令格式
  • 多个选项是后,可以写在一起
  • 简化 -a 完整的选项 --a 有两个刚

权限;

-rw-r--r--

文件类型:看第一位:如果是-文件 d目录 l软连接文件
rw- (u所有者)r--(g所属组)r--(o其他人): rwk r:red w:write写 x:执行

ls

ls [选项] [file/dir]
选项:-a 所有的文件包括隐藏的 -l详细信息
-d查看目录属性 -h人性化显示文件大小 -i显示inode

linux的隐藏文件:以.开头的文件

二、文件处理命令

目录处理命令:

mkdir -p [目录名称]

-p 递归创建 (目录名称是一串多个目录的时候)

cd (change directive)

cd [目录]
简化操作
cd ~ 当前用户的家目录
cd 同上
cd - 进入上次目录
cd .. 进入上一级目录
cd. 进入当前目录

绝对路径:
cd /etc/这个就是从根目录开始的
cd ../etc/这个就是相对路径的

pwd显示当前文件路径
rmdir (remove empey directive )

只能删除非空目录 这里删除的比较少

rm 删除不管是不是非空文件

rm -rf /japan/
参数 -rf
r 表示删除目录
f 强制删除(不再疑问)

cp (copy)

cp 【选项】 【源文件/目录】 【目标文件/目录】
-r 复制目录
-p 连带文件属性复制
-d 源文件是链接文件,就复制链接属性
-a 相当与 -pdr

ll 就是ls -l两个命令完全一样
mv (move)

mv [源文件或目录] [目标目录]
剪切 ,没有-r
如果源文件和目标文件在同一个文件下,就是改名
如果源文件和目标文件不在同一个文件下,就是剪切

常用的目录
/bin   
/sbin  命令保存目录   超级用户才能使用
/usr/bin/系统命令 普通用户
/usr/sbin /系统命令超级用户才能使用

以上都是用来保存系统命令的,区别在于普通权限还是超级用户权限

/boot 启动目录
/dev 特殊文件保存目录
/etc系统的配置文件
/lib 函数库的保存位置

以下三个是空目录,用来挂载外接的设备的

/media
/mnt
/misc 

以下两个是挂在内存的盘符:

/sys
/proc

临时目录:/tmp
系统软件资源目录 /usr/
系统相关的文档内容/var

链接命令

ln -s [源文件] [目标文件]

link
生成链接文件
选项 -s 创建软链接

硬链接特征:

  1. 拥有相同的i节点和储存block块 可看成是同一个文件
  2. 同过i节点识别
  3. 不能夸分区
  4. 不能针对目录使用

软连接的特点:

  1. 类似于window的快捷方式
  2. 有自己的i节点和block块,但是只保存源文件的文件名和I节点号,没有实际的文件数据
  3. lrwxrwxrwxx 权限全放开
  4. 修改任意文件,另一个都改变
  5. 删除源文件,软连接不能使用

三、文件搜索命令

1、 文件搜索命令 locate

速度最快

localte 文件名
在后台数据库中按文件名搜索,速度更快
/var/lib/mlocate会在这个里边进行搜索,而不会搜索实际的文件,这个数据库一天一更新,所以找不到新建的文件

updatedb 这个命令强制更新数据库
locate locate 这个查看locate的文件命令
eg:

locate changls//只能根据文件名来查看

在文件/etc/updatedb.com配置文件中
prune_bind_mounts = "yes"开启搜索x限制

prunefs = 不搜索的文件系统

prunenames= 不搜索的文件类型
prunepaths 不搜索的路径

2、 命令的搜索命令whereis 与which

whereis 命令名
搜索命令所在的位置:
whereis ls这个就是查看命令文件的
选项:-b 只查找可执行文件
-m 只查找帮助文件

which命令:
搜索文件所在的路径一及别名能够看到文件的别名
which ll

alias ll='ls -l --color=auto'
    /usr/bin/ls

3、 文件搜索命令find

完全匹配
find [范围] [文件名]

find / -name install.log 
#根据名字搜索
find / -iname install.log 
# iname名字不区分大小写
find /root -user root 
#根据所有者查询

find /root  -nouser
#没有所有者的文件
find /var/log/ -mtime +10
#查找十天前修改的文件
find . -size 25k
# 注意:这里的k是小写,然后M是大写
# 查找文件大小是25k的文件
find . -inum 262422 
# 查找inum结点是26422的文件
按照时间 find /var/log/ -mtime +10
  • -10 10天内修改的文件

  • 10 10天当天修改的文件

  • +10 10天前修改的文件

  • atime 文件访问的时间

  • ctime 改变文件属性

  • mtime 修改文件内容

find在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符,通配符是完全匹配的

find的复杂操作

find /etc -size +20k -a -size -50k
# -a表示 and 逻辑与
# -o 表示 or 逻辑或
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
查找 并且显示详细的信息
# -exec/-ok 命令{} \对搜索结果执行操作
-exec/ (这里填写执行情况) {} \ ;这是一个固定的命令格式
通配符:
* 
?表示任意一个字符
[ab]表示匹配a或者是b

4、字符串搜索命令 grep

grep [选项] 字符串 文件名
在文件当中匹配符合条件的字符串
-i 忽略大小写
-v 排除指定字符串

其实就是在后头的文件中找到关键字对应的信息

5、find与 gerp的区别

find:
系统当中搜索符合条件的文件名,需要完全匹配

grep 文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式也是包含匹配

四、帮助命令

man

查看文件说明
man -f 相当于 whatis命令 查看有哪些对应的帮助等级
举例:

 man -5 passwd 
man -4 null
man -8 ifconfig

man的级别

  1. 查看命令的帮助
  2. 可被内核调用的函数的帮助
  3. 函数和函数库的帮助
  4. 查看特殊文件的帮助,主要是/dev下的文件
  5. 查看配置文件按的帮助
  6. 游戏的帮助
  7. 其他杂项的帮助
  8. 系统管理员可用命令的帮助
  9. 和内核相关文件的帮助

查看和命令相关的所有的帮助:
man -k 命令
相当与 apropos命令

命令--help
shell内部命令
  1. help 内部命令
    help cd
    如和判断是不是内部命令 如果通过whereis 找不到对应的文件,只能找到帮助文档就知道是内部命令了
    help 和man分别获取前后的命令
  2. info
    -回车 进入子帮助界面,带有* 标记
    -u 进入上层页面
    -n 进入下一个帮助小节
    -p 进入上一个帮助小节
    -q 退出

五、 压缩与解压缩命令

常见的五种压缩格式: .zip/ .gz/ .bz2 /.tar.gz/ .tar.bz2

zip

zip 压缩文件名 源文件(压缩文件)
zip -r 压缩文件名 源文件 (压缩目录)加个-r就是目录

gzip

.gz 类型的文件
gzip 源文件 (源文件会丢失)
gzip -c 源文件 > 压缩文件

尖括号>用来输出文件,就比如 ls > abc 就把ls下所有输出的东西写到了abc文件中

压缩为.gz格式的文件,但是源文件保留
gzip -r 目录
压缩目录下的所有的子文件,但是不能压缩目录

解压文件 gzip -d 压缩文件
以上为解压缩文件
gunzip 压缩文件
解压缩文件
gzip压缩目录有问题

bzip 源文件

.bz2格式,但是不保留源文件
-k 无论在压缩还是解压缩的是后,都保留了原来的文件
bzip2 -k 源文件 压缩后保留源文件
注意;bzip2命令不能压缩目录

解压缩: bzip2 -d 压缩文件/bunzip2 压缩文件

打包命令tar

tar -cvf 打包文件 源文件
-c 打包 -v 显示过程 -f 指定打包后的文件名

tar -xvf 打包文件名
-x 解打包

如果打包加压缩成gz

tar -zcvf 压缩包名.tar.gz 源文件
解压缩加解包
tar -zxvf 压缩包名.tar.gz 源文件

如果打包加压缩成bz2
tar -jcvf 压缩包名.tar.bz2 源文件
解压加解打包
tar -jxvf 压缩包名.tar.bz2

六、关机和重启命令

shutdown命令

shutdown [选项] 时间
-c 取消前一个关机命令 -h关机 -r 重启
shutdown -r 05:30 &

这个&的作用是在后台执行,倒时候会自动执行
时间可以是now

other 关机命令

halt /poweroff /init 0
都不会很安全

other 重启命令

reboot /init6
系统的运行级别:
0 关机
1 单用户
2 不完全多用户,不含nfs服务
3 完全多用户
4 未分配
5 图形界面
6 重启

退出登录

logout 推出登陆

七、其他常用命令

挂载命令

用户登陆查看和用户交互命令
mount 挂载命令
mount -a 依据配置文件,/etc/fstab的内容,自动挂载

挂载命令格式

mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点

选项:
-t 文件系统,制定挂载的类型,可以是ext3 ext4 iso9660等文件系统
-o特殊选项:可制定挂载的额外选项

赋予执行权限:
chmod 755 [filename]

vi

#!/bin/bash
#第一行必须是上边的那句话,不可省略
echo "helloworld "

用户登陆查看命令

  • w 用户/显示用户的信息
  • who 用户名
  • last 查看所有用户的登陆信息/系统的重启时间
  • lastlog 默认读取var/log/lastlog文件内容

命令输出
-用户名 登陆终端 ip最后一次登陆时间

shell基础

脚本的执行方式

1、 echo输出命令
echo [选项] [输出内容]

选项:
\a 警告 \n换行 \b 退格,左删除\r回车\t制表\v垂直制表\Onnn 按八进制输出字符\xhh十六进制输出字符

第一个脚本

[root@localhost filegz]# vi testsh
然后执行
#!/bin/bash
# The first programe
echo -e "hello world"

调用的时候,两种方式:
./test.sh
或者是bash test.sh

别名与快捷键

bash 的基本功能:

1、命令别名与快捷键

查看所有的别名:alias

设值别名:注意自己别随便添加空格
alias ls='ls --color =never'

写入环境变量配置文件
vi ~/.bashrc

删除别名unalias 别名

命令生效的顺序:
1、 第一顺位执行用绝对路径或者是相对路径执行的命令
2、执行别名
3、执行bash的内部命令
4、执行按照$path环境变量定义的目录查找顺序找到的第一个命令

快捷键

  1. 强制终止 ctrl+c
  2. 清屏 ctrl+u
  3. 光标移动到命令行首 ctrl+a
  4. 光标移动到命令行尾 ctrl+e
  5. 光标删除到行首 ctrl+u
  6. 命令放入到后台 ctrl+z
  7. 历史命令中搜索 ctrl + r

2、历史命令
上下箭头来调用
使用 !n 重复执行第n条历史命令
使用 !!上一条历史命令
使用 !字符串重复执行最后一条以该字串开头的命令

    history [选项] [历史命令的保存文件]

-c 清空历史命令 -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

历史命令中默认保存1000条,如果不满意可改变/etc/profile/ HISTSIZE=10000

命令文件的补全:Tab键盘
命令补全以来Path目录 echo $PATH

3、输出重定向

标准输出重定向(只有正确的是后)
命令 > 文件 命令的内容写到文件中
命令 >> 文件 命令的内容追加到file中
标准错误输出
命令 2>> file 追加的是错误的信息
命令 2>file 覆盖的是错误的信息
如果是错误输出,大于号左边是不能有空格的

如果一个文件错误不错误的信息都输入到这个文件中:

ifconfig longzls >> test2.log 2>&1

同时保存:
命令 > 文件 2>&1 # 覆盖的形式
命令 >> 文件 2>&1 # 追加的形式
命令 &>文件 #覆盖的方式
命令 &>>文件 #追加的方式
命令>>文件1 2>>文件2 #正确的输出追加到文件1中,错误的输出追加到文件2中

输入重定向:
wc [选项][file]
-c 统计直接数
-w t统计单词数
-l 统计行数

之后ctrl +d 就能看了

4、多命令顺序执行

; 多个命令顺序执行,命令之间没有任何逻辑联系
&& 逻辑与前边执行,后头才会执行,1不对,短路
|| 逻辑或,命令1执行不正确,命令2才会执行

管道符
命令1 | 命令2 命令1的正确输出作为命令2的操作对象

5、shell中的特殊符号
通配符:

  • ? 只能匹配一个支付
    • 只能匹配多个字符
  • [] 只能匹配中括号内的东西【abv】就指有a 或是b或是c
  • [-] [1-9]表示匹配1-9
  • [^] [^1-9] 不是数字所有的单个字符

正则表达式:

其他的特殊符号:

  • "
  • '
  • ``括起来的内容就是系统命令,bash中会先执行类似于$()
  • $()
  • #注释
  • $ 调用变量的值
  • \ 转义字符

你可能感兴趣的:(shell初探)