linux下命令补全,linux的命令补齐有何作用

Linux Shell 按Tab键不能补全

在Linux的终端中输入tab键时,有时会出现命令不能补全的情况,此时有一种原因是bash错误。

我们提供的服务有:网站制作、做网站、微信公众号开发、网站优化、网站认证、新林ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的新林网站制作公司

使用 ls -l /bin/sh 命令发现

/bin/sh - /bin/dash

dash是一个不同于bash的Shell,它主要为了执行脚本而出现,而不是交互,它速度更快,但功能比bash要少的多。语法严格遵守POSIX标准。

通过命令 ln -sf bash /bin/sh 可以将dash改成bash。此时问题可以解决。

Ubuntu系统在某些情况下,apt-get 不能补全相关命令,可以通过修改/etc/bash.bashrc文件的相关行,把默认的#号去掉即可。

if [ -f /etc/bash_completion ]; then

/etc/bash_completion

fi

重新登录Shell即可。

此处参考: .

本文出自 “ 低调的前进 ” 博客,请务必保留此出处

Linux系统与设置命令

在前面的两个章节中,我们主要介绍了Linux基本知识和虚拟机的安装,从当前章节开始,我们一起学习下Linux的基本命令,在当前章节,我们先简单的学习下一些系统的基本命令,慢慢的由浅入深,在后面的章节中我们将学习其他的命令比如文件操作、备份压缩等

命令我们可以理解成在Windows中我们常常为了查看ip输入的ipconfig,在Linux中也有很多的命令,比如操作目录、文件、网络、磁盘等等命令

使用者权限:管理员用户

参数说明:

添加用户czbk(传智播客的首拼)执行

我们使用useradd命令创建了一个用户czbk

useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。

执行如下

由上图我们发现,我们在使用useradd新增用户的时候,出现了权限不足,也就是说我们使用用户itcast没有创建用户的权限。

我们通过管理员账号root进行创建,首先我们从控制台中切换到root

在 密码的地方输入我们的root密码【root】即可进入到root用户下。

我们在root下继续创建czbk用户

以下是useradd常用选项

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用

使用者权限:管理员用户

指定和修改用户口令的Shell命令是 passwd 。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:

可使用的选项:

设置当前用户的口令

此处我们设置密码和itcast账号密码一致,为【Itheima888】

usermod 命令通过修改系统帐户文件来修改用户账户信息

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

使用者权限:管理员用户

修改已有用户的信息使用 usermod 命令,其格式如下:

下面命令将用户czbk用户名修改成czbk2019

以下是usermod常用选项

假如我们其中一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

使用者权限:管理员用户

删除一个已有的用户账号使用 userdel 命令,其格式如下:

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件

此命令删除用户czbk2019

成功删除用户czbk2019

以下是userdel常用选项

引子:

为了方便用户管理, 提出了 组 的概念, 如下图所示

比如新建账户【张三】,那么它默认对应的组就是张三

一个用户可以有一个或者多个组

假如说(如上图),我们在企业级开发过程中,我们有多个组,其中一个开发组对应三个账户,张三、李四、王五、如果就像上面提到的,一个用户默认对应一个组,那么三个账户张三、李四、王五就有了三个不同的组,如果大家都操做一个文件,在进行权限分配的时候,就要对不同的三个组进行授权,显然这样是不合理的,因为太过繁琐。

所以,才有了组(新建组)的概念,我们把张三、李四、王五统一放到【开发组】,在对文件授权的时候,我们只对【开发组】进行授权由此,这样的话【张三、李四、王五】都有相等的权利操作了。

新增一个用户组(组名可见名知意,符合规范即可),然后将用户添加到组中

使用者权限:管理员用户

使用的选项有:

新增用户组czbk-it

上面的命令向系统中增加了一个新组czbk-it,新组的组标识号是在当前已有的最大组标识号的基础上加1

以下是groupadd常用选项

使用者权限:管理员用户

常用的选项有:

上面的命令将组czbk-it的组名修改为czbk-it-2019。

以下是groupmod常用选项

在查询用户所属的用户组前,我们先增加一个用户ituser-groups

要查询一个用户属于哪个用户组,使用groups命令,其格式如下

查询用户ituser-groups属于某个用户组,执行groups命令

由此可见,ituser-groups用户属于用户组ituser-groups(用户组默认与用户名一样)

使用者权限:管理员用户

要删除一个已有的用户组,使用groupdel命令,其格式如下

删除czbk-it-2019用户组

删除成功

以下是groupdel常用选项

1、创建一个新的组,并添加组ID(需要切换到root用户)

执行效果如下

2、创建3个用户(需要切换到root用户)

3、将上面三个用户添加到组itbj2020group

我们通过passwd命令将三个用户添加到组

什么是gpasswd:

gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。

语法

将上面的三个用户使用gpasswd添加到组(需要切换到root用户)

执行如下

查看用户组下所有用户(所有用户)

执行效果如下(或者直接打开/etc/group文件都可以)

由上图可知:三个用户全部都加入到了itbj2020group组。

date 可以用来显示或设定系统的日期与时间

使用者权限:所有用户

语法如下:

参数

-d字符串:显示字符串所指的日期与时间。字符串前后必须加上双引号;

-s字符串:根据字符串来设置日期与时间。字符串前后必须加上双引号;

-u:显示GMT;

--help:在线帮助;

--version:显示版本信息

1、设置时间

用 -s选项可以设置系统时间,如下:

2、显示时间

协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。。

(2)GMT

即 格林尼治 平太阳时间,是指格林尼治所在地的标准时间,也是表示地球自转速率的一种形式

外文名: Universal Time

其他外文名 G.M.T.(Greenwich Mean Time)

(3)CST

北京时间 (中国国家标准时间) 北京时间是中国采用国际时区东八时区的区时作为标准时间 。 北京时间并不是北京(东经116.4°)的地方时间,而是东经120°的地方时间,故东经120度地方时比北京的地方时早约14分半钟。因为北京处于国际时区划分中的东八区,同格林尼治时间(世界时)整整相差8小时(即北京时间=世界时+8小时),故命名为“北京时间”。东八区包括的范围从东经112.5°到东经127.5°,以东经120°为中心线,东西各延伸7.5°,总宽度为15°的区域。 而中国幅员辽阔,东西相跨5个时区(即东五区、东六区、东七区、东八区、东九区5个时区)授时台必须建在地理中心地带,从而也就产生了长短波授。“北京时间”与“北京当地时间”是两个概念, “北京时间”的发播不在北京,而在陕西蒲城(处于东七区)

(4)东八区

东八区( UTC / GMT +08:00)是比 世界协调时间 (UTC)/ 格林尼治时间 (GMT)快8小时的时区,理论上的位置是位于 东经 112.5度至127.5度之间,是东盟标准的其中一个候选时区。当格林尼治标准时间为0:00时,东八区的标准时间为08:00

pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="" cid="n486" mdtype="fences" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); position: relative !important; background-position: inherit; background-repeat: inherit;"总结:

上面提到了很多知识:即UTC/GMT/CST/东八区

总结一下就是,北京时间(中国国家标准时间CST)采用东八区区时,即:

协调世界时(UTC)+8 / 格林尼治时间(GMT)+8

也就是说+8后的时间才是北京时间/pre

logname命令用于显示用户名称。

执行logname指令,它会显示目前用户的名称

语法为如下:

参数 :

显示登录账号的信息

su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

使用权限:所有使用者。

语法如下:

变更帐号为 root 并在执行 ls 指令后退出返回原使用者

切换到root

这样的话,我们就进入到了root用户下。

id命令用于显示用户的ID,以及所属群组的ID。

id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。

使用者权限:所有用户

语法

参数说明:

显示当前用户信息

执行效果如下

sudo:控制用户对系统命令的使用权限,root允许的操作。

通过sudo可以提高普通用户的操作权限

使用者权限:普通用户

语法如下:

sudo -V

sudo -h

sudo -l

sudo -v

sudo -k

sudo -s

sudo -H

sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s

sudo command

参数说明 :

sudo命令使用

指定root用户执行指令

修改网卡配置文件

比如,在下面的例子中,我们使用普通用户修改网卡的配置文件,在进行保存的时候,提示我们【无法打开并写入文件】,那么此时,我们可以通过sudo命令来提升自己的写入权限

执行:

执行效果如下(保存)

然后点击回车

执行效果如下(键入itcast密码)

执行保存

top命令用于实时显示 process 的动态。

使用权限:所有使用者。

显示进程信息

执行效果如下

显示完整命令,与top命令不同的就是command属性像是进行了命令补全

执行效果如下

执行效果如下

Linux ps命令用于显示当前进程 (process) 的状态信息

使用者权限:所有用户

语法如下:

显示进程信息

显示指定用户信息

显示所有进程信息

Linux kill命令用于删除执行中的程序或工作(可强制中断)

使用者权限:所有用户

语法如下:

参数说明 :

杀死一个进程

强制杀死进程

彻底杀死进程

杀死指定用户所有进程

1.方法一 过滤出itcast用户进程

2.方法二,直接杀死

shutdown命令可以用来进行关闭系统,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机

使用者权限:管理员用户

语法如下:

参数说明 :

立即关机

指定1分钟后关机,1分钟关机并显示警告信息

指定1分钟后重启,并发出警告信息

reboot命令用于用来重新启动计算机

使用者权限:管理员、普通(需要验证)用户

语法如下:

参数 :

开始重新启动

重启效果如下

who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等

使用者权限:所有使用者都可使用。

语法如下:

参数说明 :

显示当前登录系统的用户

显示明细(标题)信息

由上图可知,截止到现在只有itcast在线。

引子:

timedatectl是用于控制系统时间和日期。可以用来查询和更改系统时钟于设定,同时可以设定和修改时区信息。

在实际开发过程中,系统时间的显示会和实际出现不同步;我们一般为了校正服务器时间、时区的时候会使用timedatectl命令/pre

使用者权限:所有使用者都可使用,设置时间需要管理员,下面会标注。

几个常见的概念,进行总结如下:

显示系统的当前时间和日期,使用命令行中的timedatectl命令

执行效果如下

上图显示中国时区

linux命令自动补全工具bash-completion,自动补全git、Docker、kubenetes等命令

在 Linux 命令行中,当输入字符后,按Tab 键,Shell 就会列出以这些字符开头的所有可用命令,如果只有一个命令匹配到,按一次 Tab 键就自动将这个命令补全。

如果输入pass,此时按 Tab 键,因为以pass开头的命令只有passwd这个命令, Shell 就会自动补全 passwd 命令。

另外如果输入的字符匹配多个命令则会列出所有可用的命令,比如,如果输入do,此时按 Tab 键 Shell 就会自列出可用的命令。

但是系统自带的命令补全功能有限,自动补全功能仅限于命令和文件名。

可以安装 Bash 命令补全增强软件包 bash-completion来实现更多命令的补全。

以Centos为例

直接通过yum命令安装

bash-completion版本信息

配置命令补全

命令补全的脚本存放在/usr/share/bash-completion/completions/目录,可以在这个目录查看支持增强补全功能的命令。

再试试输入docker命令后按tab键:

可以看到后续可用命令的提示,妈妈再也不用担心我记不住命令了。

同样对于kubenetes也可以实现命令的自动补全和提示:

如果是在安装bash-completion之后安装git是不能自动命令补全,需要手动进行一些配置。

git安装之后文档里会有git-completion.bash文件

安装完git之后重新source一下bash-completion

看看配置之后的效果

如果觉得有用记得收藏点赞


当前文章:linux下命令补全,linux的命令补齐有何作用
文章起源:http://cdiso.cn/article/dsgephd.html

其他资讯