Linux必会基本知识

版权声明:本文为博主原创文章,欢迎转赞,但请保留作者署名。 https://blog.csdn.net/liuchunming033/article/details/52366691

1、统计现在登录到系统上的账户总数

who | wc -l

who命令可以查看登录到系统上的账户。wc命名是Linux系统里面的统计程序,可以计算出行数(-l)、字数(-w)、字符数(-c)。此例中是统计行数。
2、将终端用户的输入保存到文件中

cat > filename

cat 命令通常使用来显示文本文件的内容。当使用重定向符号时,将会把用户在终端的输入保存到文件中。^+D结束输入。如果我们想把一系列命令保存到文本中,这种方法是非常合适的。
3、shell脚本的第一行
通常shell脚本的第一行是:

#!/bin/sh -

选项 “-”代表没有选项。通常为了安全考虑才加的,可以避免某种程度的欺骗式攻击。
shell脚本第一行#!的作用是告诉Linux内核用什么解释器来运行这段脚本。
4、同一行执行多条命令
同一行执行多条命令的方法是将不同的命令使用分号“;”分割开。如果命令后面接了&号,则代表这个命令是在后台执行,意味着,shell不用等待这条命名完成,就可以继续执行下一条命令。
5、Shell基本命令种类
Shell有三种基本的命令:Shell内键命令、Shell函数以及外部命令。
内建命令:cd,read,test,echo,printf等。
Shell函数:功能健全的一系列程序代码,以Shell语言写成。
外部命令:是由shell的副本(新的进程)所执行的命令,基本过程如下:1)建立一个新的进程,这个进程是shell的一个副本。2)在新进程中,执行特定的命令(命令没有指定绝对路径时,在PATH变量列出来的路径里面查找)。3)命令执行完成后,最初的shell接着读取下一条命令,或执行脚本里的下一条命令。
这里写图片描述

6、Shell中变量的定义、赋值、引用和打印
定义:字母、下划线开头,任意长度字母、数字、下划线符号组成的字符串;
赋值:变量名=值;等号两边没有空格!!举例:

first=isac middle=bashrc last=singer 单行多次赋值
fullname=”liu chunming” 值包含空格的时使用引号
oldname=$firstname 用其他变量值给本变量赋值,不需要双引号
avada=”\$first \$middle \$last” 将多个变量连接起来,需要使用引号。

引用:变量名前面加上$。
7、简单的echo输出
最常用的显示变量的值。echo通常的任务是产生输出内容,可以用来提示用户、或是产生数据供进一步处理。
通常echo显示输出时,会在输出内容的后面加一个换行符号。如果不需要这个换行符号可以加-n参数。
8、强大的printf输出
printf的语法分为两部分:

printf format-string [arguments,……]

输出简单字符串:

printf "Hello,world!\n"

与echo非常相似,但是不同的是,你必须手动提供一个换行符,printf不会自动给你加上这个换行符。
格式化输出:

printf "Happy new year %s %d \n" Hello 2018

9、重定向
重定向就是改变默认的输出目的地、输入来源的行为。
1)program < file将program的标准输入改为file。
2)program > file将program的标准输出改为file。
举例:
将windows文本中的换行符(\r\n)改成linux系统下的换行符(\n)

tr -d '\r' < dos-file.txt > unix-file.txt

> 重定向符的目标文件不存在时,将会自动创建一个。然后,如果目标文件存在,则会覆盖目标文件中的数据。如果想保留目标文件中的数据,只是将新数据追加到目标文件中,可以使用>>重定向符。
例如:

for f in dos-file*.txt
do
    tr -d '\r' < f >> unix-file.txt
done    

10、管道
管道的作用是前一个程序的输出与后一个程序的输入 的桥梁。
语法是:

prrgram1 | program2

举个例子,将dos-file.txt中的回车符号删除并且按行排序后保存到unix-file.txt里面

tr -d '\r' < dos-file.txt | sort > unix-file.txt

11、字符转换工具tr
tr命名是进行字符转换的工具,是translate的简写。以字符为操作对象。比如删除字符、将小写字符转换成大写字符,将多个连串的重复字符浓缩成1个字符等。
删除:

echo 1234444444567 | tr -d 4  #输出123567

去重:

echo 1234444444567 | tr -s 4  #输出1234567

替换:

echo 1234444444567 | tr 4 '*'  #输出123*******567

翻转替换:

echo 1234444444567 | tr -c 4 '*' #输出***4444444****

12、正则表达式
举例说明吧:

grep root /etc/passwd   #匹配/etc/passwd中带有root的行
grep ^root /etc/passwd  #匹配/etc/passwd中以root开始的行
grep bash$ /etc/passwd  #匹配/etc/passwd中以bash结尾的行
grep ^bash$ /etc/passwd  #匹配/etc/passwd中以bash开头并且以bash结尾的行,也就是正好包含bash四个字符而没有其他字符的行
grep [gr]o /etc/passwd  #匹配/etc/passwd中含有go或者ro的行
grep no..dy /etc/passwd  #匹配/etc/passwd中含有no这两个字符并且加上任何两个字符,再接上dy这两个字符的行
grep liu.*g /etc/passwd #匹配/etc/passwd中含有liu3个字符,加上任意的0个或者多个字符,在继续g这个字符的行(比如含有liuchunming、liuliang,liug等的行)
grep -E  "mail|mailnull" /etc/passwd #/etc/passwd中含有mail或者mailnull的行,注意要使用扩展的正则表达式-E选项。

13、grep命令
通常与正则表达式一同使用,关于正则表达式上面已经介绍了。这里只介绍grep本身的选项的用法。

grep -e mail -e mailnull /etc/passwd #/etc/passwd中含有mail或者mail null的行,使用-E 扩展的正则表达式选项也可以达成此效果
grep -v mail /etc/passwd #/etc/passwd中不含有mail或者mail null的行
grep -n -e mail -e mailnull /etc/passwd #/etc/passwd中含有mail或者mail null的行以及行号也打印出来。
grep -i "ab" data.doc  #输出所有含有ab或Ab的字符串的行,-i 不区分大小写(用于单字符)
grep -c "48" data.doc   #输出data.doc文档中含有48字符的行数,与grep "48" data.doc | wc -l同样效果。

猜你喜欢

转载自blog.csdn.net/liuchunming033/article/details/52366691