【linux】学习5

鸟哥那本书第11章的内容

管理整个计算机硬件的是操作系统的内核(kernel),内核是需要保护的,我们一般用户只能通过shell来跟内核通信。Shell是用户操作系统的接口

cat  /etc/passwd   :可以查看每个账号登陆后默认的shell

~/.bash_history 中记录了前一次登陆以前使用过的命令

type 可以查询命令是bash内置命令 还是 外部命令

一下子写两行命令, 用 \[Enter]转义

变量

1. 显示变量内容:

  echo $变量名

  echo ${变量名}   :这两种都可以查看变量的内容

2. 设置变量 

my_name=kuangziyu  //设置变量,直接用= 后面不能有空格
双引号: 保留命令原有的含义   this_user="$my_name" 则显示this_user时是kuangziyu

单引号: 字符表面的意思 this_user=‘$my_name‘ 则显示this_user时是 $my_name

$: 使用通过其他命令获得的信息

增加变量内容my_name="$my_name":"me"   则my_name的内容变为 kuangziyu:me

改为环境变量export my_name

取消变量: unset my_name

3.查看变量

export: 后面不接变量名时也可以显示所有的环境变量  只有环境变量会被子进程继承

env: 查看所有环境变量

set: 查看所有环境变量,自定义变量,其他变量

重要的变量:

PS1 : 提示符的设置

PS1=‘[\[email protected]\h \w \A #\#]\$ ‘ 则输入前的提示变成了[[email protected] ~ 11:12 #23]$

\u  目前用户的账号名称

\h 主机名小数点前第一个名字

\w 完整工作目录的信息

\A 显示时间

\# 执行的是第几个命令

$: 当前shell的线程代号

echo $$  显示当前shell的线程号

:上个执行命令的回传码

echo $?   0表示上一个命令正确,其他数字表示有错,可以用来查bug

OSTYPE, HOSTTYPE, MACHTYPE 主机硬件与内核的等级  我的居然是i386

语系变量

locale -a 显示linux支持的所有语系

locale 显示当前语系相关的一些变量

LANG 后面的就是当前的语系,更改语系就改LANG的值

键盘读取变量

read [-pt] variable

-p 接个提示符

-t 接等待的"秒数“

read -p "please input your name:" -t 30 named   之后变量named就变成了 输入的名字

设置变量类型

declare [-aixr] variable
参数:
-a :将后面的 variable 定义成为数组 (array)
-i :将后面接的 variable 定义成为整数数字 (integer)

-x :用法与 export 一样,就是将后面的 variable 变成环境变量;
-r :将一个 variable 的变量设定成为 readonly ,该变量不可被更改内容,也不能 unset

变量默认类型是字符串,数值运算只能是整数 1/3=0

declare -p sum 显示sum变量的类型

declare +x sum  加法+,表示取消 取消sum的x属性,从环境变量还原到自定义变量

数组

sum[0]=1

sum[1]=2

...

直接这样写就可以了,但是echo $sum 会得到1,要访问其他的变量要使用 echo ${sum[1]}, 注意,一定要有大括号

系统限制:

ulimit -a 可以显示所有的系统限制,比如每个用户最大的进程数... 如何修改自己man

变量内容的选择性显示:

sum=123:456:8910:1234

echo ${sum#*:}   后显示 456:8910:1234

echo ${sum##*:} 后显示 1234   但实际上并没有删除,只是没有全部显示而已

# 表示从前向后删除符合条件最短的

## 表示从前向后删除符合条件最长的

% 表示从后向前删除符合条件最短的

%% 表示从后向前删除符合条件最长的

替换

echo ${sum/:/#} 显示123#456:8910:1234

echo ${sum//:/#}  显示123#456#8910#1234

两个斜杠中间的是被替换字,后面的是替换字,前面用//表示全部替换

变量的选择性设置

命令别名

alias 显示所有的命令别名

alias rm=‘rm -i‘  设置命令别名

unalias 名称  取消命令别名

历史命令

history 查看所有的历史命令

history [n] 
history [-c]
history [-raw] histfiles
参数:
n :数字,意思是『要列出最近的 n 笔命令列表』的意思!
-c :将目前的 shell 中的所有 history 内容全部消除
-a :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles , 则预设写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
-w :将目前的 history 记忆内容写入 histfiles 中

!number
!command
!!
参数:
number :执行第几笔指令的意思;
command :由最近的指令向前搜寻『指令串开头为 command』的那个指令,并执行;
!! :就是执行上一个指令(相当于按↑按键后,按 Enter)

通配符:

*  代表0到无穷多个任意字符

代表一定有一个任意字符

[] 代表一定有1个在括号内的字符,如 [abcd]表示一定有一个字符时abcd中的一个

[-] 如[0-9]表示0-9的所有数字

[^]  如[^abc]一定有一个字符,只要是非abc中的一个就接受

数据流重定向

1.  标准输入(stdin) :代码为0 ,使用< 或<< ;
2.  标准输出(stdout):代码为1 ,使用> 或>> ;
3.  标准错误输出(stderr):代码为2 ,使用2> 或2>> ;

find /home -name testing > list_right 2> /dev/null 

正确的输出到list_right文件,错误信息丢掉 >表示把list_right文件清空后重写 >>表示在文件后面接着写

find /home -name testing > list 2>&1

把正确和错误的信息都输出到同一个文件list中

cat > catfile < somefile  :把somefile的内容写入catfile

cat > catfile <<eof :当输入eof后结束输入。相当于按了ctrl+d

多个命令执行:

;  分号,不考虑命令间关系

&&     || 考虑命令间关系

ls /tmp/vbirding 2>> /dev/null && echo "exist" || echo "not exist"
        /tmp/vbirding存在输出exist,否则输出not exist

管道命令:

cut: 选取命令 对一行里的数据选取

last | cut -d ‘ ‘ -f 1  :last显示历史登陆信息  cut以‘ ’空格为分隔符,取出每一行中的第一个信息 即登陆人

gerp: 选取有想要的数据的那一行

last | grep ‘root‘ :把last输出信息中有root的行都显示出来

grep --color=auto ‘MANPATH‘ /etc/man.config :把 man.config文件中有 MANPATH的行显示出来 并且关键字用 任意颜色显示

排序:

sort: 对文件内容排序

cat /etc/passwd|sort -t ‘:‘ -k 3 -n: 对passwd内容 以‘:’为分隔符的第3个段排序  以纯数字方法排序(-n)

uniq: 取消重复的显示

last | cut -d ‘ ‘ -f 1| sort | uniq -c|sort -n: 把last内容仅显示第一节内容,对第一节内容排序,取消重复显示,统计重复出现次数(-c),再按数字排序显示

wc 显示文件中有多少行 多少字 多少字符

tee: 双向定位

 last | tee last.test.list | cut -d ‘ ‘ -f 1 :把last的结果存到last.test.list中,并且在屏幕上显示每行第一部分的信息

字符转换命令

tr 字符串删除 替换

last |tr [a-z] [A-Z] :把last输出的内容中所有小写的改成大写

echo "today is a nice day"|tr -d a:将句子中的a删除

col -x: 把tab键改成对等的空格

join file1 file2 把两个文件中相关的部分整合起来

paste file1 file2 把两个文件对应的两行连在一起

expand file:把file里的tab转化为空格键

split: 将大文件切割成小文件

xargs:参数代换

find /sbin -perm +7000 | xargs ls -l:用ls -l列出/sbin下所有特殊属性的文件的详细属性  find不支持管道命令 要用xargs

- :可以代替命令中的文件名

tar -cvf - /home|tar -xvf - :最后的-代表前面命令的标准输出文件

时间: 2024-12-13 13:31:42

【linux】学习5的相关文章

linux学习之路之LVM

试想一种情况,当初我们在规划磁盘的时候,只给某一个磁盘或分区之划分了30G的容量,但是后来,随着业务的需求,该磁盘或者分区的使用量会越来越大,等到以后再有数据存放时,发现该磁盘或者分区的容量不够用,此时该怎么办了?可以新增一个磁盘,经过格式化,挂载等过程就可以使用这个磁盘了,再将原来磁盘的数据完全的复制过来.等到后来又发现,规划的磁盘又太大了,然后又使用上述方法来减少磁盘的大小.虽然这种方法可行,但是效率低,比较复杂.不应该是我们首选的方法. 当然,我们可以这样做,将多个磁盘或者分区(PV)组合

Linux学习日志2-vim使用基础

vim是linux操作系统下的一个文本编辑工具,功能非常强大,但刚学习起来比较复杂.vim的所有功能要讲明白得有几百页,在这里只是记录一下vim的一些基本用法. 首先vim打开文件的三种方式: vim +# xxx(#是数字):表示打开xxx文件并将光标定位到指定行. vim -o xx1 xx2 xx3:表示同时打开三个文件,垂直分割显示 vim -O xx1 xx2 xx3:表示同时打开三个文件,水平分割显示 多个文件间跳转:键入ctrl+w后:→向左.←向右.↑向上.↓向下 vim打开文件

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; linux &nbsp; &nbsp; 学习 &nbsp;

决心书 我叫孙启浩,出生在山东淄博的一个农村.15岁初中还没有毕业,就去上了技校,其实父母是想让我提早的步入社会,我在那个地方学的是'电厂热能动力装置' 本来我是想学it的可是我父母说就学这个因为在我们那里电厂找工作也好找工资肯定比学it工资要高,我就这样在那个对我来说无所谓的学校学了两年半.放暑假的时候我哥回来说要进京学it,我就想要不我也去学?因为我对这个it还是挺感兴趣的,之后就来了北京,先去看了一个学校叫'八维'觉得这个学校不怎么好,上来先学单词什么的我这种人一看书就想睡觉.然后我父亲的

linux学习笔记(一)-文件目录相关的命令&&文件通配符

一.几个命令概述 1.查看目录以及目录底下的文件:ls(-a显示隐藏文件:-d显示目录本身:-l显示详细内容:-R递归显示,即把子目录的文件也显示出来:-h以更加被人类理解的格式显示,比如显示文件大小的时候用M为单位显示:-i显示文件索引ID) 2.查看文件内容:cat,head,tail,less,more,tac cat:将文件连接起来,输出在屏幕上,可接多个文件(-E:显示隐藏的换行符:-n:显示出行号) head:默认查看文件的前10行(-n#:查看文件的前#行.空白行也是一行) tai

Linux学习日志day1——无人值守系统安装DHCP+TFTP+PXE+Kickstar

Linux学习日志day1--无人值守批量系统远程网络安装(DHCP+TFTP+PXE+Kickstar)                                         --作者:江信瀚 服务器环境介绍: 主机名:workstation.example.com 关闭SElinux以及防火墙 虚拟机:VMware(关闭了VMware的DHCP服务) 网卡配置: 静态IP获取! IPV6全部都删除,因为根本用不到 子网IP可以在VMware中设置 8.8.8.8是谷歌的DNS服务器

linux学习-练习1

touch 创建多目录 ls查看当前目录下的所有隐藏文件 ls查看/boot目录下面的所有目录 帮助的使用 内部命令 用 help command   或  man bash 外部命令 用 command --help 或  command -h 使用手册 man 信息页 info date命令: 显示昨天 : date -d yesterday 显示前天 : date -d '-2 day' 显示当天 :  date -d '0 day' +%F 显示当前日期,格式:2016-08-08 显示

51CTO学院三周年,我的linux学习思想分享

51CTO学院三周年了,我也关注学院三周年了,在51CTO的平台上,让我学到了很多的东西,也交到了很多朋友,每当你发一篇博文,总会有些志同道合的小伙伴们去点赞,甚至还会有大神高手,去指出你分享内容里面的不足.在和这些虚拟的未曾相识的朋友们的交流中我的技术得到了提高,时光荏苒,一晃都三年了. 首先我要感谢51CTO做的一个关于技术的分享平台,经过大家的分享,里面的博客已经非常丰富了,很多优秀的文章可以供我们去学习和分享.我是一名运维工程师,从事运维工作已经3年多了,每天上班的第一件事情就是登上我的

linux学习之centos(三):网卡配置

Linux系统版本:Centos 6.5 在linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用中,使用远程工具SecureCRT,通过“ifconfig eth0 + 具体的ip地址”命令给linux配IP地址,但是这种配置方式存在以下问题: 只能临时生效,一旦重启,需要重新配置: 只能配置ip地址和子网掩码,可以连接内网,是无法连接外网的. 如果想要连接外网,ip地址.子网掩码.网关.DNS缺一不可. 如何真正的给CentOS配一个ip,而且设置成功后,通过使用

Linux学习 -- Shell基础 -- 概述

Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 -- 支持转义字符串 \e[1;31m xxx  开启颜色 \e[0m    关闭颜色 首行:#!/bin/bash #写好注释 执行方式: 方式1 sh xxx.sh 方式2 chmod 755 xxx.sh  ./xxx.sh 或 绝对路径 Linux学习 -- Shell基础 -- 概述

Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置

原文:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同