linux基础命令

2020-02-23  本文已影响0人  简公孙策

登录

linux系统,一切皆文件。

shell快捷键

ctrl + c : 取消当前操作
ctrl + a : 移动光标至行首
ctrl + e : 移动光标至行尾
ctrl + l  : 清屏操作,相当于clear
ctrl + h : 往前删除一个字符
ctrl + w : 往前删除一个单词
ctrl + u : 删除至行首
ctrl + d : 退出当前用户登录,相当于logout

系统目录

系统安装好后自动创建的一些有专门作用的目录
bin:(binary)用户命令,(普通用户就)可以执行的一些二进制文件;
sbin:(super binary),管理命令,需要超级用户权限才能运行的二进制文件;
usr:(universal shared read-only)核心功能程序,以及用户自己安装的软件默认都会安装与此。类似于windows下的program files;
dev:(device),该目录中主要存放的是一些外接设备,比如优盘、其他光盘等,在其中的设备是不能直接被使用的,需要挂载到某个文件下(类似windows下的分配盘符);
home:家目录,除了root用户以外的其他用户的家目录,是用户的相对独立的操作空间(类似windows下的user/用户目录);
proc:(progress),进程目录,在进程运行的过程中,产生代表这些进程的文件,伪文件系统,映射系统内核。
sys:伪文件系统,跟硬件设备相关的属性映射文件(常用来对设备调优等);
root:root用户的家目录;
tmp:系统和软件在运行中产生的临时文件;
var:存放系统或者程序的经常修改的文件,比如日志文件等,另外如mysql安装好后会该目录下创建一个目录---/var/lib/mysql,用来存放mysql数据库;所以这里东西一般是服务运行过程中自己产生的数据,一般不要手动修改。
mnt:设备挂载目录,额外的临时文件系统,比如额外新增的硬盘等。
media:设备挂载目录,长用于挂载移动设备,比如光驱、优盘等。

image.png image.png

文件--增删改查

注:cp、mv命令源可以是多个,但是目标只能是最后一个,即可以同时复制(剪切)多个文件到一个位置,所以复制(或剪切)多个文件(或目录)时最后一个参数一定要是一个存在的目录,而不能是文件。
mv默认可以递归,所以没有-r选项,这一点同cp命令不一样。

文本文件编辑查看

编辑



参考文章
h或退格: 左移一个字符;
l或空格: 右移一个字符;
j: 下移一行;
k: 上移一行;
gj: 移动到一段内的下一行;
gk: 移动到一段内的上一行;
+或Enter: 把光标移至下一行第一个非空白字符。
-: 把光标移至上一行第一个非空白字符。
w: 前移一个单词,光标停在下一个单词开头;
W: 移动下一个单词开头,但忽略一些标点;
e: 前移一个单词,光标停在下一个单词末尾;
E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点;
b: 后移一个单词,光标停在上一个单词开头;
B: 移动到上一个单词开头,忽略一些标点;
ge: 后移一个单词,光标停在上一个单词末尾;
gE: 同 ge ,不过‘单词’包含单词相邻的标点。
(: 前移1句。
): 后移1句。
{: 前移1段。
}: 后移1段。
fc: 把光标移到同一行的下一个c字符处
Fc: 把光标移到同一行的上一个c字符处
tc: 把光标移到同一行的下一个c字符前
Tc: 把光标移到同一行的上一个c字符后
;: 配合f & t使用,重复一次
,: 配合f & t使用,反向重复一次
上面的操作都可以配合n使用,比如在正常模式(下面会讲到)下输入3h, 则光标向左移动3个字符。

注:这里的光标移动和下面的编辑命令可配合使用,比如:
dgg:表示从当前行删除(剪切)至首行;
dG: 表示从当前行删除(剪切)至尾行;
d2G:表示从当前行删除(剪切)至第2行(含当前行)
d2↑:表示从当前行向上删除(剪切)3行(含当前行);
y命令同理,其它以此类推;
注:c命令同d命令一样的作用,只不过c命令在操作完成后,会自动进入编辑模式
复制 ——
 yy 复制当前行
 #yy 复制当前行至下面#行内容
 yw 复制光标至词尾

 p 将缓冲区内容粘贴到光标后面或下一行;
 P 将缓冲区内容粘贴到光标前面或上一行;

删除(实际上是剪切)——
 dd删除当前行(下行上移)
 D删除至行尾(行不会被删除)
 #dd 删除当前行至下面#行内容
 de 删除光标至词尾
 db 删除光标至词首

 [#]x 删除光标后面#个字符
 [#]X 删除光标前面#个字符
 [#]s 删除光标后面#个字符,并进入编辑模式
 [#]S 删除当前#行,并进入编辑模式

替换——
  r 替换当前字符
  R 连续替换,直至按下esc键取消

撤销操作——
  [#]u 撤销上(#)次操作
  ctrl + r:恢复撤销

重复操作——
  . 重复上次操作

可视化模式(visual模式)——
  v:进入字符可视化模式---移动光标可以选择代码区域(以字符为单位),然后对区域复制(y)或删除(d)等
  V:进入行可视化模式---移动光标可以选择代码区域(以行为单位),然后对区域复制(y)或删除(d)等
  ctrl + v:进入块状可视化模式---移动光标可以选择块状代码区域,然后对区域复制(y)或删除(d)等

快速保存并退出文件编辑——
命令行模式下
  shift + zz(即ZZ),保存退出
  shift + zq(即ZQ),不保存退出
编辑模式
  常用快捷键:
  alt + s:向前删除一个字符
  ctrl + h:向前删除一个字符
  ctrl + w :向前删除一个单词
  ctrl + u :向前删除至行首
  ctrl + j :回车
  ctrl + m :回车
  ctrl + e :复制下一行同位置的字符

  alt + u:撤销并退出到命令行模式
  ctrl + c :功能类似esc,退出到命令行模式(alt + e、w...等很多键都能起到类似效果)

尾行模式


cat -n 目录名/文件名 : 查看文本文件内容,-n 显示行号;-b 显示行号(空白行不显示行号),-E显示行尾的换行符;
注:cat 后面如果没有跟文件的话,则是等待用户输入文本内容。单行输入也可以(backspace需要按ctrl键;通过ctrl + d 结束输入)。批量输入也可以,批量输入需要借助 << ,<< 称为此处文档,通常后面要跟一个开始结束标记(相同的标记),比如EOF(非固定,可以自定义,只要开始结束标记一致就可以了),在标记中间是文档内容。比如:

image.png 参考文档(注:命令也可以写成:cat <<EOF >>a.txt)
cat > 文件名:新创建一个文件,并将接下来的写的文本内容输入进该文件;cat >> 文件名表示将接下来写的的文本内容追加到该文件。(结束输入使用ctrl + d) image.png

nl 文本文件:同cat类似都是输出文本文件内容,并且会自动在非空行前面加上行号;

tac 目录名/文件名:同cat功能一致,只是从尾巴处开始倒过来显示;

rev #反向(从右往左)文件中的内容

more 目录名/文件名 : 分页显示文本文件内容,(f键,向前翻页;b键,向后翻页; 空格键,向后翻页; enter键,显示下行),翻到最后一行,自行退出;

less 目录名/文件名: 查看文件内容,但是操作用法同man类似(man实际上就是用less命令打开的手册文档),空格键向下翻页,b键向上翻页,回车键向下一行,k键向上一行,而且即便翻到最后也不会自动退出,在任意地方按q键都能退出;所以less比more更易用常用。

head -n 文件名: 查看文本文件头部内容前n行,不加-n选项是默认前10行

tail -n 文件名:查看文本文件底部n行,不加-n选项默认后10行。-f(follow, 表示追踪新增刷新,比如像日志文件新增内容)
wc 文件名:统计文件内容信息,-l表示lines行数,-w表示words单词数,-c表示bytes字节数。不加选项的话,这三项都输出。(注:常结合管道 | 对查询结果进行统计,比如ls -l | wc -l)


tail.JPG

cut 文件名:字符分割命令,以行为单位,-d 指定分割字符(默认是空格),-f显示分隔后的列号(可以跟多列);注:-d,-f一般同时使用,-d 是指定分割字符,另外-b是按字节分割,-c是按字符分割;在使用cut命令时,分割方式,-b,-c,-d必须指定其一。参考文档

sort 文件名:字符排序命令,以行为单位,-n以数值大小排序(默认按照字符编码排序),-f忽略大小写差别,-r倒序排序,-t指定分割字符(要和-k结合用,-k指定按照分割后的第几列进行排序),-u重复行只显示一行。参考文档

uniq 文件名:显示文本,相邻重复行只显示一行;-c显示文本,相邻重复行只显示一次,并在行首显示重复次数;-d只显示相邻重复行(也是只显示为一行);-D只显示相邻重复行(显示多行);

tr 字符替换:(translate),从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出;单个字符的替换,比如tr 'ab' 'AB' 标准输入,会将输入中的字符串中的a和b分别替换为A和B;-d 要删除的字符,用来删除字符;

tee 文件:一个标准输入,两个标准输出(可以同时输出到shell和文件,可以跟多个文件;如果不想输入shell ,可以重定向到黑洞文件> /dev/null,当然也可以管道流到下一个处理对象);-a表示追加到文件;
  比如,ls | tee a.txt b.txt > /dev/null;

文本内容再次处理
程序:指令 + 数据;
   读入数据:input;
   输出数据:output;
   打开的文件都有一个fd:file descriptor(文件描述符)
   linux给程序提供三种I/O设备:
   标准输入(stdin)- 0:默认接受来自键盘的输入;
   标准输出(stdout)- 1:默认输出到终端窗口;
   标准错误(stderr)- 2:默认输出到终端窗口;
  I/O重定向:改变默认输入输出位置;

">和>>": 输出重定向,后面跟个文件,将标准输出重定向至该文件中,比如 “echo '打印这些内容,并写入文件中' > echoin.txt” 会将内容写入echoin.txt文件中(如果不存在表示创建),> 会覆盖文件中原有内容, >>表示在原文件中新起一行追加。(tee命令可以把数据流同时重定向到文件和屏幕,-a表示追加)
注:>和>>只能重定向标准输出,不能重定向错误输出;2>和2>>可以重定向错误输出,所以二者结合才可以根据实际情况定向输出,比如:ls /home > data.txt 2> err.log,如果没有错误,则是标准输出到data.txt文件,如果发生错误就错误输出到err.log;另外还有一个&>和&>>,不管是标准输出还是错误输出,都重定向输出到文件。
   set - c:禁止重定向>覆盖功能;(该模式下要覆盖需用 >| 进行重定向的覆盖,否则提示错误)
   set - c:启用重定向>覆盖功能;

“<”:输入重定向,后面跟个文件,将文件内容作为标准输出的入口;
   如:tr 'ab' 'AB' < a.txt;将a.txt文件中的内容输出出来,然后将其中的a和b用A和B替换,显示在终端上。

grep: 通过正则表达式,对文本进行过滤,过滤出符合条件的行。用法“ grep 文本文件 规则”,比如 “grep 张 a.txt”,表示过滤出a.txt文件中含有‘张’的行。-n 表示显示行号,-v表示取反(过滤出不符合规则的行),-i表示忽略大小写。

| : 管道,前面命令的执行结果会作为后面命令的执行对象,常和grep联合使用,如‘ls -l | grep right’,表示显示列表中的right那一行;又如“rpm -qa | grep rz”,用来查看是否安装了rz程序,这个用法常用来查看是否安装了某个软件程序。

"echo": 命令行打印文本内容,如echo“ 这些内容会被打印出来”,会显示“这些内容会被打印出来”,一般结合重定向使用。

  [zhang@zhang ~]$ bc
  bc 1.06.95
  Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software     Foundation, Inc.
  This is free software with ABSOLUTELY NO WARRANTY.
  For details type `warranty'.
  scale=2
  5/3
  1.66
  quit
  [zhang@zhang ~]$ echo "scale=2;5/3" | bc
  1.66
  [zhang@zhang ~]$ bc <<< "scale=2;5/3"
  1.66

模板命令,符号 ``(同$(代码内容),功能一样)

可以嵌套在其他命令中,将执行结果作为其他命令的参数使用;
比如删除目录下的文件,不删除目录:rm -rf `find \home\zhang\ -type -f`;
比如删除除了01.js、01.py之外的其它文件: rm -rf `ls | egrep -v '(01.js | 01.py)'`

文件权限

查看
ls -lha 文件或文件夹:查看目录或文件,-l列表形式显示;-a显示所有文件(包含隐藏文件);-h以高可读性显示文件大小;-d查看当前目录。
此命令并可以看出用户或组(相当于角色),对该文件所拥有的权限。

image.png
以“drwxrwx---. 2 zhang zhang 4096 2月 22 14:53 test” 为例:
1、 “drwxrwx---”,第一个字母d 表示该文件是一个文件夹(d代表文件夹,-代表文件,l代表链接),后面9个字符分别分三组,每3个一组,第一组表示该文件的所有者对该文件所具有的权限;第二组表示文件所属组(角色)对该文件所具有的权限;第三组表示其它用户对该文件所具有的权限。(r可读权限,w可写权限,x可执行权限;对于文件目录而言,可读表示可以查看其内的文件列表,可写表示可以增删其内的文件,可执行表示可以对其使用命令,所以可执行权限是其他两项权限的前提)
2、“2”,表示该文件的硬链接数,即通过其它文件目录访问到该文件的路径数。
3、“zhang zhang”, 前一个‘zhang’表示该文件的所有者,后一个‘zhang’表示该文件所属组
4、‘4096’表示该文件(夹)大小(字节)
5、‘2月 22 14:53’表示该文件(夹)最后一次编辑时间
6、‘test’文件(夹)名(含路径)

修改权限
chmod : 两种模式,数字或字母。(给文件夹设置权限时,-R表示递归给其内的所有文件夹和文件设置相同权限)

  数字:4 + 2 + 1 --- 可读r + 可写w + 可执行x
  比如 chmod 764 test/,表示给test文件夹设置,所有者rwx权限,组rw-权限,其他用户r--权限;

  字母 : r可读,w可写,x可执行; +增加权限,-减少权限,=设置权限; u给用户权限,g给组权限,a给所有用户、组权限,o给其他用户权限。
  比如: chmod u-xr right 表示在原权限基础上,将所有者对该文件(right)的xr权限去掉; chmod g=rw right ,表示将所属组对该文件(right)的权限设置为rw-;chmod o+rx right ,表示对其它用户新增对该文件(right)的rx权限。当然用a的时候表示对文件的所有者所属组其它用户,同时设置权限,而且a可以省略。
注:同时分别给u、g、o设置不同权限时,可用‘,’连接。

chmod --reference=某文件 文件,表示将目标文件的权限修改为跟该参考文件一样;

修改文件所有者和所属组
chown 用户名 目录名或文件名 -R :只有管理员有此操作的权限,修改文件所有者为指定用户,-R表示同时递归修改目录和其内的文件所有者。(chown 用户名:组名 文件名 或者 chown 用户名.组名 文件名,可以同时修改文件的所有者和所属组,注:chown :组名 文件名,表示只修改文件的属组);--reference=某文件,表示将目标文件的属主和属组修改为跟该参考文件一样;
chgrp 组名 目录名或文件名 -R :只有管理员有此操作的权限,修改文件所属组为指定组,-R表示同时递归修改目录和其内的文件所属组。

高级权限

注:另外百度一下反掩码umask;

文件软链接和硬链接
ln -s 目录/文件名 链接文件名: 创建链接文件,-s表示创建软链接,不加-s表示创建硬链接。
软链接就类似window系统的文件链接,硬链接就像一个人有两个身份证。

image.png

用户和组


  由于某些操作比较重要,所以需要管理员用户来操作,或者普通用户通过sudo来临时行使管理员权限。可以通过sudo行使权限的用户,必须是加入了sudo组的用户。命令:
sudo 命令 ;
sudo -l :查看当前用户可以借助sudo行使哪些管理员权限;

   比如 通过root管理员账户,“usermod -G sudo zhang” ,给用户zhang设置附加组sudo,则会将zhang加入sudo组内,用户zhang可以通过sudo临时行使管理员权限(ubuntu系统默认是有sudo组的,centOS系统没有该组,需要通过visudo命令修改etc/sudoers文件的方式,来将用户加入sudo)。

   newgrp 组名:该用户临时登入指定组,并临时指定该组为其主组(需要新组的密码),退出登录后即失效。

   usermod -s /bin/bash 用户名: 设置用户使用的终端软件(默认是dash)(echo $shell:可以查到当前用户使用的shell)

   groups [用户名]:查看用户加入的所有组,不加用户名的话,是查看当前用户的所有组。
   id [用户名] : 查看用户的详细信息,包括用户id、所属组、组组等,不加用户名的话,则是查看当前用户的。-u代表uid,-g代表gid,-G代表附加组id,-un代表用户名。
   finger 用户名:查看用户的账户信息;(新版可能废除了该命令)
   gpasswd 组名:给组设置密码;-r 删除组密码; -d 用户名 组名 : 将用户从组中删除;-a 用户名 组名,表示将用户添加进组;

用户、权限、文件的关系

我们通过执行二进制文件来开启一个进程,进程都是有一个发起用户的;一个二进制文件本身也是有权限的,所以它并不是任何用户都可以执行的。所以一个用户执行可执行文件时,能否执行取决于该用户是否对该文件有执行权限,但是假如拥有执行权限,而且权限已经执行起来后,如果该进程需要操作另外一个文件,那么该文件是否允许该进程操作则也取决于该用户是否对该文件有相应的操作权限。

文件位置

which 命令名称: 在PATH变量指定的路径中查询可执行文件所在的位置(通常在/bin、/sbin、/sur/bin、/sur/sbin下)

whereis :主要用于定位可执行文件、源代码文件、帮助文件在文件系统中的位置。-b 定位可执行文件,-B 指定搜索可执行文件的路径;-m 定位帮助文件,-M 指定搜索帮助文件的路径;-s 定位源代码文件, -S 指定搜索源代码文件路径

locate 检索文件名称:同whereis类似,且它们使用的是相同的数据库,但whereis只能查找可执行文件、源代码文件、帮助文件等;想要获取更全面结果,使用locate,检索对象可用通配符匹配。-q 安静输入,不显示错误信息;-n 显示n行信息;-r 使用正则匹配;-v 显示版本信息;(功能类似find,但是没有find强大,所以一般使用find命令)

日期时间、磁盘大小、进程管理

date : 查看当前系统时间;“+%Y-%m-%d”和“+%F”等价;“+%F-%m-%d %H:%M:%S”和“+%F %T”等价,用来设置日期的显示格式。-s 时间 ,选项用来设置时间。

cal : (calendar)日历,查看当月日历,-y查看一整年日历

df : (disk free)查看磁盘使用和剩余情况,-h以高可读性显示大小;
du [目录或文件名]:(disk usage)查看目录或文件占用空间大小,不跟目录或文件名,则为查看当前目录占用空间大小,-h以高可读性显示大小,-s(sumarry)汇总显示文件夹整体大小。

ps aux 或ps auxf:(progress state)查看进程情况,不跟选项的话,表示查看当前用户通过终端开启的程序进程,选项a表示查看所有用户通过终端开启的进程,选项u显示详细信息,选项x查看所有进程(比较多,不止包括通过终端开启的),注意:ps命令的这几个选项不加‘-’。-e和a差不多,都是显示全部进程,-f显示全部列。


image.png

top : 动态显示进程情况,按占用资源大小排列


image.png

在显示过程中,按键:
M:按内存占用大小降序排列进程;
P:按cpu占用大小降序排列进程;
q:退出top显示

打包、压缩

注:还有一个压缩软件bzip2,用法以及配合tar命令的用法,都和gzip一样,只不过压缩文件名的后缀bz2,是将-zcvf换成了-jcvf,-k表示压缩的是保留原文件;压缩软件xz,文件后缀名是.xz,配合tar的命令是-Jcvf。

zcat 压缩的文本文件:可以查看gzip压缩后的文本文件。
bzcat 压缩的文本文件:可以查看bzip2压缩后的文本文件。
xzcat 压缩的文本文件:可以查看xz压缩后的文本文件。

image.png image.png
下载

wget 网址:从网络下载文件,- O 同时重命名下载文件

上一篇下一篇

猜你喜欢

热点阅读