Linux常用基本命令分类查询版(超实用不来看看嘛?)

Posted 十八岁讨厌编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用基本命令分类查询版(超实用不来看看嘛?)相关的知识,希望对你有一定的参考价值。

文章目录


Shell 可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。我们可以通过终端控制台来输入命令,由 shell 进行解释并最终交给内核执行。 本文就分类介绍常用的基本 shell 命令。

命令介绍

Linux命令:

  • 用于实现某一类功能的指令或程序
  • 命令的执行依赖于解释器程序(例如: /bin/bash)

Linux命令的分类:

  • 内部命令:属于Shell解释器的一部分
  • 外部命令:独立于Shell解释器之外的程序文件

Linux命令的通用命令格式

Linux命令的通用命令格式

命令字 [选项] [参数]

选项及参数的含义:

  • 选项:用于调节命令的具体功能。以 “-”引导短格式选项(单个字
    符),例如“-l”, 以“--”引导长格式选项(多个字符),例如“--color”多个短格式选项可以写在一起,只用一个“-”引导,例如“-al”

  • 参数:命令操作的对象,如文件、目录名等

命令的别名

别名的意义:

  1. 简化⽐较⻓的惯⽤命令;
  2. 限制导致严重后果命令的执⾏;
  3. ⽀持⽤户使⽤习惯。

我们可以使用alisa查看当前所有的命令别名:

别名的使用

  • 为命令添加别名:

    alias 别名=‘指令 选项’

  • 查看有哪些命令别名

    alias

  • 取消命令别名

    unalias 别名

多命令间的逻辑关系

某些情况下,需要一次执行多条命令,常见:

sync;sync;shutdown -h

根据命令间的逻辑关系有以下几种形式:

  • (1)cmd;cmd; 指令间不存在相关性
  • (2)cmd1 && cmd2 cmd1执行正确则执行cmd2,否则不执行cmd2
  • (3)cmd1 || cmd2 cmd1执行错误则执行cmd2,否则不执行cmd2

判断命令执行正确与否,依据变量$?的值,为0表示正确,否则表示不正确。

ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe

管道命令

什么是管道命令?
许多Linux命令具有过滤特性,即一条命令执行后产生的结果数据可通过标准输出端口送给后一条命令执行,作为该命令的输入数据,经过连续多次处理得到结果。
Shell提供管道命令“|”将这些命令前后衔接在一起,形成一个管道线。格式
为:命令1|命令2|……|命令n

例:ls /etc的输出内容很多,可以使用 ls /etc | more,分屏显示ls /etc
的结果。


管道命令的限制:

  • 管道命令仅处理标准输出,忽略标准错误输出
  • 管道命令必须能够接收来自另一个指令的数据作为其标准输入继续处理才可以

常用的管道命令:more、less、cut、sort、grep、,而ls、 cp、mv等不能接收前一个指令的数据,不是管道命令

常用管道命令(截取)

cut命令

语法:

cut [选项] [file 或 标准输入]

说明:用于将同一行的数据进行切分

参数:

  • -d :自定义分隔符,默认为制表符。
  • -f :与-d一起使用,指定显示哪个区域,逗号分隔
  • -c :以字符为单位进行分割, 5-10

grep命令

语法:

grep [选项] 查找模式 [文件名1或标准输入]

说明:grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。

选项:

  • -v:列出不匹配的行。
  • -c:对匹配的行计数。
  • -l:只显示包含匹配模式的文件名。
  • -h:抑制包含匹配模式的文件名的显示。
  • -n:每个匹配行只按照相对的行号显示。
  • -i:对匹配模式不区分大小写。

常用管道命令(排序)

sort命令

语法:

sort [选项] [文件或标准输入]

说明:Linux sort命令用于将文本文件内容加以排序。针对文本文件的内容,以行为单位来排序。

常用参数:

  • -b 忽略每行前面开始出的空格字符。
  • -f 排序时,将小写字母视为大写字母。
  • -M 将前面3个字母依照月份的缩写进行排序。
  • -n 依照数值的大小排序。
  • -u 意味着是唯一的(unique),输出的结果是去完重了的。
  • -o<输出文件> 将排序后的结果存入指定的文件。
  • -r 以相反的顺序来排序。
  • -t<分隔字符> 指定排序时所用的栏位分隔字符。

使用示例:

范例1:将/etc/passwd中的内容以:来分隔,并按照第3栏排序

cat /etc/passwd | sort –t ‘:’ –k 3

范例2:将/etc/passwd中的内容以:来分隔,并按照第3栏数字大小排序

cat /etc/passwd | sort –t ‘:’ –nk 3

uniq命令
语法:

uniq [-ic]

说明:uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort
命令结合使用。
参数:

  • -i:忽略大小写字符的不同;
  • -c:进行计数;

例:Last账号列出,取出账号栏,进行排序后进去出一位
last | cut –d ‘’ –f1 | sort | uniq

常用管道命令(双向重导向)

输出重定向”>”将输出重定向到文件,如果想要保存到文件的同时,输出执
行结果,可以用双向重导向。

tee命令

语法:

tee [-a] file

说明:tee指令可以前条指令的结果输出到标准输出设备,同时保存成文件。

参数:

  • -a:以累加的方式,将数据加入到file中

例: ls –l / | tee –a myfile | more

常用管道命令(字符串转换)

tr命令
语法:

tr [-ds] 字符串

说明:tr命令可以读取命令输出,经过字符串转译后,将结果输出到标准输出
设备。

选项:

  • -d:删除信息中的字符串
  • -s:取代重复的字符

例:

last | tr ‘[a-z]’‘[A-Z]’ # 替换last输出信息中的
cat /etc/psswd | tr –d ‘:’ # 删除输出内容中的“:”

col命令

语法:

col [-xb]

说明:col命令可以用来过滤控制字符,通常用来将【tab】转成空白。

选项:

  • -x:将tab键转换成对等的空格键

例:

cat –A /etc/man_db.conf # 显示所有特殊按键
cat /etc/man_db.conf | col –x | cat –A | more # 替换tab

常用管道命令(分区命令)

split

用法:

split [-bl] file PREFIX

说明:切分大文件

参数:

  • -b:后面可接欲区分成的文件大小,可加单位,如b,k,m等
  • -l:以行数来进行分区
  • PREFIX:代表前导符的意思,可作为分区文件的前导文字

例:

/etc/service文件分成300k一个
cd /tmp; split –b 300k /etc/services services
合并:cat services* >> serviceback
ls -al /etc | split -l 10 - etc #每10条记录一个文件

xargs

用法:

xargs [-0epn] command

说明:产生某个指令的参数,读入stdin的数据,以空格字符或断行字符将文
件分割成argument。

参数:

  • -0:将stdin的特殊字符还原成一般字符;
  • -e:end of file,后面可以接字符串,xargs分析到这个字符串时,会停止工作。
  • -p:在执行每个指令的argument时,都会询问使用者
  • -n:后面接次数,每次command指令执行时,需要使用几个参数的意思
1.每次执行id,传入一个参数
cut –d ‘:’ –f 1 /etc/passwd | head –n 3 | xargs–n 1 id
2.查到sync就指令结束
cut –d ‘:’-f 1 /etc/passwd | xargs –e‘sync’–n 1 id
3.找到后,列出详细信息,ls不支持管道,可以用xargs
find /usr/sbin –perm /700 | xargs ls –l

帮助命令

man:获得帮助信息

用于查看Linux系统的手册,是Linux中使用最为广泛的帮助形式。

基本语法

man [命令或配置文件] (功能描述:获得帮助信息)

例如我们查看一下ls 命令的帮助信息:

[root@hadoop101 ~]# man ls

显示说明

若一页显示不完,可以按空格键翻页,也可按上下键滚动。按Q键退出

help:获得 shell 内置命令的帮助信息

一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令被称为“外部命令”

Linux中的帮助命令分两种:

  • 一种是内建命令:是shell程序的一部分,写在bash的源码builtins里面的,通常在shell程序被加载驻留在系统内存中,解析内部命令不需要创建子进程,因此执行速度快于下面的外部命令,比如history、cd、exit。

  • 一种是外部命令:是Linux实用程序的一部分,功能比较强大,不随系统一起被加载到内存中,外部命令虽然不在shell中,但其命令的调用时由shell程序控制的,外部命令是在bash之后额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi 等。

我们可以实用type来区分是外部命令还是内建命令:

$ type exit
#显示 exit is a shell builtin
#得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的.def中
$ type vim
#显示 vim is /usr/bin/vim
#得到这样的结果说明是外部命令,正如上文所说,外部命令在/usr/bin or /usr/sbin等等中
$ type ls
#显示 ls is an alias for ls --color=tty
#若是得到alias的结果,说明该指令为命令别名所设定的名称;

基本语法

help 命令(功能描述:获得 shell 内置命令的帮助信息)

例如我们查看cd命令的帮助信息:

[root@hadoop101 ~]# help cd

help命令不带任何参数的话只用于显示内建命令的帮助信息,需要进入到bash中使用(上面有讲过内建命令都在bash源码中)

注意:因此help只能显示内建命令的相关帮助信息显示查询命令的简要说明以及一些参数的使用以及说明,如果加上–help的参数就可以查看外部命令的帮助信息了

$ bash
#进入bash
$ help ls
#不会显示帮助信息
$ ls --help 
#建议 ls --help|less 便于查看
#成功查询

常用快捷键

  • ctrl+c:停止进程
  • ctrl+l:清屏,等同于clear,彻底清屏式reset
  • tab:提示
  • 上下键:查找执行过的命令

文件目录类命令

pwd:显示当前工作目录的绝对路径

pwd:print working directory 打印工作目录

基本语法

pwd (功能描述:显示当前工作目录的绝对路径)

例如显示当前工作目录的绝对路径

[root@hadoop101 ~]# pwd
/root

ls:列出目录的内容

ls:list 列出目录内容

基本语法

ls [选项] [目录或是文件]

选项说明

例如我们现在查看当前目录的所有内容信息:

每行列出的信息依次是:

  • 文件类型与权限
  • 链接数
  • 文件属主
  • 文件属组
  • 文件大小(用byte来表示)
  • 建立或最近修改的时间
  • 名字

拓展:

  • -k 以k字节的形式表示文件的大小;
  • -t 以时间排序
  • -b 把文件名中不可输出的字符用反斜杠加字符编号的形式列出;
  • -d 将目录像文件一样显示,而不是显示其中所包含的文件;
  • -e 输出时间的全部信息﹐而不是输出简略信息
  • -m 横向输出文件名,并以“,”作分格符
  • -n 用数字的UID、GID代替名称在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文
  • -p或-F:“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“一”表示套接字
  • -r 对目录反向排序
  • -s 在每个文件名后输出该文件的大小
  • -u 以文件上次被访问的时间排序版-x按列输出,横向排序:,
  • -1 一行只输出一个文件
  • –color=no不显示彩色文件名

cd:切换目录

cd:Change Directory 切换路径

基本语法

cd [参数]

参数说明:

案例实操
(1)使用绝对路径切换到 root 目录

[root@hadoop101 ~]# cd /root/

(2)使用相对路径切换到“公共的”目录

[root@hadoop101 ~]# cd 公共的/

(3)表示回到自己的家目录,亦即是 /root 这个目录

[root@hadoop101 公共的]# cd ~ 

(4)cd- 回到上一次所在目录

[root@hadoop101 ~]# cd - 

(5)表示回到当前目录的上一级目录,亦即是 “/root/公共的”的上一级目录的意思;

[root@hadoop101 公共的]# cd .. 

mkdir:创建一个新的目录

mkdir:Make directory 建立目录

基本语法

mkdir [选项] 要创建的目录

选项说明

  • -p:创建多层目录

接下来我们尝试使用此命令:

  • 创建一个目录
  • 创建一个多级目录

rmdir:删除一个空的目录

rmdir:Remove directory 移除目录

基本语法

rmdir 要删除的空目录

删除文件夹即使多级也可以直接删

例如我们把刚才创建的文件夹删除:

touch:创建空文件

基本语法

touch [选项] 文件名称

例如:

touch还有一个功能就是修改文件时间标签

常用参数选项如下。

  • -d yyyymmdd:把文件的存取和修改时间改为yyyy年mm月dd日。
  • -a:只把文件的存取时间改为当前时间。
  • -m:只把文件的修改时间改为当前时间。

例如:

[root@server1 ~]# touch -d 20180808 aa //将aa文件的存取和修改时间改为2018年8月8日

rm:删除文件或目录

基本语法

rm [选项] deleteFile (功能描述:递归删除目录中所有内容)

选项说明

  • -i:删除文件或目录时提示用户。

例如:

cp:复制文件或目录

基本语法

cp [选项] 源文件或目录 目标文件或目录

选项说明

  • -r:递归复制整个文件夹(也就是说你只复制一个文件不需要用这个)
  • -a:尽可能将文件状态、权限等属性照原状予以复制。
  • -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。
  • -i:如果目标文件或目录存在,提示是否覆盖已有的文件。

强制覆盖不提示的方法:\\cp

例如:

mv:移动文件与目录或重命名

基本语法

mv [选项] 源文件或目录 目标文件或目录
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件)

常用选项

  • -i:如果目标文件或目录存在,则提示是否覆盖目标文件或目录。
  • -f:无论目标文件或目录是否存在,直接覆盖目标文件或目录,不提示。

例如:

cat:查看文件内容

查看文件内容,从第一行开始显示

基本语法

cat [选项] 要查看的文件

选项说明

  • -n:显示所有行的行号,包括空行
  • -b: 和 -n 相似,只不过对于空白行不编号。
  • -s:当遇到有连续两行以上的空白行,就代换为一行的空白行。

一般查看比较小的文件,一屏幕能显示全的。

例如:

利用cat命令还可以合并多个文件。如把file1和file2文件的内容合并为file3,
且file2文件的内容在file1文件的内容前面,则命令为:

[root@server1 ~]# cat file2 file1>file3
//如果file3文件存在,则此命令的执行结果会覆盖file3文件中原有内容

more:文件内容分屏查看器

more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键,详见操作说明。

基本语法

more [选项] 要查看的文件

操作说明

  • space:代表向下翻一页
  • Enter:代表向下翻一行
  • q:代表立刻离开more,不再显示该文件内容
  • Ctrl+F:向下滚动一屏
  • Ctrl+B:返回上一屏
  • =:输出当前行的行号
  • :f:输出文件名和当前行的行号

选项说明

less:分屏显示文件内容

less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

基本语法

less [选项] 要查看的文件

操作说明

用SecureCRT时[pagedown]和[pageup]可能会出现无法识别的问题。

选项说明

echo:输出内容到控制台

基本语法

echo [选项] [输出内容]

基本选项

  • -e:支持反斜线控制的字符转换

例如:

此命令一般搭配>,>>使用

> 、>>:输出重定向和追加

所谓重定向,就是不使用系统的标准输入端口、标准输出端口或标准错误端口,而进行重新的指定。
输入重定向:重新指定设备\\文件来代替键盘作为新的输入;
输出重定向:重新指定设备\\文件来代替显示器作为新的输出。

基本语法

输出重定向实现

  • 标准输出(stdout):命令运⾏所返回的正确信息;代码为1,使⽤>或>>;
  • 标准错误输出(stderr):命令运⾏失败后,所返回的错误信息。代码为2,使⽤2>或2>>;

shell上:
0表示标准输入
1表示标准输出
2表示标准错误输出
默认为标准输出重定向,与 1> 相同
2>&1 意思是把 标准错误输出 重定向到 标准输出.
&>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中
有人会问怎么去理解这个&?
我们不应该单独去理解,应该把他们整体的重定向符号去理解。

输入重定向实现

标准输⼊(stdin): 代码为0,使⽤<或<<;

  • 命令 < 文件: 将指定文件作为命令的输入设备
  • 命令 << 分界符: 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串
  • 命令 < 文件 1 > 文件 2: 将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中。
常用cat:cat >> new.txt < result.txt
cat >> result.txt << “eof”

输入输出重定向的用途:

  • 屏幕输出的信息很重要,而且我们需要将他存下来的时候;
  • 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
  • 一些系统的例行命令(例如写在/etc/crontab 中的文件)的执行结果,希望他可以存下来时;
  • 一些执行命令的可能已知错误讯息时,想以『2>/dev/null 」将他丢掉时;
  • 错误信息与正确信息需要分别输出时。

head:显示文件头部内容

head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。

基本语法

head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)

选项说明

  • -c num:显示指定文件的前num个字符。
  • -num:从倒数第num行开始显示指定文件的内容

tail:输出文件尾部内容

tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后10行内容。

基本语法

1)tail 文件 (功能描述:查看文件尾部10行内容)
(2)tail -n 5 文件 (功能描述:查看文件尾部5行内容,5可以是任意行数)
(3)tail -f 文件 (功能描述:实时追踪该文档的所有更新)

选项说明

  • -c num:显示指定文件的末尾num个字符。
  • +num:从第num行开始显示指定文件的内容

ln:软链接

软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。

基本语法

ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)

删除软链接: rm -rf 软链接名,而不是 rm -rf 软链接名/
如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉

查询:通过 ll 就可以查看,列表属性第 1 位是 l,尾部会有位置指向

如果此时用pwd显示的是虚拟文件路径,我们可以使用pwd -P来显示实际的物理路径

例如:

(1)创建软连接

[root@hadoop101 ~]# mv houge.txt xiyou/dssz/
[root@hadoop101 ~]# ln -s xiyou/dssz/houge.txt ./houzi
[root@hadoop101 ~]# ll
lrwxrwxrwx. 1 root root 20 6 月 17 12:56 houzi ->
xiyou/dssz/houge.txt

(2)删除软连接(注意不要写最后的/)

[root@hadoop101 ~]# rm -rf houzi

(3)进入软连接实际物理路径

[root@hadoop101 ~]# ln -s xiyou/dssz/ ./dssz
[root@hadoop101 ~]# cd -P dssz/

history:查看已经执行过历史命令

基本语法

history [选项] (功能描述:查看已经执行过历史命令)

参数/选项:

  • -n: 数字,列出最近n条历史命令;
  • -c: 将⽬前shell的所有历史命令清除;
  • -a: 将⽬前新增的history命令追加到histfiles中;如果没有指定histfiles,默认写⼊~/.bash_history;
  • -r: 将histfiles中的内容读到⽬前shell的histroy中;
  • -w: 将⽬前history所记录的内容写⼊histfiles。

历史命令读取和记录的过程:

  • 登陆,从~/.bash_history读取;
  • 数量: HISTSIZE;
  • 登出: 更新~/.bash_history;
  • history –w 可强制写入

利用”!”重复执行历史命令:

用法:

  • !number:执行历史命令中的第number调指令
  • !command:由最近指令向前搜索,找到开头为“command的指令”,并执行
  • !!: 执行上一条指令

例如:

sort:文件内容排序

基本语法

sort [选项] 文件列表

选项说明

例1:将/etc/passwd中的内容以:来分隔,并按照第3栏排序

[liu@localhost yum.repos.d]$ cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
liu:x:1000:1000:liu:/home/liu:/bin/bash
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash

例2:将/etc/passwd中的内容以:来分隔,并按照第3栏数字大小排序

[liu@localhost yum.repos.d]$ cat /etc/passwd | sort -t ":" -nk 3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

diff:文件比较

用于比较两个文件内容的不同,主要是纯文本文件

基本语法

diff [参数] 源文件 目标文件

常用参数选项

  • -a:将所有的文件当作文本文件处理。
  • -b:忽略空格造成的不同。
  • -B:忽略空行造成的不同。
  • -q:只报告什么地方不同,不报告具体的不同信息。
  • -i:忽略大小写的变化。

wc:统计指定文件的字节数、字数、行数

基本语法

wc [选项] 文件

常用选项

  • -c: 统计字节数
  • -l: 统计行数
  • -m:统计字符数
  • -w:统计字数

时间日期类命令

基本语法

date [OPTION]... [+FORMAT]

选项以及参数说明

date:显示当前时间

基本语法

(1)date (功能描述:显示当前时间)
(2)date +%Y (功能描述:显示当前年份)
(3)date +%m (功能描述:显示当前月份)
(4)date +%d (功能描述:显示当前是哪一天)
(5)date "+%Y-%m-%d %H:%M:%S" (功能描述:显示年月日时分秒)

例如:

date:显示非当前时间

基本语法

(1)date -d '1 days ago' (功能描述:显示前一天时间)
(2)date -d '-1 days ago' (功能描述:显示明天时间)

例如:

date:设置系统时间

基本语法

date -s 字符串时间

(1)设置系统当前时间

[root@hadoop101 ~]# date -s "2017-06-19 20:52:18

cal:查看日历

基本语法

cal [选项] (功能描述:不加选项,显示本月日历)

选项说明

例如:

用户管理类命令

用户账户与群组概念

Linux操作系统是多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源。用户账户是用户的身份标识。用户通过用户账户可以登录到系统,并且访问已经被授权的资源。系统依据账户来区分属于每个用户的文件、进程、任务,并给每个用户提供特定的工作环境(例如,用户的工作目录、shell版本以及图形化的环境配置等),使每个用户都能各自不受干扰地独立工作。

Linux系统下的用户分为三种:

  • 普通用户:在系统中只能进行普通工作,只能访问他们拥有的或者有权限执行的文件。
  • 超级用户(root):也叫管理员账户,它的任务是对普通用户和整个系统进行管理。超级用户账户对系统具有绝对的控制权,能够对系统进行一切操作
  • 系统用户:与系统服务相关,但不能用于登录

群组是具有相同特性的用户的逻辑集合,使用群组有利于系统管理员按照用户的特性组织和管理用户,提高工作效率。

有了群组,在做资源授权时可以把权限赋予某个群组,群组中的成员即可自动获得这种权限。

一个用户账户可以同时是多个群组的成员,其中某个群组是该用户的主群组
(私有群组),其他群组为该用户的附属群组(标准群组)。

用户和群组的基本概念

root用户的UID为0:系统用户的UID从1到999;普通用户的UID可以在创建时由管理员指定,如果不指定,用户的UID默认从1000开始顺序编号。在Linux系统中,创建用户账户的同时也会创建一个与用户同名的群组,该群组是用户的主群组。普通群组的GID默认也是从1000开始编号。

用户账户文件与群组文件

用户登录过程:

  1. 先找寻 /etc/passwd 里面是否有你输入的帐号?如果没有则跳出,如果有的话则将该帐号对应的 UID 与 GID (在 /etc/group 中) 读出来,另外,该帐号的家目录与 shell 设定也一并读出;
  2. 进入 /etc/shadow 里面找出对应的帐号与 UID,然后核对一下你刚刚输入的密码与里面的密码是否相符
  3. 核对成功,就进入 Shell 环境

用户账户文件

/etc/passwd文件:在Linux系统中,所创建的用户账户及其相关信息(密码除外 ) 均放在 /etc/passwd 配 置 文 件 中 。 用 vim 编 辑 器 ( 或 者 使 用 cat/etc/passwd)打开passwd文件,内容格式如下:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
user1:x:1002:1002::/home/user1:/bin/bash

文件中的每一行代表一个用户账户的资料,可以看到第一个用户是root。然后是一些标准账户,此类账户的shell为/sbin/nologin,代表无本地登录权限。最后一行是由系统管理员创建的普通账户:user1。passwd文件的每一行用“:”分隔为7个域,各域的内容如下:

用户名:加密口令:UID:GID:用户的描述信息:主目录:命令解释器(登录shell)

/etc/shadow文件:由于所有用户对/etc/passwd文件均有读取权限,为了增强系统的安全性,用户经过加密之后的口令都存放在/etc/shadow文件中。 /etc/shadow文件只对root用户可读,因而大大提高了系统的安全性。shadow文件的内容形式如下:

root:$6$PQxz7W3s$Ra7Akw53/n7rntDgjPNWdCG66/5RZgjhoe1zT2F00ouf2iDM.AVvRIYoez10hGG7kBHEaah.oH5U1t6OQj2Rf.:17654:0:99999:7:::
bin:*:16925:0:99999:7:::
daemon:*:16925:0:99999:7:::
bobby:!!:17656:0:99999:7:::
user1:!!:17656:0:99999:7:::

shadow文件保存投影加密之后的口令以及与口令相关的一系列信息,每个用
户的信息在shadow文件中占用一行,并且用“:”分隔为9个域,内容如下表:

群组文件
/etc/group文件:用于存放用户的组账户信息,对于该文件的内容任何用户都可以读取。每个群组账户在group文件中占用一行,并且用“:”分隔为4个域。每一行各域的内容如下(使用cat /etc/group):

root:x:0:
bin:x:1:
daemon:x:2:
bobby:x:1001:user1,user2
user1:x:1002:

各域的内容如下:

群组名称:群组口令(一般为空,用x占位):GID:群组成员列表

root的GID为0,没有其他组成员。group文件的群组成员列表中如果有多个用户账户属于同一个群组,则各成员之间以“,”分隔。在/etc/group文件中,用户的主群组并不把该用户作为成员列出,只有用户的附属群组才会把该用户作为成员列出。例如,用户bobby的主群组是bobby,但/etc/group文件中群组bobby的成员列表中并没有用户bobby,只有用户user1和user2。

/etc/gshadow文件:用于存放群组的加密口令、组管理员等信息,该文件只有root用户可以读取。每个群组账户在gshadow文件中占用一行,并以“:”分隔为4个域。每一行中各域的内容如下:

root:::
bin:::
daemon:::
bobby:!::user1,user2
user1:!::

各域的内容如下:

群组名称:加密后的群组口令(没有就用!):群组的管理员:群组成员列表

/etc/group、/etc/shadow、/etc/passwd 文件关系:

useradd:添加新用户

基本语法

useradd [选项] <username>

用户名最好不要使用大写,会出问题

例如:

新建用户user3,UID为1010,指定其用户的主目录为/home/user3,用户的shell为/bin/bash,用户的密码为123456,账户永不过期。

[root@server1 ~]# useradd -u 1010 -d /home/user3 -s /bin/bash -p 123456 -f -1 user3
[root@server1 ~]# tail -1 /etc/passwd
user3:x:1010:1000::/home/user3:/bin/bash

账户创建过程

  • 在 /etc/passwd 里面建立一行与帐号相关的资料,包括建立 UID/GID/家目录等;
  • 在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;
  • 在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;
  • 在 /home 底下建立一个与帐号同名的目录作为使用者家目录,且权限为 700

passwd:设置用户密码

基本语法

passwd [选项] [username]

用于指定和修改用户账户口令。超级用户可以为自己和其他用户设置口令,而普通用户只能为自己设置口令。

例如:

假设当前用户为root,则下面的两个命令分别为root用户修改自己的口令和root用户修改user1用户的口令:

//root用户修改自己的口令,直接用passwd命令回车即可
[root@server1 ~]# passwd

//root用户修改user1用户的口令
[root@server1 ~]# passwd user1

普通用户修改口令时,passwd命令会首先询问原来的口令,只有验证通过才可以修改。而root用户为用户指定口令时,不需要知道原来的口令。为了系统安全,用户应选择包含字母、数字和特殊符号组合的复杂口令,且口令长度应至少为8个字符。

id:查看用户是否存在

基本语法

id 用户名

cat /etc/passwd:查看创建了哪些用户

基本语法

cat /etc/passwd

例如:

su:切换用户

su: swith user 切换用户

作用:可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户

当从root管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证。

基本语法

su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)

例如:

[root@hadoop101 ~]#su tangseng
[root@hadoop101 ~]#echo $PATH
/usr/lib64/qt3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/b
in
[root@hadoop101 ~]#exit
[root@hadoop101 ~]#su - tangseng
[root@hadoop101 ~]#echo $PATH
/usr/lib64/qt3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/t
angseng/bin

尽管像上面这样使用su命令后,普通用户可以完全切换到root管理员身份来完成相应工作,但这会暴露root管理员的密码,从而增大了系统密码被黑客获取的概率,因此上述操作并不是最安全的方案。

userdel:删除用户

基本语法

(1)userdel 用户名 (功能描述:删除用户但保存用户主目录)
(2)userdel -r 用户名 (功能描述:用户和用户主目录,都删除)

例如:

(1)删除用户但保存用户主目录

[root@hadoop101 ~]#userdel tangseng
[root@hadoop101 ~]#ll /home/

(2)删除用户和用户主目录,都删除

[root@hadoop101 ~]#useradd zhubajie
[root@hadoop101 ~]#ll /home/
[root@hadoop101 ~]#userdel -r zhubajie
[root@hadoop101 ~]#ll /home/

who:查看登录用户信息

基本语法

(1)whoami (功能描述:显示自身用户名称)
(2)who am i (功能描述:显示登录用户的用户名以及登陆时间)

who am i debian用不了

w:查看当前登录系统用户和详细信息

基本语法

w

sudo:提供额外的权限

作用:sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务。

基本语法

sudo [参数] 命令名称

输入当前用户密码 5分钟内不用重复验证

选项说明

普通用户不用知道其它账户密码,就能通过sudo获得额外的权限,但需要在配置文件(/etc/sudoers)中进行配置, 该文件提供集中的用户管理、权限与主机等参数。

要使用root用户身份来进行操作

步骤如下:

[root@hadoop101 ~]#vi /etc/sudoers 

修改 /etc/sudoers 文件,找到下面一行(91 行),在 root 下面添加一行,如下所示:

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
anthony ALL=(ALL) ALL

语义:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

或者配置成采用 sudo 命令时,不需要输入密码:

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
anthony ALL=(ALL) NOPASSWD:ALL

修改完毕,现在可以用 anthony 帐号登录,然后用命令 sudo ,即可获得 root 权限进行操作。

或者我们可以直接把该用户放入到sudo组中(这个组不一定是叫sudo要根据文件中写的来,每个发行版本中的名字不一样):

%代表组,也就是说只要处于sudo组中的用户都可以获得等同于root管理员的权限

除了上述配置外,还可将用户加入到wheel群组

  1. visudo 去掉%wheel的注释符号“#”
  2. 使用命令 usermod –G wheel user3

例如:
在sudoers文件中添加配置,仅仅让user1能够以root身份执行cat命令(绝对路径):

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user1 ALL=(ALL) /usr/bin/cat

user1 可以root身份执行cat,但执行其它命令仍然没权限:

[user1@thispc ~]$ sudo cat /etc/shadow
root:$6$zLEE8XN2$11ocLeHMcc18Ez4jf.7HP119AkfNC2iS57ZaKt4y4EZkb6SLraoD
bUFza5/xmqC/7k9ENCKrW6dF2NZwAlefr1:18354:0:99999:7:::
[user1@thispc ~]$ sudo ls /root
对不起,用户 user1 无权以 root 的身份在 thispc 上执行 /bin/ls /root。

usermod:修改用户账户信息

基本语法

usermod [选项] 用户名

选项说明
参考技术A adb(Android Debug Bridge),SDK自带的工具,可实现桥接功能,实现PC和android设备的交互

adb shell:基于Android linux系统操作,放在安卓设备的system/bin目录下,手机端的命令

一:adb常用命令

1. PC连接android设备

(PC与android设备连接同一个wifi,或处于同一个局域网)

连接:adb connect ip:5555

断开连接:adb disconnect ip

查看连接设备的信息:adb devices

获取设备的状态:adb get-state

2. 重启adb server

打开adb服务:adb start-service

关闭adb服务:adb kill-service

3. 安装卸载软件

安装:adb install apkpath(某个apk)

adb install -r :强制安装

卸载: adb uninstall package(可用adb shell pm list packages查看包名)

4. 打印日志

打印android系统日志:adb logcat

将日志打印并保存指定文件夹:adb logcat > /Users/apple/Desktop/log.txt

终止进程:control+C

打印dumpsys,dumpstate,logcat的输出,用于分析错误:adb bugreport

5. PC与android设备上文件复制

android设备上文件复制到PC上:adb pull

PC上文件推至android设备:adb push 

6.重新挂载system分区为可写,需要root权限./system分区默认挂载为只读,但有些操作比如给android系统添加命令,删除自带应用等需对系统进行写操作,得重新挂载为可写

adb shell

su

或:adb root

adb remount 重新挂载文件系统,获得可写的权限(默认情况是只有可读权限的),使用adb remount 的前提是要有root权限

7. 删除系统应用

adb root

adb remount

adb shell

cd system/app

rm *apk

二:adb shell命令

adb shell 进入系统子目录,exit 退出

1. pm命令

列出系统应用的所有包名:adb shell pm list packages 可用grep来过滤:adb shell pm list packages | grep 关键字

清除应用数据与缓存:adb shell pm clear <packagename>

2. am命令

启动应用:adb shell am start -n com.xxx.xxxxxxx|xxx.Activity(可通过adb shell dumpsys activity activities | grep mFocusedActivity查看

强制停止应用:adb shell am force-stop <packagename>

3. input命令

模拟点击事件,点击坐标点(x,y):adb shell input tap x y

模拟滑动事件,从(x1,y1)到(x2,y2):adb shell input swipe x1 y1 x2 y2

发送文本内容:adb shell input text

模拟按下home:adb shell input keyevent KRYCODE_HOME

4. screencap命令

截屏:adb shell screencap

5. 查看网络状态命令

查看当前网络状态:adb shell netstat

通过配置文件配置和管理网络连接:adb shell netcfg

查看网络信息:ifconfig

测试网络联网状态:ping

5.其它相关命令

查看当前终端中进程:adb shell ps

获取cpu信息:adb shell cat /proc/cpuinfo

查看内存信息:adb shell cat /proc/meminfo

查看屏幕分辨率:adb shell wm size

查看设备ip地址:adb shell ifconfig | grep Mask

查看实时资源占用情况:adb shell top

以上是关于Linux常用基本命令分类查询版(超实用不来看看嘛?)的主要内容,如果未能解决你的问题,请参考以下文章

超实用 Linux 常用命令

超实用 Linux 常用命令

多种网络请求方式 ,这么骚气的操作确定不来看看嘛?

MySQL 数据库常用命令 简单超级实用版

MSsql 超实用的几条常用命令

100个linux常用命令,肝货,很实用