什么是Shell?一些常见的linux命令

第一部分 Linux命令行

1. 基本的bash shell命令

1.1 启动shell

/etc/passwd文件包含所有系统用户列表及基本配置信息:rich:x:501:501:Rich Blum:/home/rich:/bin/bash

- 用户名- 用户密码(占位符)- 用户的系统UID(用户ID)- 用户的系统GID(组ID)- 用户的全名- 用户的默认主目录- 用户的默认shell程序

1.2 shell提示符

$:bash shell的默认提示符

echo $PS1:显示当前默认提示符设置(PS1:控制默认命令行提示符的格式)

$ PS1="[\t][\u]\$":创建新的提示符,只需给PS1变量赋一个新的字符串

1.3 bash手册

man bash:man手册页面

1.4 浏览文件系统

常见Linux目录名称

/:根目录/bin:GNU用户工具/boot:启动目录/dev:设备目录/etc:系统配置文件目录/home:主目录,创建用户目录/lib:库目录,存放系统和应用程序的库文件/media:媒体目录/mnt:挂载目录/opt:可选目录,存放可选软件包/root:根主目录/sbin:GNU管理员级工具/tmp:临时目录/usr:用户安装软件目录/var:可变目录,存放经常变化的目录

遍历目录

cd:切换目录

绝对文件目录:从根目录开始

相对文件目录:.:表示当前目录;..:表示当前目录的父目录

1.5 文件和目录列表

1.5.1基本列表功能

ls:显示当前目录下的文件和目录

-F:区分文件和目录-a:显示隐藏文件和目录-R:列出当前目录下包含的目录中的文件

1.5.2修改输出信息

ls -l:显示详细信息

- 文件类型- 文件的权限- 文件的硬链接总数- 文件属主的用户名- 文件属组的组名- 文件的大小- 文件的上次修改时间- 文件名或目录名

1.5.3 完整的参数列表

ls -sail: -a:列出所有文件 -i:列出索引节点

​       -l:产生一个长列表 -s:列出文件的块大小

1.5.4 过滤输出列表

ls -l 文件名:文件名中,?代表一个字符,*代表零个或者多个字符

1.6 处理文件

1.6.1 创建文件

touch 文件名:创建空文件,也可以更改文件的访问和修改时间

-a:只修改访问时间-m:只修改修改时间-t:指定特定的时间

1.6.2 复制文件

cp 源文件目录 目标文件目录:复制文件

cp -R:递归复制整个文件目录

1.6.3 链接文件

cp -l:创建硬链接,其中包含了源文件的信息及位置。

cp -s:创建软连接,一个符号链接。

1.6.4重命名文件

mv 文件名 新文件名:mv命令是用来移动文件的(moving),也可以用于重命名。

1.6.5 删除文件

rm:删除文件也就是移除(removing),加-f强制删除。

1.7 处理目录

1.7.1创建目录

mkdir:创建目录

1.7.2删除目录

rmdir:删除空目录,可以--ignore-fail-on-non-empty删除非空目录

rm -rf:强制递归删除目录

1.8 查看文件内容

1.8.1 查看文件统计信息

status:显示某个文件的所有状态信息

1.8.2 查看文件类型

file:查看文件类型

文本文件可执行文件数据文件

1.8.3 查看整个文件

1.   `cat`:查看整个文件。`-n`添加行号,`-s`压缩空白行

more:显示文件的内容,但会在显示每页数据之后停下来

less:显示文件内容,功能上更高级

1.8.4 查看部分文件

tail:显示文件末尾部分内容

head:显示文件开头部分内容

2. 更多的bash shell命令

2.1 检测程序

2.1.1 探查进程

ps:显示运行在当前控制台的当前用户的进程

-ef:查看系统上运行的所有进程-H:把输出的进程组织成层级形式,即树状--forest:显示层级结构信息

1.Unix风格参数2.BSD风格参数3.GNU全字参数

2.1.2 实时监测进程

top:实时显示进程信息

2.1.3 结束进程

kill PID:结束进程号的进程

killall 进程名:结束相关进程

2.2 检测磁盘空间

2.2.1 挂载存储媒体

mount:显示当前系统挂载的设备列表

umount:卸载挂载的设备

2.2.2 使用df命令

df:挂载已挂载磁盘的使用的情况

-h:以人类可读的形式显示

2.2.3 使用du命令

du:显示某个特定目录的磁盘使用情况

2.3 处理数据文件

2.3.1 排序数据

sort:将文件数据默认按照标准的字符排序。

-n:将数字按照数字排序

-M:按月排序

-k:

-t:

n:

2.3.2 搜索数据

grep pattern file:搜索数据

-v:反向搜索,搜出不匹配的项目

-n:显示匹配数据所在的行数

-c:只显示所在行数

2.3.3 压缩数据

bzip2工具(.bz2)

bzip2:压缩文件bunzip2:解压.bz2文件​bzcat:显示压缩的文本文件内容bziprecover:尝试修复损坏的压缩文件

gzip工具(.gz)

gzip:压缩文件gunzip:解压文件gzcat:查看压缩的文本文件内容

zip工具(.zip)

zip:压缩文件unzip:解压文件​zipcloak:创建一个加密压缩文件,包含指定的文件和目录zipnote:从zip文件中提取批注

2.3.4 归档数据

tar:归档打包数据,常见加上-zxvf

tar命令选项:

-A:将一个已有的tar归档文件追加到另一个tar文件-c:创建一个新的tar归档文件-d:检查归档文件和文件系统的不同之处,或者是从已有的etar归档文件中删除-r:追加文件到已有的tar文件末尾-t:列出已有tar归档文件的内容-u:将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中-x:从已有的tar归档文件中提取文件​-C dir:切换到指定目录-f file:输出结果到文件或设备-j:将输出重定向给bzip2命令来压缩内容-p:保留所有文件权限-v:在处理文件时显示文件-z:将输出重定向给gzip命令来压缩内容

3. 使用Linux环境变量

3.1 什么是环境变量

​ bash shell用环境变量的特性来存储有关shell会话和工作环境的信息。环境变量分为全局变量和局部变量。

​ 全局变量不仅对shell会话可见,对所有shell创建的子进程也可见。

​ 局部变量只对创建他们的shell可见。

printenv:查看全局变量

echo $全局变量名:显示单个变量值

set:显示某个特定进程设置的所有环境变量,包括全局变量。没有单独命令能显示局部变量。

3.2 设置环境变量

设置局部变量

​ 启动bash shell 即可为局部变量赋值。如:test=testing。但是在子shell和父shell中都不能使用。

设置全局变量:

​ 创建全局变量的方法是先创建一个局部变量,再导出到全局环境中,通过export完成。

$test = testing$export test$bash$echo $testtesting

3.3删除环境变量

unset 环境变量名:删除环境变量,注意不要用$。

如果在子进程中删除了全局环境变量,那么只对当前子进程有效。

3.4 默认shell环境变量

​ 不是所有的默认环境变量都会在运行set命令时列出。尽管是默认环境变量,但并不代表它们所有必须有一个值。

3.5 设置PATH环境变量

​ PATH环境变量是Linux系统上造成最多问题的变量。它定义了命令行输入命令的搜索路径。如果找不到,则会产生一个错误。

3.6 定位系统环境变量

3.6.1登陆shell

登陆shell会从以下4个不同启动文件读取命令。

/etc/profile//bash shell的主启动目录$HOME/.bash_profile$HOME/.bash_login$HOME/.profile

剩下三个$HOME启动文件都有同一个作用:提供一个用户专属的启动文件来定义用户专有环境变量。大多数发行版只有三个文件中的一个。

3.6.2交互式shell

如果bash shell不是登陆系统时启动,shell被称为交互式shell。交互式shell不会访问/etc/profile文件,而是只用寻找用户HOME目录的.bashrc是否存在。.bashrc文件有两个作用:查看/etc目录下共用bashrc文件,二是为用户提供一个定制自己的命令别名和私有脚本函数的地方。

3.7 可变数组

环境变量可以作为数组来使用:$ mytest=(one two three four)

$echo $mytest[2]

$echo $mytest[*]

3.8 使用命令别名

alias 别名='命令':设置别名

-p:显示已有别名列表

4. 理解Linux文件权限

4.1 Linux的安全性

4.1.1  /etc/passwd文件:包含与用户有关的信息

4.1.2  /etc/shadow文件:能对linux系统如何管理密码有更多的控制,只有root用户可以访问

4.1.3  添加新用户:

useradd:使用系统默认值及命令行参数来添加新用户

-D:查看系统默认值

-m:创建用户home目录

-c comment:-d home_dir:-e expire_date:-f inactive_days:

4.1.4 删除用户:

userdel:删除etc/passwd的用户信息,不会删除系统中的用户文件。

-r:同时删除用户的HOME目录及mail目录。

4.1.5 修改用户:

usermod:修改用户账户字段,并可以指定主要组以及附加组的所属关系。

-l:修改用户账户的登陆名

-L:锁定用户,无法登陆

-p:修改用户账户密码

-U:解除账户锁定

passwd:修改已有用户密码

chpasswd:从文件中读取登录名密码对,并更新密码

chsh  chfn  chage:用来修改特定的账户信息

4.2 使用Linux组

​ 组权限允许多个用户共享一组共用的权限来访问系统上的对象,比如文件,目录和设备。

​ 每个组都有唯一的GID。

/etc/group:包含系统上用到的每个组的信息。该文件有四个字段:组名;组密码;GID;用户列表。

​ 不能通过修改该文件来实现添加用户到组,而是要用usermod命令。

创建新组:groupadd命令用来创建新组。

修改组:groupmod命令可以修改已有组的GID(-g)或组名(-n)。

4.3 理解文件权限

文件权限符:如-rw-rw-r--。

​ 第一个字符代表文件的类型:

-代表文件d代表目录l代表链接c代表字符型设备

​ 之后有三种三字符的码,每一种三字符码代表三种访问权限:

r:代表对象是可读的w:代表对象是可写的x:代表对象是可执行的-:代表没有权限

​ 这三组字符码分别对应三个安全级别:文件属主;属组成员;其他用户

默认文件权限:

umask:用来设置用户创建文件和目录的默认权限

linux文件权限码

---:0--x:1-w-:2-wx:3r--:4r-x:5rw-:6rwx:7

4.4 改变安全性设置

改变权限:

chmod:改变文件和穆勒的安全性设置。chmod 760 file

改变所属关系:

chown:改变文件属主和属组。chown options owner[.group] file

chgrp:改变文件默认属组。chgrp group file

只有root用户能够改变文件的属主,任何属主都可以改变文件属组。

5. 管理文件系统

5.1 探索Linux文件系统

5.2 操作文件系统

创建分区:

fdisk:用来管理存储分区,是一个交互式程序。

p:显示存储设备详细信息n:创建新分区w:将更改保存到设备上

创建文件系统:

检查和修复:fsck命令用来检查和修复任意类型的linux文件系统。

5.3 逻辑卷管理器

使用Linux LVM

1.定义物理卷使用fdisk命令将物理分区转换成物理卷区段使用pvcreat命令来用分区创建真实的物理卷2.创建卷组vgcreate:创建卷组vgdisplay:查看新创建的卷组的细节3.创建逻辑卷lvcreate:创建逻辑卷lvdisplay:查看逻辑卷详细信息4.创建文件系统5.修改LVM

6. 安装软件程序

6.1包管理基础

6.2 基于Debian的系统

​ dpkg命令是基于Debian系PMS工具的核心。包含在PMS中的其它工具有:

apt-get

apt-cache

aptitude(最常用)

aptitude的使用:

管理软件包

aptitude:进入全屏模式,q键退出

aptitude show package_name:单个命令使用aptitude

dpkg -L package_name:显示某个特定软件包关联的所有文件列表

安装软件包

aptitude search package_name:搜索特定软件包,i:软件包已经安装;p:软件包未安装

aptitude install package_name:安装软件包

更新软件

aptitude safe-upgrade:更新系统上所有软件包

卸载软件

aptitude remove package_name:只删除软件包但不删除数据和配置文件

aptitude purge package_name:删除软件包和相关的数据和配置文件

aptitude库

库存储在/etc/apt/sources.list中。

6.3 基于Red Hat的系统

yum:在Red Hat和Fefora中使用(重点)urpm:在Mandriva中使用zypper:在openSUSE中使用

yum的使用

列出安装包

yum list installed:列出已安装的包,输出的信息可能一闪而过,最好重定向到一个文件中,如:yum list installed > installed_software。

yum list package_name:查看特定的软件包详细信息。

安装软件

yum install package_name:安装软件

更新软件

yum list updates:更新所有可用的软件

yum update package_name:更新特定软件

yum update:更新所有列在更新列表中的包

卸载软件

yum remove package_name:只删除软件包,保留配置文件和数据文件

yum erase package_name:删除软件包和它的所有文件

处理损坏的包依赖关系

yum clean all:清理放错文职的文件

yum deplist package_name:显示所有包的库依赖关系

yum软件库

yum repolist:查看正在从什么库中获取文件

6.4 从源码安装

解压tar包

tar -zxvf xxx.tar.gz

cd xxx

./configure:为系统配置systat

make:构建二进制文件

make install:安装软件

7. 使用编辑器

7.1 Vim编辑器

Vim编辑器

​ Vim有两种模式,普通模式和插入模式。Vim初始显示的是普通模式,按i后进入编辑模式,按Esc退回到普通模式。

h:左移一个字符j:下移一行k:上移一行l:右移一个字符​PageDown(或Ctrl+F):下翻一屏数据PageUp(或Ctrl+B):上翻一屏数据G:移到缓冲区最后一行num G:移到缓冲区的第num行gg:移到缓冲区的第一行

​ Vim在普通模式下有个命令行模式。按:进入命令行模式。

q:如果未修改缓冲区数据,退出q!:取消所有对缓冲区数据的修改并退出w filename:将文件保存到另一个文件名下wq:将缓冲区的数据保存到文件中并退出

编辑数据

​ 在插入模式下,可以向缓冲区插入数据。在普通模式下,vim也提供了一些命令来编辑缓冲区中的数据。

x:删除当前光标所在位置的字符dd:删除当前光标所在行dw:删除当前光标所在位置的单词d$:删除当前光标所在位置至行尾的内容J:删除当前光标所在行行尾的换行符u:撤销前一编辑命令a:在当前光标后追加数据A:在当前光标所在行行尾追加数据r char:用char替换当前光标所在位置的单个字符R text:用text覆盖当前光标所在位置的数据,知道按下Esc

复制和粘贴

​ 编辑数据时删除数据实际上是将数据保存到单独的寄存器中(也就是剪切),可以使用p命令来取回数据,也就是粘贴。

​ 复制相对复杂一点。复制的命令是y,可以与y使用与d命令相同的第二字符(yw,y$),然后用p粘贴光标所在的位置。复杂的是你不知道自己复制了什么。

​ 于是vim还有一种可视模式。移动光标到要复制的开始位置,按下v键进入可视模式,移动光标复制想要复制的文本,然后按下y键激活复制,p键粘贴。

查找和替换

查找:按下斜线(/),输入要查找的内容回车。

1. 如果要查找的文本出现在光标当前位置之后,则光标会跳到该文本出现的第一个位置。2. 如果要查找的文本未在光标当前位置之后出现,则光标会绕过文件末尾,显示在该文本出现的第一个位置。3. 输出错误信息,说明未找到文本。4. 要继续查找同一单词,按下`/`键,然后回车。或者使用`n`键,表示下一个(next)。

替换:进入替换模式,必须在命令行模式下输入::s/old/new/。

​ vim编辑器会跳到old第一次出现的地方并用new替换。可以对替换命令做一些修改来多处替换。

:s/old/new/g一行命令替换所有old:n,ms/old/new/g替换行号n和m之间的所有old:%s/old/new/g替换整个文件中的所有old:%s/old/new/gc替换整个文件中的所有old,但在每次出现时提示

7.2 Emacs编辑器

7.3 KDE系编辑器

7.4 GNOME编辑器

(因为我自从接触到linux以来一直使用的都是vim,所以对于其他的编辑器以后了解的时候再补充吧。如果想要查看相关内容,建议阅读原书!)

(完)


技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !

注册邀请码:99872160      注册链接:IT修真院

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容