shell学习笔记1——基础篇

来源:互联网 发布:如何快速网络招商 编辑:程序博客网 时间:2024/06/06 00:31

准备工作:了解linux基础知识

1.history命令显示历史记录

用户正常退出shell时,系统会将敲过的命令存入.bash_history中。“!”与history有莫大的关联。

1)!!表示执行上一条命令

2)!n,n表示数字,表示执行history中第n条命令

3)!可以进行模糊匹配,如:!pass可以执行之前输过的passwd命令

2.别名alias

将复杂的命令赋值给一个简单的别名

1)alias显示当前系统已经存在的别名

2)设置别名,alias yx='fdisk -l',输入yx则可以执行fdisk -l命令。注意:如果将系统已存在的命令设置为其他命令的别名,会覆盖系统命令的含义,unalias取消别名

3.作业控制

ctrl+z暂停现在正在进行的工作,通过jobs来查看,fg前台运行和bg后台运行来恢复。jobs前面有显示作业的编号,fg或者bg加作业编号继续运行。

4.环境变量

PATH代表了所有常用命令的绝对路径,使得一些常用命令不用输入绝对路径就可以直接运行。

1)echo $PATH会显示当前设定的路径,以:分隔

2)如果要添加路径,则可以在家目录下的.bash_profile文件中的PATH末尾追加需要添加的路径,并且source .bash_profile使之生效。如:PATH=$PATH:$HOME/bin:/tmp

3)环境变量的显示和生效问题

    a)env命令显示所有系统预设的环境变量,set命令显示系统预设变量和用户定义的变量

    b)自定义变量只在当前shell中生效,bash新开一个shell之后自定义变量无效

    c)可以用pstree | grep bash来查看当前的shell

    d)如果想让变量在所有shell中生效,又不修改配置文件,可以在配置变量的shell中再用export在子shell中声明此变量

[root@localhost ~]# yx=xy
[root@localhost ~]# export yx

4)/etc/profile中加入export yx=xy,并且source /etc/profile 使得定义的变量在所有用户的所有shell中生效;而在用户家目录的.bashrc中写入export yx=xy并且读取之后,对当前用户的所有shell生效。

a)若变量内容带空格,则需要单引号括起来

[root@localhost ~]# yx='x y'
[root@localhost ~]# echo $yx

x y

b)若变量内容带单引号,则需要双引号括起来

[root@localhost ~]# yx="x'y"

[root@localhost ~]# echo $yx

x'y

c)若变量内容带系统命令,并且希望echo 变量之后命令执行。则需要用反引号括起来

[root@localhost ~]# yx=`pwd`
[root@localhost ~]# echo $yx
/root

d)若变量内容需要引用其他变量,则其他变量要用双引号括起来

[root@localhost ~]# yx="$HOME"xy
[root@localhost ~]# echo $yx
/rootxy

在这里要提一下,单引号会取消其中特殊字符的含义,而双引号不会

5)unset可以取消变量的赋值

5.通配符

1)*代表零个或者多个任意字符

2)?代表一个任意字符

3)\脱意字符,去除像*、?等这样字符的特殊含义,让他们变成单纯显示符

    ls -d yx*  表示列出所有以yx开头的文件夹

    ls -d yx\* 表示列出文件夹名为yx*的文件夹

    注意:这里的脱意字符要和转义字符区分。转义字符利用\加常见的字母或数字来显示那些不能显示的ASCII字符。如:\t 表示tab键,\n 表示enter键

4)!$代表上一个命令最后的那个变量

5)|| 前面的命令执行成功则不执行第二条命令

6.管道符|

将前面命令执行所得到的结果丢给管道后面的命令,通常配合其他常用的命令一起使用

7.常用命令

1)wc命令。统计文件的行数、单词数、文件大小等信息。

a)

[root@localhost ~]# echo 'HELLO WORLD' > test.txt
[root@localhost ~]# cat test.txt | wc
      1       2      12

1代表文件的行数,2代表文件内容的单词总数(以空格分隔),12代表文件的大小字节数

b)-l 统计文件行数

c)-c 统计文件字节数

d)-m 统计文件的字符数(包括字母、数字、特殊字符)

    注意:每行的行末都会有一个隐藏的结束符$所以统计的时候会加上这个字符

e)-w 统计文件的单词数(以空格为分隔符)

f)-L 统计文件最长行的字符数(以字符计算长度)

2)cut命令。用来截取某个字段。

最常用的语法为:cut -d'分隔符' -f第几字段

其实不加单引号-d后面直接跟分隔符也是可以的,但是个人习惯加单引号,若分隔符为单引号',则用双引号将其括起来,如:

[root@localhost tmp]# cat test
a'b'c'd'e
[root@localhost tmp]# cat test | cut -d"'" -f3
c

a)-c 显示每一行的第n个到第m个字符,如:

[root@localhost tmp]# cat test
Hello world
I am Bob
[root@localhost tmp]# cat test | cut -b1-7
Hello w
I am Bo


b)-s 不显示不包含分隔符的行,如:

[root@localhost tmp]# cat test
Hello world
I am Bob
#$%^
[root@localhost tmp]# cat test | cut -d' ' -f1 -s
Hello
I

3)sort命令。内容排序。

-t 分隔符 :作用跟cut的-d一个意思

-n :使用纯数字排序

-r :反向排序

-u :去重复

a)例:head -n5 /etc/passwd | sort -t: -k3 -n -r -u

[root@aca-CT-1-250 ~]# head -n5 /etc/passwd |sort -t: -k3 -n -r -u
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

4)uniq命令。去除重复行。

-c :统计重复的行数,并把行数写在前面

a)例:

[root@aca-CT-1-250 ~]# cat test
aaa
bbb
ccc
aaa

[root@aca-CT-1-250 ~]# sort test | uniq -c
      2 aaa
      1 bbb
      1 ccc

5)tee命令。相当于>,不同的是在重定向的同时在屏幕上输出,常用在|之后。

a)例:

[root@aca-CT-1-250 ~]# echo "hello" | tee test.txt
hello

6)tr命令。替换命令,用来替换文档中的内容。

-d:删除某个字符

-s:删除重复的字符

[root@aca-CT-1-250 ~]# cat test.txt
hello
[root@aca-CT-1-250 ~]# cat test.txt |tr [a-z] [A-Z]
HELLO
[root@aca-CT-1-250 ~]# cat test.txt |tr -d h
ello
[root@aca-CT-1-250 ~]# cat test.txt |tr -s l
helo





0 0
原创粉丝点击