鸟哥的Linux私房菜学习笔记(三)
鸟哥的Linux私房菜学习笔记(三)
Vim
由于vim的快捷键过多,就直接贴链接了 知乎原文
BASH
认识bash
bash是Linux默认的shell,其有一下功能
- 命令编辑/修改能力(history)
- 命令与文档补全能力([tab])
- 命名别名设定功能(alias)
- 工作控制、前景背景控制(job control,foreground,background)
- 程序化脚本(shell scripts)
- 万用字元(wildcard)
可以使用type查询指令是否为Bash Shell的内建命令,用法如下
$ type [-tpa] name:不加任何選項與參數時,type 會顯示出 name 是外部指令還是 bash 內建指令
-t :當加入 -t 參數時,type 會將 name 以底下這些字眼顯示出他的意義:file :表示為外部指令;alias :表示該指令為命令別名所設定的名稱;builtin :表示該指令為 bash 內建的指令功能;
-p :如果後面接的 name 為外部指令時,才會顯示完整檔名;
-a :會由 PATH 變數定義的路徑中,將所有含 name 的指令都列出來,包含 alias
在bash中可以使用 反斜杠:\ 来跳过紧接着的下一个字符,以此来实现在命令行的多行书写,例如
$ cp /var/spool/mail/root /etc/crontab \
> /etc/fstab /root
此外还有一下快捷键
^u | 从游标向前删除指令串 |
---|---|
^k | 从游标向后删除指令串 |
^a | 将游标移动到最前面 |
^e | 将游标移动到最后面 |
Shell中的变量
查看某个变量
$ echo $HOME
或
$ echo ${HOME}
变量的设定遵循以下规则
变量即变量的内容使用 = 来连接,例如 [myname=VBird]
变量名称只能是字母与数字,但开头不能是数字
变量内容含有空格时,可以使用『"』或『’』将其包裹
- 双引号内如含有$等,可以使其保持原有特性
- 单引号内的特殊字符一律视为纯文字
如果在执行指令时还需要引用其他额外的指令,可以使用『`(指令)`』(反引号)或『$(指令)』的格式
为变量增加内容时,可以使用**"变量名称"或变量名称"或变量名称"或{变量名称}**后面直接连接需要添加的内容的方法
如果变量需要在子程序执行,需要使用export将其变为全局变量
使用unset取消变量的设定
一些与变量操作有关的函数
env,列出所有的环境变量(系统的)及其内容
set,列出所有变量,包含环境变量即自定义变量,其中包含一些较为常用的内容,包括
- PS1:提示字元的设定:
- ?:变量$?代表的是上一个执行的指令所回传的值,当对齐进行echo时可以在屏幕上显示,如果上一个指令成功执行,则其为0;如果发生错误,则其为错误代码
export
declare,设定变量的类型
$ declare [-aixr] variable-a :將後面名為 variable 的變數定義成為陣列 (array) 類型 -i :將後面名為 variable 的變數定義成為整數數字 (integer) 類型 -x :用法與 export 一樣,就是將後面的 variable 變成環境變數; -r :將變數設定成為 readonly 類型,該變數不可被更改內容,也不能 unset
阵列(array)类型变量
var[index]=content
变量内容的删除与取代
命令别名
alias,unalias,命令别名设定
$ alias lm='ls -al | more'$ unalias lm
使用alias后面不加参数时,会将设置的所有有别名的内容输出
bash环境通用操作
bash预设的组合键
万用字元与特殊符号
其余特殊符号
资料流重导向
当不想将正确的或错误的资料全部输出在命令行时,就可以使用重导向将其写入指定的文件中,资料流重导向可以分为以下三种(一个符号与两个符号的区别为:一个为覆盖写入,两个为累加写入)
- 标准输入(stdin):代号0,使用 < 或 <<
- 标准输出(stdout):代号1,使用 > 或 >>
- 标准错误输出(stderr):代号2,使用 2> 或 2>>
使用便准输出的一个例子是
$ ll / > ~/rootfile #命令行无输出,文件被写入指定文件
如果想将stdout和stderr写入不同的文件
$ find /home -name .bashrc > list_right 2> list_error
不将输出内容写入文件,但是不想在命令行上看到错误信息的输出时,可以使用stderr将错误的信息重定向到“黑洞装置” /dev/null 之中去
$ find /home -name .bashrc 2> /dev/null
如果要将stdout和stderr写入同一个文件夹,则可以使用
[dmtsai@study ~]$ find /home -name .bashrc &> list
对于stdin,其与前两者存在一定的差别。在使用 < 时可以在命令行上直接使用文档的内容
$ cat > catfile < ~/.bashrc
$ ll catfile ~/.bashrc
-rw-r--r--. 1 dmtsai dmtsai 231 Mar 6 06:06 /home/dmtsai/.bashrc
-rw-rw-r--. 1 dmtsai dmtsai 231 Jul 9 18:58 catfile
# 在这个例子中,先使用cat创建文件,在使用<写入内容,类似于cp的功能
而 << 代表的时结束的字元,例如
[dmtsai@study ~]$ cat > catfile << "eof"
> This is a test.
> OK now stop
> eof <==輸入這關鍵字,立刻就結束而不需要輸入 [ctrl]+d$ cat catfile
This is a test.
OK now stop <==只有這兩行,不會存在關鍵字那一行!
命令执行的判断依据:; && ||
- cmd;cmd——不考虑指令相关性的联系下达指令
- cmd1 && cmd2——若cmd1正确执行($?=0),才执行cmd2
- cmd1 || cmd2——若cmd1执行完且为错误,才执行cmd2
管线命令
与前文不同的时,管线命令使用的是『 | 』这个界定符号。管线只能处理经由前面一个指令传来的正确信息(stdout),管线命令的处理示意图如下
管线后面连接的必须是可以接受stdin的指令,例如less,more,head,tail。
管线的信息处理命令
cut——按要求切断传入的信息
$ cut -d'分隔字元' -f fields <==用於有特定分隔字元 $ cut -c 字元區間 <==用於排列整齊的訊息-d :後面接分隔字元。與 -f 一起使用; -f :依據 -d 的分隔字元將一段訊息分割成為數段,用 -f 取出第幾段的意思; -c :以字元 (characters) 的單位取出固定字元區間;# 例子 $ echo ${PATH} | cut -d ':' -f 5
grep——分析输入的信息,如果复合要求就取出
$ grep [-acinv] [--color=auto] '搜尋字串' filename-a :將 binary 檔案以 text 檔案的方式搜尋資料 -c :計算找到 '搜尋字串' 的次數 -i :忽略大小寫的不同,所以大小寫視為相同 -n :順便輸出行號 -v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行! --color=auto :可以將找到的關鍵字部分加上顏色的顯示喔!
管线的排序命令
sort——依据不同的资料类型进行排序,默认使用字符进行排序
$ sort [-fbMnrtuk] [file or stdin]-f :忽略大小寫的差異,例如 A 與 a 視為編碼相同; -b :忽略最前面的空白字元部分; -M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法; -n :使用『純數字』進行排序(預設是以文字型態來排序的); -r :反向排序; -u :就是 uniq ,相同的資料中,僅出現一行代表; -t :分隔符號,預設是用 [tab] 鍵來分隔; -k :以那個區間 (field) 來進行排序的意思$ cat /etc/passwd | sort abrt:x:173:173::/etc/abrt:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin alex:x:1001:1002::/home/alex:/bin/bash$ cat /etc/passwd | sort -t ':' -k 3 root:x:<u>0<u></u>:0:root:/root:/bin/bash dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash alex:x:1001:1002::/home/alex:/bin/bash arod:x:1002:1003::/home/arod:/bin/bash
uniq——将排序后的资料仅列出一个显示
[dmtsai@study ~]$ uniq [-ic]-i :忽略大小寫字元的不同; -c :進行計數
wc——列出字数、行数、字元数
$ wc [-lwm]-l :僅列出行; -w :僅列出多少字(英文單字); -m :多少字元;
tee 双通道重导向
既会写入指定的文件夹,又会在屏幕上显示出输出
$ tee [-a] file-a :以累加 (append) 的方式,將資料加入 file 當中!
字元转换命令
tr——删除或替换文字
$ tr [-ds] SET1 ...-d :刪除訊息當中的 SET1 這個字串; -s :取代掉重複的字元!# 例子 $ last | tr '[a-z]' '[A-Z]' # 將 last 輸出的訊息中,所有的小寫變成大寫字元$ cat ~/passwd | tr -d '\r' > ~/passwd.linux
col——将 [tab] 转换为空格
$ col [-xb]-x :將 tab 鍵轉換成對等的空白鍵
join——将两个文档中,有相同内容的一行合在一起
paste/expand懒得写了
split 分割命令
$ split [-bl] file PREFIX-b :後面可接欲分割成的檔案大小,可加單位,例如 b, k, m 等;
-l :以行數來進行分割。
PREFIX :代表前置字元的意思,可作為分割檔案的前導文字。# 例子
$ cd /tmp; split -b 300k /etc/services services
$ ll -k services*
-rw-rw-r--. 1 dmtsai dmtsai 307200 Jul 9 22:52 servicesaa
-rw-rw-r--. 1 dmtsai dmtsai 307200 Jul 9 22:52 servicesab
-rw-rw-r--. 1 dmtsai dmtsai 55893 Jul 9 22:52 servicesac$ cat services* >> servicesback #将多个小文档合成一个
xargs 参数代换
其本质是让本身不能直接接受stdin输入的指令可以在管线中使用
[dmtsai@study ~]$ xargs [-0epn] command-0 :不仅可以将分隔符从默认的空格变成 NULL,还会将单引号、双引号、反斜线等统统默认为是普通字符;除了可以使 用-0选项外,其实还可以使用-d选项来指定任何一个符号作为分隔符
-e :這個是 EOF (end of file) 的意思。後面可以接一個字串,當 xargs 分析到這個字串時,就會停止繼續工作!
-p :在執行每個指令的 argument 時,都會詢問使用者的意思;
-n :後面接次數,每次 command 指令執行時,要使用幾個參數的意思。當 xargs 後面沒有接任何的指令時,預設是以 echo 來進行輸出喔!
在管线命令当中,常常会使用到前一个指令的 stdout 作为这次的 stdin ,某些指令需要用到文档名称 (例如 tar) 来进行处理时,该 stdin 与 stdout 可以利用减号 “-” 来替代
$ mkdir /tmp/homeback
$ tar -cvf - /home | tar -xvf - -C /tmp/homeback
上述的例子的含义为:将 /home 里面的文档打包,但打包的资料不是进行记录,而是传送到 stdout;经过管线后,将 tar -cvf - /home 传送给后面的 tar -xvf -
鸟哥的Linux私房菜学习笔记(三)相关推荐
- 鸟哥的linux私房菜运维篇,鸟哥的Linux私房菜学习笔记之SAMBA
鸟哥的Linux私房菜学习笔记之SAMBA 发布时间:2020-06-24 01:44:50 来源:51CTO 阅读:185 作者:tomshen NFS仅能让Unix/linux之间共享数据,CIF ...
- 鸟哥的Linux私房菜学习笔记(2)登录与在线求助
以管理员身份运行VMware Player,点击之前安装好的CentOS 7版本的虚拟机,会出现以下界面: 这是我建立的一般账户,ROOT由于身份比较特殊,所以没有被列出来. 点击 "未 ...
- 鸟哥linux群,【鸟哥的linux私房菜-学习笔记】linux的帐号与群组
linux的帐号与群组 使用者标识符: UID 与 GID ID 与账号的对应就在 /etc/passwd 当中: 计算机只认得ID(即数字),并不能区别账号: 每个登陆的使用者至少都会取得两个 ID ...
- 鸟哥的linux私房菜学习笔记《二十》bash简介
shell的功能: 提供用户操作系统的一个接口. 系统上合法的shell要写在/etc/shells这个文件,因为系统某些服务在运行过程中会去检查用户能够使用的shells,而这些shell的查询就是 ...
- Linux管道命令——《鸟哥的Linux私房菜》笔记
Linux管道命令--<鸟哥的Linux私房菜>笔记 0 前言 看完书之后,总感觉不记录下来的话,很快就会忘了,然后又需要重新到处翻书找资料,所以还是把内容记录下来,方便以后复习.本文大部 ...
- 鸟哥的Linux私房菜学习心得-基础操作
<鸟哥的Linux私房菜>特别适合新手作为Linux的入门教材,即使没有计算机知识基础也能学明白,鸟哥算是很用心了.半个月来学习了鸟哥主页教程的基础篇,感觉良好,因此特意写下学习的感受,以 ...
- 鸟哥的 Linux 私房菜学习总结(超赞!!!)
我是技术搬运工,好东西当然要和大家分享啦.原文地址 常用操作以及概念 求助 1. --help 指令的基本用法与选项介绍. 2. man man 是 manual 的缩写,将指令的具体信息显示出来. ...
- 鸟哥的Linux私房菜读书笔记:Linux磁盘与文件系统管理
系统管理员很重要的任务之一就是管理好自己的磁盘文件系统, 每个分区不可太大也不能太小, 太大会造成磁盘容量的浪费, 太小则会产生文件无法储存的困扰. 前面谈到的文件权限与属性中, 这些权限与属性分别记 ...
- 鸟哥的Linux私房菜 读书笔记
个人表示,每次看电子档,都会从头开始读,话说会一直读不完.以前会有手抄板的读书笔记,但是不方便携带.现在就开始电子档的读书笔记吧. 1. Kernel 必须管理的事项有: * 系统呼叫接口(syste ...
- 鸟哥的Linux私房菜 命令笔记2
which:寻找执行档 which [-a] command -a:all将所有从$PATH目录中可以找到的指令均列出来,而不止第一个被找到的指令名称 which ifconfig which whi ...
最新文章
- Objective-C:OC内部可变对象和不可变对象的深(复制)拷贝问题思考:
- linux批量安装 五大开源软件挨个看,Linux批量安装 五大开源软件挨个看(1)(5)
- matlab中sum(w.),matlab中sum
- python实现表格_python 实现绘制整齐的表格
- 如何发布自己的 Composer 包
- Android SQLite服务--创建、增删改查
- 优必选发布新一代大型机器人Walker X
- ecshop 邮件模板 html,给ecshop后台增加新的邮件模板
- CONTINUAL LEARNING FOR AUTOMATED AUDIO CAPTIONING USING THE LEARNING WITHOUT FORGETTING APPROACH
- 微星小飞机界面翻译_软件 | 第二款翻译利器推荐
- 获取常用3500字的书法图片
- 想知道“照片识别文字”的技巧吗?快看这几个方法
- php怎么获取图片信息,PHP获取图片信息exif
- 最简单的让IjkPlayer自动旋转带有rotation视频的方法
- BGP公网成本节省50%秘笈,共享流量包、共享带宽包,便宜到阿里云快哭了
- nginx使用ngx_shared_memory_add和ngx_slab_alloc等在共享内存里创建一棵红黑树
- Android studio2.3版本 用小米手机无法调试,用模拟器正常调试。Application Installation Failed
- 基于微服务架构的直播平台搭建【一】
- [渝粤教育] 西南科技大学 经济型数控系统设计 在线考试复习资料
- 下列关于python运算符的使用描述正确的是_以下关于 Python 字符串的描述中,正确的是( )...
热门文章
- 计算机九宫格游戏怎么玩,《九宫格数独》怎么玩 数独玩法介绍
- c语言课后答案详解,c语言课后练习题答案详解_0.doc
- 计算机管理键盘驱动一直黄标,教你键盘驱动程序显示黄色感叹号的处理办法
- WEB密码安全输入控件
- 《计算机操作系统(慕课版)》(汤小丹著)课后习题答案
- 如何彻底删掉360安全卫士,删除顽固的DLL文件
- Visual Basic Script 程序参考手册-学习第1天:初步认识VBS,编写第一个Hello World程序,解决中文字符乱码问题,推荐参考书
- VS无法启动程序调试监视器未能启动
- 因子分析在SPSS中的应用
- Windows下使用CMD下载网络文件