Linux手册
有情链接:
一、好命令
作用 | 命令 |
---|---|
字符集 | > :覆盖输出,>> 追加输出,` |
不间断且在后台运行 | nohup sh a.sh & |
动态查看进程情况 | top |
进程转后台运行(进程转后台,非终结、非中止) | ctrl + z |
后台进程转入前台运行,jobs 显示当前后台正在运行的进程 | fg %2 使第2个进程转前台(bg %2 是转后台) |
切除指定行(切除[a,b]行内容,若想从a行到结尾则是sed -i 'a,$d' test.txt ) | sed -i 'a,bd' test.txt |
实时(动态)查看一个文件的结尾内容变动 | tail -f test.txt |
不同端上的文件上传下载 | sz :将选定的文件发送(send)到本地机器,rz 反之(会弹出窗口选择文件) |
显示内存情况,包括交换内存和缓冲区内存,-h 带单位,-s 指定几秒刷新一次 | free -h -s 3 |
查看文件的字节-c 、字符-m 、行数-l 、词数-w | 用统计行数举例:wc -l a.txt |
查看磁盘空间情况 | df -hl :磁盘使用,repquota :文件系统配额 |
查看网络配置 | ifconfig |
查看环境变量执行的脚本 | env $你的环境变量 |
查看本机支持的所有命令 | compgen -c |
打印当前目录栈,目录栈通过 pushd popd 来操作 | dirs |
不重启机器,终结所有运行的进程 | disown -r |
查看你自己的常用命令(不查看history) | hash |
进行整数运算的命令 | let a=b+c |
终端文件&&黑洞文件 | 终端 /dev/tty ,黑洞文件 /dev/null |
显示当前所在路径 | pwd |
查看运行中的进程跑了多长时间了 | `ps -eo pid,lstart,etime |
二、shell冷知识
1、开头的注释代表什么东西?
用来指定这个文件的执行解释器是哪一个。一个文件的执行需要底层写好的解释逻辑去编译你写的这些命令,使用哪一个不是根据你文件后缀来的,是由文件开头指定指出的。不指定则默认sh。
#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f
2、hadoop文件管理shell命令头
hadoop fs:通用的文件系统命令,针对任何系统,比如本地文件、HDFS文件、HFTP文件、S3文件系统等。
hadoop dfs:特定针对HDFS的文件系统的相关操作,但是已经不推荐使用。
hdfs dfs:与hadoop dfs类似,同样是针对HDFS文件系统的操作,替代hadoop dfs。
个人习惯写法:hdfs dfs -“shell命令”
三、经典懵
1、一个txt文件已归正,每行元素按table分隔,单文件很大,无法使用cat查看。怎么获取文件的列数?
第一种方法:
hadoop@bigdata3:~/zhangjinke$ cat col.txt
1 2 3 4
5 6 7 8
9 10 11 12
hadoop@bigdata3:~/zhangjinke$ head -n 1 col.txt
1 2 3 4
hadoop@bigdata3:~/zhangjinke$ head -n 1 col.txt | awk -F ' ' '{print NF}'
4
第二种:
hadoop_portal@bigdata3:~/zhangjinke$ cat col.txt
1 2 3 4
5 6 7 8
9 10 11 12
hadoop_portal@bigdata3:~/zhangjinke$ sed -i '2,$d' col.txt
hadoop_portal@bigdata3:~/zhangjinke$ cat col.txt
1 2 3 4
方法很多,不一一举例。
2、起别名。很多人知道,但不是很熟悉,回顾一下。
hadoop@bigdata3:~/zhangjinke$ alias c='cat'
hadoop@bigdata3:~/zhangjinke$ c time.sh
time=`date "+%Y-%m-%d %H:%m:%S"`
echo "$time"
hadoop@bigdata3:~/zhangjinke$ alias shijian='date "+%Y-%m-%d %H:%m:%S"'
hadoop@bigdata3:~/zhangjinke$ shijian
2021-06-09 14:06:57
3、软连接和硬链接
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(SymbolicLink)。默认情况下,ln命令产生硬链接。
【硬连接】ln 源文件 目标文件
目标文件没有写文件名,会和原名一致
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。文件真正删除的条件是与之相关的所有硬连接文件均被删除。
【软连接】ln -s 源文件 目标文件
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
4、FTP的使用。
FTP是帮助我们与服务器文件进行传输的,包含下载和上传。
上传:首先是本地文件上传到FTP服务器(你可以理解成中转的一个文件系统),文件再从FTP到服务器。文件位置是这样移动的:本地 -> FTP -> 你要上传文件的那个服务器
下载:与上传的文件位置移动相反,从服务器拉文件到本地。服务器 -> FTP -> 本地
本地-FTP 的终端交互操作:
首先是cmd使用ftp服务,open连接你的ftp服务器(open IP),登录用户名密码,看见Login successful.
后使用binary
切换二进制模式。以下是Windows CMD 操作。【若用MobaXterm UI操作,同理】
Microsoft Windows [版本 10.0.19041.985]
(c) Microsoft Corporation。保留所有权利。
C:\Users\Administrator>ftp
ftp> open 115.X36.XXX.XX
连接到 115.X36.XXX.XX。
220 (vsFTPd 3.0.3)
200 Always in UTF8 mode.
用户(115.X36.XXX.XX:(none)): chuanmei
331 Please specify the password.
密码:
230 Login successful.
ftp> binary
200 Switching to Binary mode.
ftp> get ftp服务器文件的路径 文件保存到本地的路径
ftp> put 文件保存到本地的路径 ftp服务器文件的路径
FTP-服务器 的终端交互操作:
不同的是,用ssh登录FTP服务器,和本地与FTP交互一样,这次不是get
/put
,而是用的scp
。
scp 操作文件路径 目标文件路径
5、Linux和Unix
内核是Linux操作系统
的核心。Linux是Unix的克隆版本。但是,如果考虑可移植操作系统接口(POSIX)标准,则可以将Linux视为UNI,以下是部分区别:
Linux | Unix |
---|---|
提供付费和免费分发 | 不同级别的Unix使用不同的付费结构 |
Linux主要使用带有可选命令行界面的GUI | Unix使用命令行界面 |
Linux OS是便携式的,可以在不同的硬盘中执行 | Unix OS不可移植 |
Linux由全球Linux社区开发 | Unix由AT&T开发人员开发 |
Linux是免费的。它是在GNU许可下通过互联网下载的 | 大多数类似Unix的操作系统不是免费的 |
Linux用于家用PC,电话等 | Unix用于服务器系统 |
6、Linux有几种shell ?
五种。使用cat /etc/shells
查看本机支持的shell类型。
shell类别 | 作用 |
---|---|
C Shell(csh) | 类似于C语法,并提供拼写检查和作业控制 |
Korn Shell(ksh) | 是一种高级编程语言Shell |
Z Shell(Zsh) | 它提供了一些独特的性质,例如观察登录/注销监视,文件名生成,启动文件,结束注释 |
Bourne Again Shell(bash) | 这是Linux发行版的默认设置 |
友好的交互式Shell(Fish) | 它提供基于Web的配置,自动建议等 |
7、du 和 df 的定义,以及区别?
df 显示磁盘使用情况,du 显示目录或文件的大小情况。
df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
df 显示每个文件所在的文件系统的信息,默认是显示所有文件系统。(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data【元数据】。)
du 命令是用户级的程序,它不考虑 Meta Data,而 df命令则查看文件系统的磁盘分配图并考虑 Meta Data。
8、shell里的 ` ,是什么意思?
`内有函数,"内是普通字符串,所以有区分。
9、chmod命令的ugo?
u:user,自己
g:group,自己所属的组
o:others,其他人
一般的我们对一个目标进行修改权限,使用chmod -R 520 文件全名
。其中5的位置代表的是u的权限值,2的位置是所属组对这个目标拥有的权限值,类似地,0的位置代表的是其他人拥有这个文件的权限值。其中数值代表的是三位的二进制,这三位每一位表示的值为421。第一个5转二进制则是,101,就是4+1=5。
当然也可以使用chmod -R u=5 文件全名
这种等其他样式修改。
10、echo -eEn
# -n:不在末尾输出换行符(不带-n,默认会在末尾输出换行符)
[root@localhost ~]$ echo -n "hello world"
hello world[root@localhost ~]$
# -e 用于启用反斜杠转义,如 \n 会转换成换行
[root@localhost ~]$ echo -e "hello\nworld"
hello
world
# -E 用于禁用反斜杠转义,默认就是禁用
[root@localhost ~]$ echo -E "hello\nworld"
hello\nworld
#输出带背景颜色的字体
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"
#其他属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m — \33[37m 设置前景色
\33[40m — \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
11、ping
-w 要大于等于 -c,避免没有ping呢就超时了
-d :使用Socket的SO_DEBUG功能;
-c<完成次数>:设置完成要求回应的次数;
-f:极限检测;
-i<间隔秒数>:指定收发信息的间隔时间;
-I<网络界面>:使用指定的网络界面送出数据包;
-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
-n :只输出数值;
-p<范本样式>:设置填满数据包的范本样式;
-q :不显示指令执行过程,开头和结尾的相关信息除外;
-r :忽略普通的Routing Table,直接将数据包送到远端主机上;
-R :记录路由过程;
-s<数据包大小>:设置数据包的大小;
-t :超时时间
-v :详细显示指令的执行过程。
-W : 等待时间
12、/dev/null 和 /dev/zero
1. /dev/null:表示 的是黑洞文件
,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件
1.1 将无用的输出流写入到黑洞丢弃。
curl -Iwww.baidu.com 2>/dev/null | head -l 错误信息定位到黑洞
1.2 清空文件
cat /dev/null > /home/omc/h.txt
1.3 在书写定时任务总,规范的写法就是将所有定时任务脚本结尾加上>/dev/null 2>&1,让所有的输出流(包括错误的和正确的)都定向到空设备丢弃。00 01 * * * /bin/sh/server/scripts/mysqlbak.sh >/dev/null 2>&1
2. /dev/zero:当我们使用或者读取他的时候,她是会提供无限连续不断的空的数据流
2.1覆盖
其他的文件信息
2.2产生指定大小的空文件
,如交换文件,模拟虚拟文件系统
13、六个重定向符号:> 、>!、>> 、<、<<、<<<
1. >
覆盖:将文件b用文件a覆盖 a.txt > b.txt
2. >!
强制覆盖:将文件b用文件a强制覆盖 a.txt >! b.txt
3. >>
追加:将文件a追加到文件b a.txt >> b.txt
4. <
传参:将后面的元素变为前面的参数 ssh abcd.org.cg < login.txt
login.txt 文件变为参数,可配置登录过程
user zhangjinke
passwd 123456
5. <<
结尾符:指定末尾符匹配某个字符串后结束 cat << EOF > file1
可分为cat
<< EOF
> file1
(<< EOF
> file1
位置可互换)
表示,输入一段字符,以"EOF"结束。当你输入EOF<< EOF
,敲回车后,文件保存为file1> file1
不一定是EOF这三个字母,可自定
6. <<<
高亮匹配:<<<前面的元素 在 <<<后面元素的哪个位置,如果在,会高亮 grep 'abc' <<< 'aaaabcccc'