Linux相关使用介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux相关使用介绍相关的知识,希望对你有一定的参考价值。

参考技术A Linux命令分为内部命令(shell自带的命令)和外部命令(不是shell自带的命令,由用户安装),怎么鉴别是内部命令和外部命令呢?可以通过type命令来鉴别
什么是shell呢?shell是一个程序,常用的有bash shell,平时我们通过用户名和密码登录到linux,其实就是登录到bash shell程序,通过bash shell来操作linux内核

命令执行流程

那岂不是说使用外部命令效率会很慢吗?
其实一点都不慢,它会去PATH环境变量设置的一堆目录中查找

cd is a shell builtin 表示内部命令
ifconfig is hashed (/usr/sbin/ifconfig) 表示外部命令

cd命令切换文件夹
现在我们cd /usr/sbin

通过cat命令查看文件内容
通过cat ifconfig来查看ifconfig,发现是乱码文件

file命令查看文件类型
输入file ifconfig

从输出信息可以看出它是一个二进制可执行文件

whereis命令查看文件位置

find / -name jdk

echo命令用户打印信息,相当于java中的system.out.println

可以使用回车查看下一行、空格查看下一页、q退出

一般使用man查看外部命令,help查看内部命令

查看linux下的应用和应用的进程号

当我们在这个窗口中输入kill -9 1593的话,另外一个正在编辑文件的进程就会退出

在前面我们已经讲过,bash shell程序在执行命令的一个过程及原理,对于外部命令,它会去PATH这个环境变量中查找执行命令所在的路径,当然在去PATH中寻找之前会先去hash表中查找这个命令有没有执行过,执行过的话会记录在hash表中,则此次查找只需从hash表中就可以很方便的找到

查看分区信息 -h 表示文件大小后面会显示文件大小

查看文件的使用情况

使用man ls 查看ls命令的相关介绍
-a:可以查看隐藏文件
-l:以长列表的形式展示文件列表信息

第一位 -:表示文件,d表示文件夹,b表示块设备文件,c表示字符设备文件,p表示命令管道文件,s表示套接字文件, 从第二位开始往后数九位表示属主权限(每三位一组 rwx:读、写、执行),第11位表示的点表示分隔符,点后面的数字表示文件有几个硬连接,第一个root代表属主名,第二个root代表这个第一个root所在的组织,接下来的5表示文件大小,5后面的日期表示文件最后一次修改的时间, 1.txt代表的文件或文件夹的名称
小结:

切换文件目录
cd 文件路径
cd:切换到家目录
cd ~:回到家目录(也就是家目录)
cd ..:回到上一级目录

创建目录
mkdir 目录名
mkdir -p 目录名,级联创建目录

cp 被拷贝的文件(可以是路径加文件名) 拷贝到哪个位置

复制目录使用
cp -r 被拷贝的目录 目标位置

移动命令
mv 被移动的文件 目标位置+目标文件名

rm 文件名(此中方式的删除需要再输入 yes)
rm -f 文件名,无提示直接删除
rm -rf 文件夹

ln命令默认创建的是硬连接

ln profile a:将a硬连接到profile文件上,他们底层共用一个文件,删除他们之中任何一个
对另外一个没有影响,同时你也可以使用 ll -i命令查看文件编号

ln -s profile a:将a软连接到profile文件,当你访问a的时候会去访问profile,profile再访问底层文件,当将profile删除了之后a就无法访问了

一致时间、创建新文本
touch 已存在的文件:会将文件的访问时间、更新时间、改变时间(即上面stat中介绍的三个时间)变成一致
touch 不存在的文件:会创建一个新的文本

cat命令查看文件内容
cat 1.txt:查看单个文件内容
cat 1.txt 2.txt:查看多个文件

more 1.txt:以分页的形式查看文件内容,按空格:下一页,回车:下一行(注意它不能回看,回看的话只能用鼠标回轮)

less 1.txt:使用空格下一页, b看上一页, 回车看下一行
注意less的话会把整个文件内容加载到内存,如果文件比较大的话,建议使用more命令查看

head命令默认查看文件前10行内容, head 1.txt
head -5 1.txt:查看文件前5行的内容

tail命令默认查看文件后10行的内容 tail 1.txt
tail -5 1.txt:查看文件后5行内容
tail -f 1.txt:实时查看文件增量内容

cat b.txt | head -3:管道左边的命令会以输出流的形式交给管道右边的命令,管道右边以输入流的形式接收并且拼到命令的右边

注意:ls -l 不能接受前面的输出流,这个怎么办呢?可以通过xargs命令

vi文本编辑器末行模式的操作

set nu(number的缩写): 设置行号
set nonu(nonumber的缩写):取消行号
set readonly:设置为只读

n:往下查找
N:往上查找

n:往上查找
N:往下查找

一般我们会在/etc/profile文件中设置一些环境变量,但是在设置的时候可能没有记住目录,这时候我们可以使用如下方式

效果

格式 :s/str1/str2/gi
/ : 临近s命令的第一个字符边界字符,也可以是 @或#
g : 一行内全部替换
i : 忽略大小写

范围
n:行号
. :当前光标行
+n :偏移n行
-3
%:全文

全部删除 1,$d

删除前三行

删除倒数第2行

光标挪到最后一行 按下小写的p
效果图

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特殊字符、及这些特定字符的组合组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。

\ :转义字符
. :匹配任意单个字符
[1249a] :匹配中括号中任意字符
[^12] :匹配中括号中任意非1和2的字符
[a-k] :匹配中括号中任意a~k中的一个字符
^ :行首
$ :行尾
<abc> :单词首尾边界(匹配单词abc)
| :连接操作符
(,) : 选择操作符
\n :反向引用

? :匹配0到1次

在Linux中通过grep命令使用正则表达式来匹配信息

f :选择显示的列
s :不显示没有分隔符的行
d :自定义分隔符

n :按数值排序
r :倒序
t :自定义分隔符
K :选择排序列
u :合并相同行
f :忽略大小写

sed:行编辑器,以行为单位进行处理,可以将数据进行替换、删除、新增、选取等特定工作

sed [options] 'Command' file ...

-n :静默模式,不再默认显示模式空间(内存)中的内容
-i :直接修改原文件
-e SCRIPT :可以同时执行多个脚本
-f /PATH/TO/SED_SCRIPT
-r :表示使用扩展正则表达式

d :删除符合条件的行
p :显示符号条件的行
a \string :在指定的行后面追加新行,内容为string
\n :可以用于换行
i \string :在指定的行前面添加新行,内容为string
c :取代,c的后面可以接字符串
s /pattern/string/修饰符:查找并替换。默认只替换每行中第一次被模式匹配到的字符串
g :行内全局替换
i :忽略字符大小写
s///:s###,s@@@
(),\1,\2

sed "2p" ctxt
但是在执行下面的操作的时候文本中的内容都显示出来了,它的原理是,打印匹配的行,以及文本中所有的内容

注意:它删的是内存中的数据,而不是目标文件

sed -i "3d" ctxt

它的原理是先把内存中的第3行数据删除,然后再把内存中的数据写回原文件,这时原文件中的第三行就没有了

使用变量的形式

awk是一个强大的文本分析工具。
相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk -F 'pattern + action' filenames
支持自定义分隔符,默认是以空格分隔的
支持正则表达式匹配
支持自定义变量,数组 a[1] a[tom] map(key)
支持内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
支持函数
print、split、substr、sub、gsub
支持流程控制语句
if、while、do/while、for、break、continue

练习题
passwd文件内容解读:
passwd文件中每行由7个字段组成,字段与字段之间由:分隔,第一个字段代表用户名,第二个字段表示用户对应的加密后的密码,第三个字段表示userId,第四个字段表示groupId,第五个字段表示对用户的描述,第六个字段表示用户的家目录,第七个字段表示的是这个用户默认使用的shell

其中$0表示整行

统计报表:合计每人1月工资, 0:manager,1:worker

将awk后面的内容封装到一个文件中(封装的脚本要遵循一定的格式)

qqq文件的内容格式

Linux用户和组介绍及相关命令的使用

用户和组介绍

用户类别:

     管理员

     普通用户

     系统用户

     登录用户

用户标识:UserID, UID

     16bits二进制数字:0-65535

     管理员:0

     普通用户:1-65635

         系统用户:1-499(CentOS6), 1-999(CentOS7)

         登录用户:500-60000(CentOS6), 1000-60000(CentOS7)

名称解析:名称转换

    Username <--> UID

        根据名称解析库进行:/etc/passwd


组:

     组类别1:

         管理员组

         普通用户组

         系统组

         登录组

    

     组标识:GroupID, GID

     管理员组:0

     普通用户组:1-65635

     系统用户组:1-499(CentOS6), 1-999(CentOS7)

     登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)

    

     名称解析:groupname <--> gid

          解析库:/etc/group

    

     组类别2:

         用户的基本组

         用户的附加组

    

     组类别3:

         私有组:组名同用户名,且只包含一个用户;

         公共组:组内包含了多个用户;

相关的几个文件和目录:

/etc/passwd:用户的信息库

保存格式:

    name:password:UID:GID:GECOS:directory:shell

     name: 用户名

     password:可以是加密的密码,也可是占位符x;

     UID:用户的UID

     GID:用户所属的主组的ID号;

     GECOS:注释信息

     directory:用户的家目录;

     shell:用户的默认shell,登录时默认shell程序;

/etc/shadow:用户密码,

保存格式:

用户名:加密的密码:最近一次修改密码时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段

/etc/group

保存格式:

    group_name:password:GID:user_list

       user_list:该组的用户成员;以此组为附加组的用户的用户列表; 


相关命令介绍

groupadd命令:添加组

groupadd [选项] group_name  
        -g GID:指定GID;默认是上一个组的GID+1;
        -r: 创建系统组;


groupmod命令:修改组属性  

groupmod [选项] GROUP
        -g GID:修改GID;
        -n new_name:修改组名;


groupdel命令:删除组 

groupdel [选项] GROUP


useradd命令:创建用户

useradd [选项] 登录名
        -u, --uid UID:指定UID;
        -g, --gid GROUP:指定基本组ID,此组得事先存在;
        -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
         -a, --append:与-G一同使用,用于为用户追加新的附加组;
         -c, --comment COMMENT:指明注释信息;
        -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
        -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
        -r, --system:创建系统用户;
         -M,不创建家目录
        
        注意:创建用户时的诸多默认设定配置文件为/etc/login.defs
        
        useradd -D:显示创建用户的默认配置;
        useradd -D 选项: 修改默认选项的值;
        
    修改的结果保存于/etc/default/useradd文件中;

    

usermod命令:修改用户属性    

usermod [选项] 登录
        -u, --uid UID:修改用户的ID为此处指定的新UID;
        -g, --gid GROUP:修改用户所属的基本组;
        -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
        -a, --append:与-G一同使用,用于为用户追加新的附加组;
        -c, --comment COMMENT:修改注释信息;
        -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
        -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
        -l, --login NEW_LOGIN:修改用户名;
        -s, --shell SHELL:修改用户的默认shell;
        
        -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
        -U, --unlock:解锁用户的密码;

    

userdel命令:删除用户

userdel [选项] 登录
    -r:删除用户时一并删除其家目录
练习1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);
[[email protected] tmp]# useradd -u 4001 -g gentoo -G distro,peguin gentoo
[[email protected] tmp]# tail -1 /etc/passwd
gentoo:x:4001:506::/home/gentoo:/bin/bash
练习2:创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;
[[email protected] tmp]# useradd fedora -c "Fedora Core" -s /bin/tcsh 
[[email protected] tmp]# tail -1 /etc/passwd
fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
练习3:修改gentoo用户的家目录为/tmp/gentoo;要求其原有文件仍能被用户访问;
[[email protected] tmp]# usermod -d /tmp/gentoo -m gentoo
[[email protected] tmp]# 
练习4:为gentoo新增附加组netadmin;
[[email protected] tmp]# usermod -G  netadmin -a gentoo
[[email protected] tmp]#

   

passwd命令:修改密码

passwd  [-k]  [-l]  [-u  [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:修改用户自己的密码;
(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;
    -l, -u:锁定和解锁用户;
    -d:清除用户密码串;
    -e DATE: 过期期限,日期;
    -i DAYS:非活动期限;
    -n DAYS:密码的最短使用期限;
    -x DAYS:密码的最长使用期限;
    -w DAYS:警告期限;
    --stdin:
    echo "PASSWORD" | passwd --stdin USERNAME

gpasswd命令:

组密码文件:/etc/gshadow
gpasswd [选项] group
    -a USERNAME:向组中添加用户
    -d USERNAME:从组中移除用户

newgrp命令:临时切换指定的组为基本组;

newgrp [-] [group]
    -: 会模拟用户重新登录以实现重新初始化其工作环境;

chage命令:更改用户密码过期信息

chage [选项] 登录名
    -m 密码可更改的最小天数。为零时代表任何时候都可以更改密码
  -M 密码保持有效的最大天数
  -W 用户密码到期前,提前收到警告信息的天数
  -E 帐号到期的日期。过了这天,此帐号将不可用
  -d 上一次更改的日期
  -I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
  -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

id命令:显示用户的真和有效ID; 

id [OPTION]... [USER]
    -u: 仅显示有效的UID;
    -g: 仅显示用户的基本组ID; 
    -G:仅显示用户所属的所有组的ID;
    -n: 显示名字而非ID;

su命令:switch user

登录式切换:会通过读取目标用户的配置文件来重新初始化
    su - USERNAME
    su -l USERNAME
    非登录式切换:不会读取目标用户的配置文件进行初始化
    su USERNAME
注意:管理员可无密码切换至其它任何用户;
    -c ‘COMMAND‘:仅以指定用户的身份运行此处指定的命令;


本文出自 “汪立明” 博客,请务必保留此出处http://afterdawn.blog.51cto.com/7503144/1855814

以上是关于Linux相关使用介绍的主要内容,如果未能解决你的问题,请参考以下文章

Linux远程连接介绍及相关配置

Linux用户和组介绍及相关命令的使用

linux相关知识linux centos 文件目录介绍

linux相关知识Linux目录操作命令

Linux下Nginx相关常用操作

linux系统防火墙相关问题及常用命令介绍