关注
“
脚本之家
”
,与百万开发者在一起
以下文章来源于BDC+ ,作者bdcyouth
温馨提示:为了更好的实际学习,建议大家使用PC端查阅复读。
0. 开篇词
不管你是从事开发还是运维工作,都要懂Linux基本命令,Linux命令是Linux系统正常运行的核心。
如果是运维,那Linux命令是必备技能,因为要经常和服务器打交道。
如果是开发,那Linux命令是中坚力量,因为要稳定高效运行应用程序。
说Linux 命令不重要的,站出来,我保证不大死你!
我和你打个赌,我猜你不敢!你在你司服务器执行如下命令证明给我看看。
如果你敢,我就送你上热搜。
咱言归正传,Linux中的命令大致分为两类:内部命令和外部命令。
内部命令也称shell内嵌命令,这些命令是写在bash源码的builtins里面的,由shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中,不需要临时去磁盘加载命令。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。
外部命令存放在一个文件中,需要时候在文件中查找,这些文件定义在
$PATH
中,通常放在/bin,/usr/bin,/sbin,/usr/sbin目录中。
那内部命令有哪些呢?我们可以通过
enable
命令来查看
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
enable complete
enable compopt
enable continue
enable declare
enable dirs
enable disown
enable echo
enable enable
enable eval
enable exec
enable exit
enable export
enable false
enable fc
enable fg
enable getopts
enable hash
enable help
enable history
enable jobs
enable kill
enable let
enable local
enable logout
enable mapfile
enable popd
enable printf
enable pushd
enable pwd
enable read
enable readarray
enable readonly
enable return
enable set
enable shift
enable shopt
enable source
enable suspend
enable test
enable times
enable trap
enable true
enable type
enable typeset
enable ulimit
enable umask
enable unalias
enable unset
enable wait
外部命令表现为一个磁盘文件,存放在某一个目录下,我们可以通过
which
命令来查看具体位置。
root@DESKTOP-KV8R5US:~# which ls //查看外部命令的磁盘路径
/bin/ls
root@DESKTOP-KV8R5US:~# whereis ls //whereis 不仅能查看文件路径,还能查看帮助文档的路径
ls: /bin/ls /usr/share/man/man1/ls.1.gz
那如何更快速,准确的确定某一个命令到底是属于内部命令还是外部命令,我们可以通过
type
命令来查看具体位置。
root@DESKTOP-KV8R5US:~# type help
help is a shell builtin
root@DESKTOP-KV8R5US:~# type ls
ls is aliased to `ls --color=auto'
root@DESKTOP-KV8R5US:~# type pwd
pwd is a shell builtin
执行过的命令都通过hash存在内存中,我们可以通过
hash
命令查看缓存的路径。
1. 帮助命令
1.1 help
获取shell内置命令的帮助信息,不能用于外部命令。
help [-dms] [pattern ...]
1.2 man
获取帮助信息,没有内部命令与外部命令的区分。
man [OPTION...] [SECTION] PAGE...
1.3 info
info [OPTION]... [MENU-ITEM...]
相比man来说,info获取到的帮助文档更加完整详细。
我们最常用的一种情况是
-h, --help
2. 组与用户类
2.1 group
-
添加组
创建一个新的组groupbdc,并添加组 ID:325。
# groupadd -g 325 groupbdc
修改组
删除组groupbdc为groupbdc+。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
# groupmod -n newgroupbdc groupbdc
查看组
查看组账户信息
查看安全组账户信息
查看密码套件配置。
cat /etc/login.defs Shadow
2.2 user
-
添加用户
添加用户userbdc。
为添加用户指定用户组。
# useradd -g groupbdc userbdc
创建一个系统用户。
-
删除用户
删除userbdc用户以及与此用户相关的所有文件。
修改用户
修改userbdc用户为root用户组
# usermod –g root userbdc
切换用户
切换用户,只能获得用户的执行权限,不能获得环境变量
切换到用户并获得该用户的环境变量及执行权限
查看登录用户信息
查看创建了哪些组
显示自身用户名称
显示登录用户的用户名
显示有哪些用户登录到了本台机器上
sudo
修改配置文件/etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
userbdc ALL=(ALL) ALL或 NOPASSWD:ALL(不需要输入密码)
3 文件目录类
3.1 pwd
-
基本语法
pwd
显示您目前所在的工作目录的绝对路径
-
-L 如果指定当前工作目录,则打印$PWD的值。
ehco $PWD
默认就是 -L
-
3.2 ls
-
基本语法
显示指定工作目录下的内容
|文件类型以及权限|链接数|文件属主|文件属组|文件大小(单位:Byte)|
最后一次操作的时间|文件名称
-
-
-
-A 不列出 "." (目前目录) 及 ".." (父目录)
-
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-
-
-a 显示所有文件及目录,包括以"."开头的隐藏档
-
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
3.3 mkdir
-
3.4 rmdir
-
3.5 touch
-
-
3.6 cd
-
实例
cd -P # 跳转到实际物理路径,而非快捷方式路径
3.7 cp
-
基本用法
复制文件或目录
cp [options] source dest 或 cp [options] source... directory
-
实例
使用指令"cp"将当前目录"test/"下的所有文件复制到新目录"newDir"下
3.8 rm
-
基本语法
删除文件或目录
rm [options] fileName或dirName...
常用案例
递归删目录中所有内容
删除当前目录下的所有文件及目录
需要注意
文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。
3.9 mv
-
基本语法
移动文件、目录或重命名
mv [options] source dest #重命名
mv [options] source... directory #移动
-
常用案例
将文件oldFileName.txt重命名为newFileName.txt
mv oldFileName.txt newFileName.txt
将文件fileName移动到目录dir
-
需要注意
如果目录存在,则该命令执行移动操作。
如果目录不存在,则该命令执行修改操作。
3.10 cat
-
-
-n 或 -number
: 对输出的内容进行编号
-
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
常用案例
root@DESKTOP-KV8R5US:/# cat -number a.txt
3.11 tac
-
-
常用实例
root@DESKTOP-KV8R5US:/# tac a.txt
3.12 more
-
-
-
-
q:代表立刻离开 more ,不再显示该文件内容。
-
-
-
-
常用实例
root@DESKTOP-KV8R5US:/# more a.txt
3.13 less
-
基本用法
less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用[pageup] [pagedown]往回滚动。
-
-
-
-
/字串 :向下搜寻『字串』的功能;n:向下查找;N:向上查找;
-
?字串 :向上搜寻『字串』的功能;n:向上查找;N:向下查找;
-
常用实例
root@DESKTOP-KV8R5US:/# less a.txt
3.14 head
-
常用实例
root@DESKTOP-KV8R5US:/# head -n 1 a.txt
total 580
3.15 tail
-
常用实例
root@DESKTOP-KV8R5US:/# tail -n 1 a.txt
drwxr-xr-x 1 root root 512 Mar 5 00:02 var
3.16 echo
-
基本用法
显示一行文本,用于字符串的输出。
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
-
常用案例
显示普通字符串
root@DESKTOP-KV8R5US:/# echo "hello bdc+"
hello bdc+
显示转义字符
root@DESKTOP-KV8R5US:/# echo "\"It is echo\""
"It is echo"
显示变量
root@DESKTOP-KV8R5US:/# echo $PWD
/
显示换行
root@DESKTOP-KV8R5US:/# echo -e "OK! \n"
OK!
输出结构到文件
root@DESKTOP-KV8R5US:/# echo "It is echo" > myfile
root@DESKTOP-KV8R5US:/# cat myfile
It is echo
显示命令内容
root@DESKTOP-KV8R5US:/# echo `date`
Tue Jun 23 10:44:48 CST 2020
3.17 >>
-
基本语法
重定向
> 列表的内容写入文件中(覆盖写)
>> 列表的内容追加到文件末尾
-
常用案例
root@DESKTOP-KV8R5US:/# ls -l > a.txt
root@DESKTOP-KV8R5US:/# ls -l >> a.txt
3.18 ln
-
基本用法
Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
软链接可以 跨文件系统 ,硬链接不可以
软链接可以对一个不存在的文件名进行链接
软链接可以对目录进行链接
硬链接,以文件副本的形式存在。但不占用实际空间。
不允许给目录创建硬链接
硬链接只有在同一个文件系统中才能创建
ln [options] [source/dir] [dest/dir]
常用实例
给hadoop目录创建软链接/ln/hadoop,如果hadoop丢失,/ln/hadoop将失效:
cd不加参数进入是软链接的地址
cd加参数进入是实际的物理地址
3.19 history
-
基本用法
显示所操作历史记录列表。
history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
-
4. 文件权限类
4.1 文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组。
文件类型
|
属主权限
|
属组权限
|
其他用户权限
|
0
|
1 2 3
|
4 5 6
|
7 8 9
|
d
|
R w x
|
R - x
|
R - x
|
目录文件
|
读 写 执行
|
读 写 执行
|
读 写 执行
|
-
0首位表示类型
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
-
-
-
c 字符流,装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
-
-
-
-
b 设备文件,装置文件里面的可供储存的接口设备(可随机存取装置)
第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group
第7-9位确定其他用户拥有该文件的权限 ---Other
rxw作用文件和目录的不同解释
-
-
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
-
[ x ]代表可执行(execute):可以被系统执行
-
[ r ]代表可读(read): 可以读取,ls查看目录内容
-
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
-
[ x ]代表可执行(execute):可以进入该目录
4.2 chmod改变权限
-
基本用法
文件类型
|
属主权限 u
|
属组权限 g
|
其他用户权限 o
|
0
|
1 2 3
|
4 5 6
|
7 8 9
|
d
|
R w x
|
R - x
|
R - x
|
目录文件
|
读 写 执行
|
读 写 执行
|
读 写 执行
|
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)