Linux shell 脚本

本文详细介绍了Linux操作系统的基础知识,包括命令行格式、目录结构、常用命令如`touch`、`ls`、`cd`、`mkdir`等,以及文件管理、系统管理和用户管理。此外,还深入讲解了shell脚本的编写,如别名、特殊字符、文件权限设置等,为读者提供了一个全面的Linux系统操作指南。
摘要由CSDN通过智能技术生成

 Linux命令行的格式:命令字:是整条命令中最关键的一部分唯一确定一条

                                  选项 :短格式选项:使用“”符号引导长格式选项:使用“_”符号引导

                                 参数:  命令字的处理对象可以是文件名、目录(路)名或用户名等内容个数可以是零到多个 

touch命令:创建文件夹 

/ 根目录 

        /bin 存放必要的命令 
        /boot 存放内核以及启动所需的文件
        /dev 存放设备文件 
        /etc 存放系统配置文件 
        /home 普通用户的宿主目录,用户数据存放在其主目录中 
        /lib 存放必要的运行库 
        /mnt 存放临时的映射文件系统,通常用来挂载使用。
        /proc 存放存储进程和系统信息 
        /root 超级用户的主目录 
        /sbin 存放系统管理程序 
        /tmp 存放临时文件
        /usr 存放应用程序,命令程序文件、程序库、手册和其它文档。 
        /var 系统默认日志存放目录

       对linux系统的目录结构有一个大致的认识之后,接下来我们从Linux操作系统必备命令、文件管理、系统管理、用户管理四个方面对linux文件系统进行进一步认识和学习。

1.1   Linux操作系统必备命令

1.1.1        别名

alias 显示当前设置的所有别名;

alias name只显示某个别名代表的含义;

unalias取消命令别名

1.1.2        Shell的特殊字符

(1)      通配符

*:通配0个或多个字符

?:通配任意单个字符

[s]:通配某个范围内的任意一个字符

(2)      ;一行执行多条命令

(3)      输入输出重定向

>表示追加并覆盖的意思

>>表示追加

<表示输入

(4)      管道符

| 表示前一个命令的输出作为后一个命令的输入

1.1.3        联机帮助

        man命令  可以查看linux中的命令帮助、配置文件帮助、编程帮助等信息

1.1.4        清屏与历史记录命令

clear 清屏

history 查看历史命令

history  !n  执行使用的第n条命令

1.2   文件管理

1.2.1        查看目录文件

pwd  显示工作路径

cd  切换工作目录

ls  查看目录中的文件

file 显示文件类型

1.2.2        创建和删除目录文件

touch   创建文件

mkdir  创建目录

rm   [-i/f] filename  删除名叫filename的文件

rmdir  dir  删除名叫dir的目录

1.2.3        链接文件

链接文件主要是为了解决数据共享问题,常用命令如下:

ln  [-s/-p]  source-file   target-file  创建一个指向文件或目录的软链接或硬链接

其中:-s 软连接

             -p 硬链接

1.2.4        显示文本内容

cat file1 从第一个字节开始正向查看文件的内容 
more file1 查看一个长文件的内容 

head   [-n]  filename  查看文件名为filename的前n行

tail    [-n]  filename   查看文件名为filename的后n行

1.2.5        拷贝和移动文件目录

cp  [- i] source-file  target-file  拷贝文件

cp  [-r] source-file  target-file  拷贝目录

mv  [-i] source-file  target-file  移动文件

1.2.6        文件目录权限

文件的权限   使用 "+" 设置权限,使用 "-" 用于取消

权限代表:r (读),w(写),x(执行)

属性代表:用户(u)、群组(g),a(所有人)以及其他人(o)

1.2.7        修改目录权限

chmod  ugo+rwx dir1 设置目录的所有用户(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 
chmod  go-rwx ectory1 删除群组(g)与其他人(o)对目录的读写执行权限 

chown user1file1 改变一个文件的D所有人属性

chownuser1:group1 file1 改变一个文件的所有人和群组属性 
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 
chgrp  group1 file1 改变文件的群组 

1.2.8        查找文件

find / -namefile1 从 '/' 开始进入根文件系统搜索文件和目录 
find / -user user1 搜索属于用户 'user1' 的文件和目录 
find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限 
find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 

1.2.9        过滤与统计

grep  [option(s)] string  filename 过滤文件名为filename中的字符串

wc  [option(s)]  filename   统计

1.3   系统管理

1.3.1        时间和进程查看

date 显示系统日期 
cal 2007   显示2007年的日历表 

ps  查看进程

1.3.2        切换用户

su是切换到其他用户,但是不切换环境变量

su - 是完整的切换到一个用户环境

sudo 使用超级用户来执行命令,一般指root用户。若多个普通用户同时切换到root用户对系统进行操作,可能会出现不同人对同一个文件进行不同操作,那很不安全。最好是有针对性的放开权限,明确哪些工作是由哪个用户进行操作,并且约定其使用哪个命令来完成与其相关的工作,此时sudo命令可以解决该问题。

1.4   用户管理

1.3.1        修改用户密码

passwd 修改用户密码

要求:

(1)6-8个字符

(2)至少包含2个字母,1个字符或特殊符号

(3)不同于用户ID

(4)不同于以前用户密码,至少有3位

1.3.2        查找用户

who  查看当前在线上的用户情况  

who am i  显示出自己在系统中的用户名,登录终端,登录时间

1.3.3        查看磁盘信息

du  显示磁盘使用摘要信息

df  显示整个文件系统的空间使用磁盘情况

1.3.4        查看网络链接

ping 查看当前机器与另一台机器的链接情况

ifconfig 显示一个以太网卡的配置

查找命令文件存放目录-which

which 命令|程序名 //默认当找到第一个目标后不再继续查找

which -a 命令|程序名  /在所有搜索路径中查找

示例
which Is
which history:q 退出不保存 

:q! 强制退出不保存 
:w 保存 
:w 新文件名 另存为新文件: 
:wq :zz :x 保存并退出 

颜色表示的文件类型:

- 黑色数据文件 普通文件
- 绿色    可执行文件
- 黄色    块设备文件硬件设备(硬盘)
- 红色    压缩包
- 蓝色   文件夹
- 天蓝色 链接文件(快捷方式)

cat的常用选项
-n:对所有输出的行数编号
-b:对于空白行不编号
-s:将所有的连续的多个空行替换为一个空行
只能读,不能写,也就是只能查看,不能修改

more [选项] 文件名

基本操作
空格下一行 到文末后自动退出
b上一行
enter一行一行滚动
自动退出
q退出
ls /etc/*.conf | more 

less [选项] 文件名

可以使用/ 查找 n向下 N向上查找
Page Up 向上翻页,Page Down 向下翻页
其余参考more
less /etc/dhcp/dhcpd.conf
ls -lh /etc/*.conf | less

tail -100f /var/log/messages

head
head -n 具体数字 文件名(不加具体的数字,默认开头十行)

tail命令
用途:查看文件结尾的少部分内容
tail -n 具体数字 文件名(不加具体的数字,默认结尾十行)
tail -f 具体数字 文件名  实时跟踪最后十行
tail -f /var/log/messages   ---查看最近的10条,默认
tail -100f /var/log/messages ----查看最近的100条

tr
基本功能转换
格式
tr [选项]... SET1 [SET2]
<font color='red'>SET 是一组字符串,一般都可按照字面含义理解</font>
-d  删除
-s  压缩
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

tr 123 abc #只要出现123 就转换成abc

tr -d abc  #删除abc

tr -s " "  #压缩空格
1     2      3     4
1 2 3 4

tr -s "a"
aaaa
a


wc:
统计文件中的单词数量(Word Count)等信息 
-l:统计行数
-w:统计单词个数 
-c:统计字节数

grep的常用选项
-i:查找时不区分大小写  加不加都一样
-v:显示不包含匹配文本的所有行(反向查询,反向匹配)
-n:显示匹配行及行号
-c:只输出匹配到的总行数(不是匹配到的次数)
-e:实现可多个查找条件的匹配,逻辑or关系
-E:支持使用扩展正则表达式,相当于使用egrep命令

查找条件设置
要查找的字符串以双引号括起来
“^……”表示以……开头
“……$”表示以……结尾
“^$”表示空行
grep -ie "^listen" -e "80$" /etc/httpd/conf/httpd.conf
man cat | grep -v "^$"

作业:以a开头,同时匹配含有m,k,h的所有行
grep -ie "^a" -e "[m$,k$,h$]" /opt/ky27

Shell 还有一种功能,就是可以将两个或者多个命令(程序或者进程)
连接到一起,
把一个命令的输出作为下一个命令的输入,
以这种方式连接的两个或者多个命令就形成了管道(pipe)。

"|"
cat /etc/passwd | grep root
一般情况下,处理文本的命令,例如sort、uniq、grep、awk、sed等命令均支持管道;

gzip、bzip2命令:
gzip  [-9]  文件名            #gzip制作的压缩文件默认的扩展名为“.gz”,原始文件不再保留
bzip2  [-9]  文件名            #bzip2 制作的压缩文件默认的扩展名为“.bz2”,原始文件不再保留
使用“-9”选项可以提高压缩的比率
-d:用于解压缩以及压缩过的文件,相当于使用gunzip、bunzip2命令
gunzip 文件名.gz   解压缩
gzip -d 文件名.gz  解压缩
bunzip2 文件名.bz2
bzip2 -d 文件名.bz2

bz2和.gz都是linux下压缩文件的格式,有点类似windows下的.zip和.rar文件。
.bz2和.gz的区别在于:前者比后者压缩率更高,后者比前者花费更少的时间。也就是说同一个文件,压缩后,.bz2文件比.gz文件更小,但是.bz2文件的小是以花费更多的时间为代价的。

tar的常用选项:
-c:创建.tar 格式的包文件。
-x:解开.tar 格式的包文件。
-C:解压时指定释放的目标文件夹。绝对路劲
-f:表示使用归档文件。
-v:输出详细信息(Verbose)。
-j:调用 bzip2 程序进行压缩或解压。
-z:调用 gzip 程序进行压缩或解压。

tar -zcvf dntest.tar.gz 123.txt        打包
tar -zxvf dntest.tar.gz -C /opt/dntest 打包到指定位置

tar -jcvf usershow.tar.bz2 passwd shadow 解压缩,解包
tar jxvf usershow.tar.bz2 -C /opt/       解压缩到指定位置


vi 文件名
vim 文件名
!vim    //返回上一次编辑的文件

命令模式切换至输入模式:
a:在当前光标位置之后插入内容
i:在当前光标位置之前插入内容
o:在光标所在行之下插入一个新行内容
O:在光标所在行之上插入一个新行内容
A:在所在行的行尾插入内容
I:在所在行的行首插入内容

命令模式:
操作类型        操作键                        功能
翻页移动        Page Down键或 Ctrl+F        向下翻动一整页内容
                Page Up键或 Ctrl+B            向上翻动一整页内容
行内快速跳转    Home键或^键、数字 0键        跳转到本行的行首
                End 键或$键                    跳转到本行的行尾
行间快速跳转    1G 或 gg                    转到文件内容的第 1 行
                G                            跳转到文件的最后一行
                #G                            跳转到文件中的第#行(其中“#”号用具体数字替换)
                M                            跳转至当前页的中间位置
                
底行模式:
显示行号        :set nu                        在编辑器中显示行号
                :set nonu                    取消行号显示
删除            x或Delete键                    删除光标处的单个字符
                dd                            删除当前光标所在行(有剪切功能)
                #dd                            删除从光标处开始的#行内容  -----#表示几行
                d^                            删除当前光标之前到行首的所有字符
                d$                            删除当前光标处到行尾的所有字符
                dw                            删除光标处的整个单词
替换字符        R 或 Shift+r                替换当前光标处字符
复制            yy                            复制当前行整行的内容到剪贴板
                #yy                            复制从光标处开始的#行内容  ----#表示几行
粘贴            p                            粘贴到光标所在行之下
                P                            粘贴到光标所在行之上
查找            /word                        从当前光标处开始向后进行查找字符串“word”
                ?word                        从当前光标处开始向前进行查找
                n                            定位下一个匹配的被查找字符串
                N                            定位上一个匹配的被查找字符串
撤销            u                            按一次取消最近的一次操作;重复u键,恢复多步操作
                U                            用于取消对当前行所做的所有编辑
                
保存退出        :w                            保存修改的内容
                :w 新文件名                    另存为其它文件
                :q
                :q!                            放弃对文件内容的修改并退出
                ZZ或:wq、:x                    保存当前的文件内容并退出vi编辑器
打开新文件        :e 其它文件名                打开新的文件进行编辑
读入文件内容    :r 其它文件名                在当前文件中读入其他文件内容
文件内容替换    :s /old/new                    将当前行中查找到的第一个字符串“old” 串替换为“new”
                :s /old/new/g                将当前行中查找到的所有字符串“old” 替换为“new”
                :#,# s/old/new/g             在行号“#,#”范围内替换所有的字符串“old”为“new”
                :% s/old/new/g                 在整个文件范围内替换所有的字符串“old”为“new”
                :s /old/new/c                 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
                
                :1,5 m 10                    将1-5行的内容剪切粘贴到第10行下面
                :1,5 co 10                    将1-5行的内容复制粘贴到第10行下面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值