> Linux教程 > Linux学习 >

Linux基础命令详解(二)————Vim文本编辑

shell:壳,命令解释器
 
cat /etc/shells
 
/bin/sh
 
/bin/bash
 
/sbin/nologin
 
/usr/bin/sh
 
/usr/bin/bash
 
/usr/sbin/nologin
 
/bin/tcsh
 
/bin/csh
 
man bash
 
man cd
 
man ls
 
type 查看命令是file、alias还是builtin
 
内置命令 (shell内置)。
 
外置命令:在文件系统的某个目录下,有个与命令名称相同的文件。
 
区别:      shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多。
 
-t              仅列出命令执行时的依据
 
-a             列出当前命令可以如何执行
 
那命令怎么知道是那个路径下的命令呢?系统为了让用户在命令行快速方便地执行命令,用一种机制来实现,这种机制就叫做环境变量。
 
变量是什么? 变量是命名的内存空间。
 
shell的变量功能:
 
变量简单说就是让某一个特定字符串代表不固定的内容。
 
设置变量(变量名的规则:用“=”连接;等号两边不能有空格符;只能使用数字和字母,且不能用数字开头;):
 
myname=redhat(变量声明的过程就是申请内存使用的过程)
 
环境变量
 
定义当前用户工作环境属性的变量
 
PATH
 
取消变量:unset 变量名称
 
/bin/bash优点:
 
命令与文件补全功能
 
命令别名设置功能
 
命令记忆功能
 
通配符等等
 
history  命令历史
 
命令历史文件为~/.bash_history
 
n            列出目前最近的n条信息
 
-c          清除命令历史
 
!!      执行上一个命令
 
!         number 执行命令历史中第几条命令
 
 
 
shell中的通配符:bash中常用的通配符有”*“,”?“,”[]“
 
*           表示匹配任意零个或多个字符
 
?         表示匹配任意单一字符
 
[]          匹配任何包含在方括号内的单字符
 
 
 
shell中的引用:在bash中有很多特殊字符,这些特殊字符就具有特殊含义。引用就是通知shell将这些特殊字符当作普通字符来处理。
 
转义字符“\”:如果将\放到特殊字符前面,shell就忽略这些特殊字符的原有含义,把它们当作普通字符对待。
 
mkdir  1*
 
ls -ld 1*
 
ll -d  1\*
 
单引号: 如果将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义被忽略。
 
ll -d  1'*'
 
双引号: 双引号的引用与单引号基本相同,包含在双引号内的大部分特殊字符可以当作普通字符处理,但是仍然有一些特殊字符保留自己的特殊含义,比如”$“和“\”以及“ ` ”
 
ll -d 1"*"
 
myname=redhat
 
echo “$myname”
 
echo   “\$$myname”
 
echo    "`date` "
 
文本编辑vim:
 
命令模式:按esc键可回到命令模式
 
dd                 删除当前行      数字+dd删除的行数
 
dw                按单词删除
 
u                  撤销当前操作
 
ctrl+r            重做
 
yy                复制光标所在行
 
2 yy             复制光标所在行和光标下一行
 
p                 粘贴到光标下一行
 
cc               剪切
 
行数cc        剪切当前行开始的几行
 
x                 删除光标所在位置的内容
 
w,b           按单词进行移动光标
 
gg               跳转到文档首部行首
 
dgg             删除光标至文档首部
 
G                跳转到文档尾部行首
 
/字符串1      查找字符串1
 
$                 行尾
 
^                 行首
 
h                 往左按字符移动光标
 
j                  往下(后)按行移动光标
 
k                 往上(前)按行移动光标
 
l                  往右按字符移动光标
 
H                跳转到当前屏幕输出的最上面一行
 
L                跳转到当前屏幕输出的最下面一行
 
M              跳转到当前屏幕输出的中间那一行
 
 
 
插入模式:
 
i                在光标前插入
 
I                在光标所在行行首插入
 
a               在光标后插入
 
A               在光标所在行末尾插入
 
s               删除光标所在位置字符并插入
 
S              删除光标所在行并插入
 
o              在光标所在行下一行插入
 
O             在光标所在行上一行插入
 
 
 
末行模式:
 
:wq                               保存退出
 
:q                                  退出(未修改文件内容才可以退出)
 
:wq!                            强制保存退出
 
:q!                                 强制退出,不保存
 
:set nu                           显示行号
 
:set nonu                        不显示行号
 
:行号                           跳转到指定行号
 
:3,5 d                             删除3-5行
 
:r 文件名1                       读出文件1的内容到当前文件里
 
:%s/字符串2/字符串3         字符串3替换字符串2
 
:%s/1/2/g                        将1替换为2,全局修改
 
:w 文件名1                      另存为文件名1
 
文本查看命令:
 
连接并显示文件内容到标准输出:            cat
 
显示文件内容并显示行号:                      cat -n 文件名
 
黑洞机制                                               (shell脚本里面经常用)
 
将文件内容重定向到/dev/null:                    cat 文件 >/dev/null
 
不带任何选项时,从标准输入接收输出到标准输出
 
逆序显示文件:                                         tac
 
从头开始逐行查看:                                   more /var/log/messages
 
在没有翻到最后一屏时支持向前翻
 
前后查看文件内容:                                   less /var/log/messages
 
man手册查看命令用法默认用less打开
 
默认查看文件前10行:                               head /etc/passwd
 
指定查看前5行:                                        head -5 /etc/passwd
 
默认查看后10行:                                      tail /etc/passwd
 
查看后5行:                                               tail  -5 /etc/passwd
 
 
 
文本处理:
 
文本切割显示:
 
cut -d                    指定分隔符 -f 指定第几列 被切割文件
 
-f 1,3                    第一列和第三列
 
-f 1-3                    第一列到第三列
 
-c 1-4                   指定第一到第四个字符
 
指定分隔符的时候空格需要用单引号或双引号引起来
 
cut -d : -f 1-3 --output-delimiter=@ /etc/passwd
 
文本排序显示:
 
排序显示(默认根据字符在ASCII码中的升序排序):sort 文件名
 
按照数值大小排序:sort -n 文件名
 
排序并去掉重复的:sort -u 文件名
 
逆序排序:sort -r 文件名
 
按照用户uid数字大小排序显示:
 
sort -t                指定分隔符 -k 指定第几列 -n /etc/passwd
 
 -f                     排序时忽略字符大小写
 
去掉重复的行,重复的行必须相邻:uniq 文件名
 
-d                    只显示重复的行
 
-D                  显示所有重复的行
 
-c                  显示重复行重复的次数
 
 
 
文本统计:wc——word count
 
显示文件行数、单词数、字节数和文件名:wc 文件名
 
###在UTF-8编码格式里面,显示时一个字符占一个字节,一个中文字占用3个字节
 
只显示单词数:wc -w 文件名
 
只显示字节数:wc -c 文件名
 
只显示行数:wc -l 文件名
 
只显示字符数:wc -m 文件名
 
显示最长的一行的字符数:wc -L 文件名
 
 
 
统计当前目录下的文件数:
 
ls -l | wc -l
 
ls | wc -l
 
 
 
文本过滤:grep可以根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容
 
查找文件里的字符和字符串:
 
查找文件里有字符h的字符串:                 grep h 文件名
 
匹配整个单词:                                       grep -w 单词 文件名
 
匹配以q开始的行:                                  grep ^[q] 文件名
 
匹配以q和a开始的行:                             grep ^[qa] 文件名
 
匹配以q结束的行:                                  grep q$ 文件名
 
匹配以q和a结束的行:                             grep [qa]$ 文件名
 
匹配以数字开头的行:                              grep ^[0-9] 文件名
 
匹配以q或者f开头的行:                           grep ^[qf] 文件名
 
匹配以#号开头的行:                               grep "^#"
 
过滤空白行:                                           grep "^$"
 
如果要明确搜索子目录:                           grep -r h ./* (有h的文件)
 
忽略子目录:                                            grep -d skip h ./*
 
 搜索时忽略大小写:                                 grep  -i
 
搜索时显示没有匹配到的行:                     grep    -v  
 
搜索时显示匹配到的那一行以及下2行:      grep -A  2  
 
搜索时显示匹配到的那一行以及上2行:      grep  -B  2
 
 搜索时显示匹配到的那一行以及上下2行:  grep  -C   2
 
 
 
 
 
管道符:|   管道符左边命令的输出作为管道符右边命令的输入。
 
tee命令:在输出到文件的同时输出到屏幕,既想把输出保存到文件中,又想在屏幕上看到输出内容。
 
 
 
文件搜索:
 
查找文件路径:
 
find 路径 -name 文件名:find / -name passwd




 
 
(责任编辑:IT)