ls etc/init.d/ shell脚本的路径

ls /usr/local/apache2/
ls /usr/local/apache2/bin/apachectl

1. shell特性
命令历史 history !! !$ !n !字符
Tab 键可以补全文件路径或者命令
alias a=“b” unalias a
通配符 *匹配零个或多个字符 ?匹配一个字符
输入输出重定向 >, >>, < 反向重定向, 2>, 2>> 错误重定向
管道符 |
作业控制 ctrl+z, jobs查看后台停止的命令, fg 恢复后台停止的命令, bg n n表示查看后台第几个运行的命令

sleep 100 & 放到后台执行

ls aming >1.log 2>err.log = ls aming >1.log 2>&1

mail -s "adhofdjf" 947370895@qq.com < /etc/passwd
wc -l < /etc/passwd
39

cat 1.log | wc -l

2. 变量

系统变量名都是大写,echo 可以查看变量名
env 可以列出当前用户的所有环境变量以及用户自定义全局变量
set命令可以把所有变量列出来包括系统的和自定义的全局变量以及当前shell自定义变量
linux下设置自定义变量规则: (1)格式为 “a=b”, 其中a为变量名,b为变量的内容,等号两边不能有空格;(2)变量名只能由英、数字以及下划线组成,而且不能以数字开头;(3)当变量内容带有特殊字符(如空格)时,需要加上单引号;(4)如果变量内容中需要用到其他命令运行结果则可以使用反引号;(5)变量内容可以累加其他变量的内容,需要加双引号;

系统所有用户使用变量: export myname=Aming 全局变量,加入/etc/profile并source /etc/profile永久生效
系统某个用户使用变量: export myname=Aming 加入当前用户家目录下的 .bashrc中 source .bashrc
export myname=Aming 全局变量,export 不加任何选项表示,声明所有的环境变量以及用户自定义变量
用户自定义变量,可以使用 unset 变量名 进行解除变量设置

a=1
echo $a

unset a 把a的值抹掉

echo $HOME
echo $LANG

filename=/etc/passwd
echo $filename

com='ls /root'
echo $com

rpm -qf `which vim` 符号代表引用命令里面的结果

[root@localhost /]# a=1
[root@localhost /]# b=$a:123
[root@localhost /]# echo $b
1:123

3. 系统和个人环境变量的配置文件
/etc/profile PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等
/etc/bashrc $PS1 umask 以后如果设置umask修改 /etc/profile 不要改这个文件
.bash_profile 用户自己的环境变量
.bashrc 当用户登录时以及每次打开新的shell时, 执行该文件
.bash_history 记录命令历史用的
.bash_logout :当退出shell时,会执行该文件。

[root@localhost ~]# echo $PS1
[\u@\h \W]\$
[root@localhost ~]# 输出的就是这里的意思

PS1=“[\u@\h \W \t]\\$”增加一个时间

全局配置

/etc/profile
/etc/profile.d/*.sh
/etc/bashrc

4. shell中的特殊符号
* 匹配符号,零个或多个任意字符
? 匹配符号,1个任意的字符
# 注视说明用的,使后面的内容失去原本的意义
\ 脱义字符,将特殊字符还原为普通字符
|将符号前面命令的结果丢给符号后面的命令,一般针对文档操作的命令比较常用,例如cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等

$ 引用变量,还有 !$
; 分号,多条命令写一行时,分隔命令
~ 用户家目录
& 放到命令最后面,让命令在后台运行
>, >>, 2>, 2>> [错误]重定向,追加[错误]重定向
[ ] 中括号,中间为字符组合,代表中间字符中的任意一个 ls 1[23a].txt

5. 常用命令:
1)cut
语法: cut -d ‘分隔字符’ [-cf] n 这里的n是正整数
-d 后面指定分隔符,用单引号引起来,-f 指定第几段 cut -d ':' -f 1 /etc/passwd |head -n 5.
cut -d : -f1 /etc/passwd |head -n 5
-c 后面只有一个数字表示截取第几个字符head -n2 /etc/passwd|cut -c2
-c 后面跟一个数字区域,表示截取从几到几head -n2 /etc/passwd|cut -c2-5

[root@localhost ~]# head /etc/passwd |cut -d : -f3
0
1
2
3
4
5
6
7
8
10

[root@localhost ~]# head /etc/passwd|cut -c2
o
i
a
d
p
y
h
a
a
u

cut和sort结合使用

2)sort
语法: sort [-t 分隔符] [-kn1,n2] [-nru] (n1<n2)
不加选项,从首字符向后,依次按ASCII码值进行升序排序sort /etc/passwd
-n 从小到大排序,使用纯数字排序
-t 后指定分隔符,-kn1,n2表示在指定的区间中排序,-k后面只跟一个数字表示对第n个字符排序
sort -t: -k3 -n /etc/passwd
-r 表示以降序的形式排序 sort -t: -k3,5 -r /etc/passwd k表示期间
-u 去重 cut -d: -f4 /etc/passwd |sort -n -u

[root@localhost ~]# cut -d: -f3 /etc/passwd |sort -n
0
1
2
3
4
5
6
7
8
10
11
12
13
14
69
74
81
89
99
499

sort -n -u 1.txt |xargs

3)wc
用于统计文档的行数、字符数、词数
不加任何选项,会显示行数、词数以及字符数
-l 统计行数
-m 统计字符数
-w 统计词数

4)uniq
uniq 去重复,最常用就一个 -c 用来统计重复的行数,去重前要先排序sort testb.txt |uniq -c

uniq 1.txt |wc -l

sort -n 1.txt |uniq 现有排序

sort -n 1.txt |uniq -c |sort -n 多个管道,c代表显示重复的次数

5)tee
后跟文件名,类似于>,比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上
|tee ==> + screen

tcpdump -nn 抓包的
tcpdump -nn > 2.log

wc -l 2.log

tcpdump -nn |tee 2.log 不但在屏幕上显示,还定向到2.log里面了,动态的

6)tr 用来替换字符
最常用的就是大小写转换: head -2 /etc/passwd |tr '[a-z]' '[A-Z]'
tr 替换一个字符也是可以的 grep 'root' /etc/passwd |tr 'r' 'R'

7)split 切割大文件用的
-b : 按大小来分割单位为byte split -b50 1.txt
默认会以xaa, xab, …这样的形式定义分隔后的文件名,也可以指定文件名 split -b50 1.txt 123
-l : 按行数分隔,split -l10 file

[root@localhost ~]#split -b5 1.txt
[root@localhost ~]# ls
1.txt install.log xaa xac xae
anaconda-ks.cfg install.log.syslog xab xad xaf
[root@localhost ~]# du -sb x*
5 xaa
5 xab
5 xac
5 xad
5 xae
3 xaf

rm -rf x*

6. && 和 ||
command1 ; command2 前面命令是否执行完成都会执行后面命令
command1 && command2 只有前面命令执行成功才会执行后面命令
command1 || command2 只有前面命令不成功再去执行后面命令

第一部分shell编程1基础知识的更多相关文章

  1. Shell编程——bash基础知识

    # Bash中自动补全时忽略大小写 # 编辑~/.inputrc(没有的话,就新建一个),在最后加一行: set completion-ignore-case on # 若要用方向键Up,Down来搜 ...

  2. shell编程之基础知识1

    1.shell脚本的基本格式 #!bin/bash   ->看到这个就是shell脚本 #filename:test.sh ->脚本名称 #auto echo hello world -& ...

  3. C#复习笔记(5)--C#5:简化的异步编程(异步编程的基础知识)

    异步编程的基础知识 C#5推出的async和await关键字使异步编程从表面上来说变得简单了许多,我们只需要了解不多的知识就可以编写出有效的异步代码. 在介绍async和await之前,先介绍一些基础 ...

  4. linux的基本操作(shell 脚本的基础知识)

    shell 脚本的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本 ...

  5. 编程必备基础知识|计算机组成原理篇(09):CPU的控制器和运算器

    计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识.关于计算机基础的课程很多,内容繁 ...

  6. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  7. java第九节 网络编程的基础知识

    /** * * 网络编程的基础知识 * 网络协议与TCP/IP * IP地址和Port(端口号) * 本地回路的IP地址:127.0.0.1 * 端口号的范围为0-65535之间,0-1023之间的端 ...

  8. Shell编程入门基础上

    前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...

  9. [转] linux操作系统下c语言编程入门--基础知识

    点击阅读原文 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 1. 源程序编译        2. Makefile的编写        3. 程序库 ...

随机推荐

  1. SpaceVim 语言模块 dart

    原文连接: https://spacevim.org/cn/layers/lang/dart/ 模块简介 功能特性 依赖安装及启用模块 启用模块 语法检查及代码格式化 安装 dart-repl 快捷键 ...

  2. CF480Div2掉分记

    rating 1900+参加只有Div2的比赛也记rating了.还以为yyc报名没打会惨惨,原来不交题好像就不算参加.. 本来太晚了不想打,不过有Sinogi大佬带我还是打一打吧,apio之前练练手 ...

  3. Java:List判空的条件:List=null 和 List.size = 0

    当需要对一个LIst进行判空操作时我们可使用如下两个语句: if (list == null || list.size() == 0) {} if (list != null && l ...

  4. 一个例子说明substr(), mb_substr() 和 mb_strcut()之间的区别

    例子来自PHP官方文档,我只是翻译下. http://www.php.net/manual/zh/function.mb-strcut.php header( 'Content-Type:text/h ...

  5. Grafana学习

    一.安装 Grafana最新版本4.3.1安装(后端使用mysql) 二.使用

  6. redhat防火墙管理

    systemctl status firewalldsystemctl stop firewalldsystemctl start firewalldsystemctl enable firewall ...

  7. 【二】H.264/MPEG-4 Part 10 White Paper 翻译之 Prediction of Intra Macroblocks

    翻译版权所有,转载请注明出处~ xzrch@2018.09.14 ------------------------------------------------------------------- ...

  8. 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)

    题意与分析 (CodeForces - 603A) 这题真的做的我头疼的不得了,各种构造样例去分析性质... 题意是这样的:给出01字符串.可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所 ...

  9. hdu2553N皇后问题(dfs,八皇后)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  10. web自动化原理揭秘

    做过两年自动化测试的小伙伴说web自动化测试真的不难,无非就是一些浏览器操作,页面元素操作,常规的情况很容易处理,再学一学特殊元素的处理,基本就能应付项目的测试了. 这个话倒没错,但是真正要学好自动化 ...