Linux & Shell 学习笔记【1/2】
因为工作上的需要,花了些许时间去熟悉学习Linux和Shell,现在也花点事件在此记录一下以加强巩固学习的内容吧。学的不算深入,所以都是一些比较junior的内容。
在下一篇随笔会详述之前写的一个用于解析swift(569/940/950)的Shell。
一. Linux
1. 如下为一些经常使用到的命令,因为刚开始学习的时候记忆的东西比较多,都是根据全称来记忆的,多使用之后就会熟悉了。
cd / ls / mkdir / rmdir / rm / touch / mv / cp
对应全称如下
change directory / list / make directory / remove directory / remove / touch / move / copy
2. 归档/压缩会用到后面两个命令: tar / gzip
归档/解归档命令如下:
tar -cvf archived.tar fileName/FolderName --- 归档文件/文件夹,其中c=create(创建归档);v=visual(显示归档过程);f=file(归档后文件名);archived.tar为归档后的文件名; fileName/FolderName为需要归档的文件/文件夹
tar -xvf archived.tar --- 解除归档,其中vf参数与归档的含义相同,x=extract(解析归档)
压缩/解压命令如下:
gzip fileName --- 压缩,会自动生成fileName.gz的压缩文件(原始的fileName文件会消失)
gzip -d fileName.gz --- 解压缩,会自动生成fileName的文件(压缩文件会消失)
上述的归档/解归档和压缩/压缩可以同时使用
tar -zcvf archived.tar.gz fileName/FolderName --- 在归档命令的基础上添加z(标识以gzip的方式进行压缩)
tar -zxvf archived.tar.gz --- 在解归档的基础上添加z(标识以gzip的方式进行解压)
3.history
该命令用来获取历史执行命令的记录(会显示对应的commandNumber & commandContent),有如下两个参数:
history n --- 展示最新的n条历史记录
history -c ---清空历史记录
其中针对展示的历史记录,可以通过两个方式进行调用:
! + commandNumber
! + commandContent
其中commandContent可以为前几个字符,环境会自动匹配历史中最新的命令。
4. 用户/用户组操作
添加/删除用户
useradd newUsername --- 添加新用户newUsername(此时用户组也默认新建,亦为newUsername)
uueradd groupName newUsername --- 添加新用户newUsername,并且该用户所属groupName 用户组
passwd newUsername userPwd --- 为用户newUsername 添加密码userPwd
userdel newUsername --- 删除用户newUsername
groupadd newGroupName --- 添加新用户组newGroupName
groupdel newGroupName --- 删除用户组newGroupName
5. 文件夹权限管理
针对每个文件都存在属主/属组/其他人的三个读/写/执行权限。可通过如下命令修改文件的属主/属组
chown newUsername:newGroupName fileName --- 修改文件fileName的属主为newUsername,属组为newGroupName
如果只想修改属组,把newUsername置空,注意':'不能去掉。同时也可以通过如下命令
chgrp newGroupName fileName
如上两个命令我理解全称就是change owner和change group(方便记忆,包括后面的chmod=change modification)
6. 利用scp进行上传/下载
规则一般就是scp source destination
下载:scp username@host:absolutePath/fileName D:\ ---- 将文件fileName下载到D盘中
上传:scp D:\fileName username@host:absolutePath/ --- 将文件fileName上传到服务器absolutePath/下
如果是上传文件夹,在上传的路径前加-r (标识recursive)
7. grep/sed/awk
这三个命令也会经常使用到,查询的时候使用grep比较多,替换使用sed比较多,对查询后的继续处理使用awk比较多。
grep:
如grep test test* ---用来查询以test开头的文件中包含test字符串的内容
echo “abc” | grep ‘^a' -- 查询字符串abc是否以字母a开头
如上可以知道grep也支持正则表达式(会在后面描述),一般情况下需要使用正则时候我会使用egrep,因为有些正则grep还不能使用(应该需要使用grep -e)
sed:
echo “abc" | sed 's/a/A/g’ ---可以将a替换成A
sed -n '1,3p' fileName 输出文件fileName的第一行到第三行,其中p为print,n为quiet(代表只输出选中的内容,否则所有内容都会输出,而且选中的内容会输出两遍)
awk:
awk -F ‘:’ '{print $2}' fileName --- 以分号为分隔符,输出每一行的第二个字符。其中-F为field seperator,作用同-v FS
awk -v RS=':' 'NR==2{print}' --- 以分号为RS(row seperator行分隔符),并输出第二行(NR=number row)
上述只是具体,实际功能均远不止于此,特别awk的功能在处理字符串上极为强大。前段时间因为工作需要利用awk解析swift(569/940/950)报文到指定的格式上,会在后面单独写一遍文档详述。
8, 切换用户
su userName --- 切换到userName用户,但依旧使用当前的环境变量,但userName为空时为切换到root。可以使用exit命令退出当前用户
su - userName --- 与上面的相比的不同时会切换当前的环境变量到新用户
9.管道
管道用符号|标识,即将管道左边的输出作为管道右边的输入,如:
echo “123” | grep ‘1’
上述命令中将文本作为grep命令的输入
10. 标准输出/输入/错误输出
标准输入为0,默认从屏幕输入
标准输出为1,默认输出的屏幕
标准错误输出为2,默认输出到屏幕
echo 123 > fileName --- 将文本123输出到文件fileName中,此时123不会输出到屏幕上
cat > file1 < file2 --- 将file2作为file1的标准输入,即拷贝file2的内容到file1
command > file 2>$1 --- 将命令command的结果输出到file中,并将标准错误输出的转到标准输出,即此时如果存在错误也会很标准输出一样输出至file中
11. 其他零碎的小命令
sort 排序
last | sort
uniq 对重复的内容只显示一次(unique),其中可以使用参数-c来计算重复的数量,如下
uniq -c
wc 计算数量(行/单词/字符), 全称应为word count
wc -l A --- 计算行数
wc -w --- 计算单词数量
wc -m ---计算字符数量
如果什么参数都没有,会显示行/单词/字符的数量
tee 将内容输出的文件的同时标准输出,如:
echo “123” | tee test.txt
如上命令在把文本123输入到test.txt*(覆盖的方式)的同时输出到屏幕
ps -aux --- 查看内存等使用情况
top --- 查看内存等使用情况(动态)
df -h ---查看磁盘使用情况
dos2unix fileName ---- window和linux的换行符不同,所在需要通过该命令去除多余的^M
unix2dos filename
tr ‘a-z’ 'A-Z' 将小写字母转成大写字母
二. VIM
1. 搜索字符串
:/string --- 向文件尾部搜索字符串
:?string --- 向文件头部搜索字符串
搜索过程中使用n(向下搜索)/N(向上搜索)字符串
2. 替换字符串
:[range]s/oldString/newString/g
其中range可以是1,4代表第一行至第四行:%代表全部内容
g标识全部替换
3. 编辑模式
i/o为进入编辑模式,其中o为在当前行插入一行并让光标停在新的一行
通过ctrl x + ctrl o可以对参数进行补齐(根据现在文件内容),如果在写shell,参数又比较长,还是比较好用的
通过ctrl x + ctrl n可以对参数进行补齐(根据当前目录文件)
4. 指令模式
u为取消上一次操作(undo),ctrl + r为重做上一次操作(redo);万一取消错了,redo还是很有用的
v/V/ctrl + v可以对区块(即不对整行进行处理)进行选择,进而进行后续操作(yy/dd/p)
5. 多文件处理
好处是针对多个文件间需要使用yy/p命令,不同vim下的文件是无法处理的。vim 后加多个文件可以多文件处理,利用:files可以展示正在多文件处理的文件列表,:n进入到下一个文件,:N进入到上一个文件。
环境参数设置
:set nu --- 显示行号(number)
:set nonu --- 不显示行号
:set hlsearch --- 高亮查询的结果(highlight search)
:set nohlsearch --- 不高亮查询结果
:set autoindent --- 启用indent(当该行存在indent,换行后下一行也会保留和改行的indent)
:set noautoindent --- 不启动indent
:set backup --- 启动备份,当文件发生修改时,会自动生成一个fileName~的备份文件
:set nobackup --- 关闭备份(默认为关闭的状态)
;syntax on --- 启动语法(字符颜色不同)
:syntax on --- 关闭语法
三. 正则
^为匹配首字符,但在[]代表非
$匹配尾字符,如^1.*2$为匹配1开头2结尾的字符
. 匹配除换行符外的任意字符
*匹配前面的内容0次或多次
+匹配前面的内容1次或多次
?匹配前面的内容0次或1次
{n}匹配前面的内容n次
{n,}匹配前面的内容n次或更多次
{n,m}匹配前面的内容n-m次(包含n和m)
|各个条件之间的或
Linux & Shell 学习笔记【1/2】的更多相关文章
- Linux Shell 学习笔记 一 目录结构
以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin 存放普通用户使用的命令 /sbin 存放管理员可以执行的命令 /home ...
- linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- Linux Shell 学习笔记
2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是 ...
- Linux Shell学习笔记:exit退出状态代码
inux提供$?特殊变量来保存最后一条命令执行结束的退出状态.执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值. 正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令 ...
- Linux Shell学习笔记(一)
Shell,见名知意,就是一个作为用户与Linux OS间接口的程序,允许用户向OS输入需要执行的命令.Shell众多,这里只介绍Bash. 0)实验的Shell版本 显示shell版本: /bin/ ...
- linux shell 学习笔记--内部命令学习
.基本命令 新手必须要掌握的初级命令 ls 基本的列出所有文件的命令.但是往往就是因为这个命令太简单,所以我们总是低估它.比如 ,用 -R 选项,这是递归选项,ls 将会以目录树的形式列出所有文件, ...
- linux shell学习笔记
一 变量 声明变量: my_var='ddd'使用变量: ${my_var}设置为只读变量: readonly my_var删除变量: unset my_var 注意只读变量不能被删除 变量类型:( ...
- linux shell 学习笔记01
1.命令历史记录history !$ :调用上一条命令的执行结果 !100 :运行history记录里的第100条命令 !ser :调用以ser开头的最后一次执行的命令 ctrl+r ...
- Linux Shell 学习笔记 00
1.Bash = Bourne Again SHell 2.终端提示符: #普通用户 username@hostname$ #管理员用户 root@hostname# 3.shell脚本通常是一个以s ...
随机推荐
- 变身六次失去核心的小米Note还能火吗
奥特曼变身有时间限制,因此我们总是希望它多变几次身,从而把小怪兽打得嗷嗷叫.但对于科技产品来说,不断推出"变身版",似乎总有江河日下.大势已去之感.三星形形色色的复仇者联盟S6版, ...
- 让git push命令不再需要密码
最近利用jekyll写博客,为的就是博客管理方便,但是在上传博客的时候使用git push命令每次都得输入github帐号和密码特别的不方便,于是就搜了一下. 在这篇文章里提到,GitHub获得远程库 ...
- Visual Studio 2013编译Tesseract 3.04
文章目录 去年时候使用了VS2008编译了Tesseract 3.02版本,主要是参考了一份官方文档,但是对于目前的最新版本并没有给出说明. 本文主要参考了Paul Vorbach的How to bu ...
- Vue1.0用法详解
Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能实现的 ECMAScript 5 特性. 开发环境部署 可参考使用 vue+webpack. 基本用法 1 2 3 ...
- 安卓注解处理器-processor
最近在学习安卓开源框架发现,很多的开源框架都使用到了注解处理器,例如EventBus3.0.本文通过一个简单的Demo来介绍如何使用注解处理器.Demo链接为https://github.com/cu ...
- 代工黑马,纬创如何强吞iPhone?
现在,智能手机市场非常得意兴阑珊,以苹果为首的最强大脑似乎再也想不出什么好的创意,iPhone7也只不过是旧机种的翻新款式,看上去跟一块板砖.一块镜子差不多:软体方面则出现了大批的"过度 ...
- selenium+requests进行cookies保存读取操作
看这篇文章之前大家可以先看下我的上一篇文章:cookies详解 本篇我们就针对上一篇来说一下cookies的基本应用 使用selenium模拟登陆百度 from selenium import web ...
- 爬虫(三)解析js,抓取优酷免费视频的真实播放地址
工具:google浏览器 + fiddler抓包工具 说明:这里不贴代码,[只讲思路!!!] 原始url = https://v.youku.com/v_show/id_XMzIwNjgyMDgwOA ...
- 使用HBuilder开发移动APP:ajax调用接口数据
既然要做APP,与接口交互式少不了的,除非只是想做一个纯静态的APP.所以html5+的环境准备好后,我最先开始研究的就是如何与接口交互. 使用HBuilder新建示例教程后,里面会有一个ajax(网 ...
- Pytorch-Tensor基本操作
(此文为个人学习pytorch时的笔记,便于之后的查询) Tensor基本操作 创建tensor: 1.numpy向量转tensor: a=np.array([2,2,2]) b=torch.fr ...