Linux手册

有情链接:

  • 什么是Linux?
  • Linux菜鸟教程
  • Linux shell命令大全
  • 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 | grep 进程号

二、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产生指定大小的空文件,如交换文件,模拟虚拟文件系统

你可能感兴趣的:(Linux,shell,linux,ubuntu)