欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux基础命令用法

程序员文章站 2022-07-31 08:16:06
目录管理 ls、cd、pwd、mkdir、rmdir、tree ls(list) 列出,列表 用法: ls -l:长格式 文件类型: -:普通文件 (f) d: 目录文件 b: 块设备文件 (block) c: 字符设备文件 (character) l: 符号链接文件(symbolic link f ......

目录管理

  ls、cd、pwd、mkdir、rmdir、tree

ls(list) 列出,列表  

用法: 

ls
  -l:长格式
    文件类型:
      -:普通文件 (f)
      d: 目录文件
      b: 块设备文件 (block)
      c: 字符设备文件 (character)
      l: 符号链接文件(symbolic link file)
      p: 命令管道文件(pipe)
      s: 套接字文件(socket)
    文件权限:9位,每3位一组,每一组:rwx(读,写,执行), r--
    文件硬链接的次数
    文件的属主(owner)
    文件的属组(group)
    文件大小(size),单位是字节
    时间戳(timestamp):最近一次被修改的时间
    访问:access
    修改:modify,文件内容发生了改变
    改变:change,metadata,元数据
  -h:做单位转换
  -a: 显示以.开头的隐藏文件
  . 表示当前目录
  .. 表示父目录
  -A
  -d: 显示目录自身属性
  -i: index node, inode
  -r: 逆序显示
  -R: 递归(recursive)显示

cd(change directory)

用法:

cd ~USERNAME:进入指定用户的家目录

cd ..:进入父级目录

cd -:在当前目录和前一次所在的目录之间来回切换

cd:进入当前用户主目录

 

pwd(Printing Working directory) 

显示当前路径

mkdir(make directories)

  -p:创建目录树

  -v:显示创建目录的信息

  此两个命令联合使用最有效。

  mkdir -pv /hehe/heihei/haha

创建多级目录

  mkdir /test/{x/m,y} 

  mkdir /test/{a,d}_{b,c}

linux基础命令用法

 

rmdir(remove directory)

  -p 若目录为多级目录,从最后一个目录开始删除。

linux基础命令用法

 

 

 

文件管理

  touch、stat、file、rm、cp、mv

touch(change file timestamps)修改文件时间戳

  -a:修改文件访问时间

  -m:修改文件修改时间

  -t:使用[[CC]YY]MMDDhhmm[.ss]格式修改文件时间戳

  -c:创建空文件

linux基础命令用法

 

rm(remove)

    移除文件或者目录

  -i:进行确认提示。(在同时给定了-f和-i选项时,列在最后的生效。)

  -f:忽略不存在的文件,并且从不向用户提示。

  -r:或者 -R 递归地移除目录树。

cp(copy)

  -i 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
  -f 覆盖已经存在的目标文件而不给出提示。
  -p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  -r 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  -l 建立硬链接,而非复制
  -d 复制符号链接

linux基础命令用法

 

mv(move)

  移动(改名)文件 

  -t: 指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

 

日期时间
date、clock、hwclock、cal

显示日期的指令: date(显示系统时间)
hwclock(显示硬件时间)
-w:系统时间同步到硬件时间
-s:硬件时间同步到系统时间
显示日历: cal
计算器: bc

 

查看文本
cat、tac、more、less、head、tail、tee

 cat 连接文件并在标准输出上输出

  -n:显示文本行数

  -E:在每行结束显示 $

head:查看前n行
tail:查看后n行
  -n
tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容;

tee:既显示输出内容,又把内容输入到文件中。

linux基础命令用法

 

文本处理

cut:
  -d: 指定字段分隔符,默认是空格
  -f: 指定要显示的字段
  -f 1,3
  -f 1-3

linux基础命令用法

 

文本排序:sort
  -n:数值排序
  -r: 降序
  -t: 字段分隔符
  -k: 以哪个字段为关键字进行排序
  -u: 排序后相同的行只显示一次
  -f: 排序时忽略字符大小写

uniq: 删除排序中重复的行
  -c: 显示文件中行重复的次数
  -d: 只显示重复的行

文本统计:wc (word count)
  -l:输出换行符统计数
  -w:输出单词统计数

  -c:输出字节统计数
  -L:输出最长的行的长度

字符处理命令:tr —— 转换或删除字符
  tr [OPTION]... SET1 [SET2]
  -d: 删除出现在字符集中的所有字符

 

命令历史
history 查看
  -c:清空命令历史
  -d OFFSET [n]: 删除指定位置的命令
  -w:保存命令历史至历史文件中

命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令;
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数;

 

 用户与用户组及其权限管理

用户管理

useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage

useradd,添加用户
  -c 描述
  -d 家目录
  -g 所属组
  -G 附属组
  -s 环境变量
  -u uid

例:useradd -c thisisauser -d /home -g whych -G whych -u 2017 -s /sbin/nologin

chage 修改账号密码有效期限
  -M 最大天数
  -m 最小天数

userdel 删除用户
  -r 同事删除用户的家目录

usermod,修改用户信息
  -c<备注>:修改用户帐号的备注文字;
  -d<登入目录>:修改用户登入时的目录;
  -e<有效期限>:修改帐号的有效期限;
  -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
  -g<群组>:修改用户所属的群组;
  -G<群组>;修改用户所属的附加群组;
  -l<帐号名称>:修改用户帐号名称;
  -L:锁定用户密码,使密码无效;
  -s<shell>:修改用户登入后所使用的shell;
  -u<uid>:修改用户ID;
  -U:解除密码锁定。

id:查看用户的帐号属性信息
  -u:显示用户id
  -g:显示组id
  -G:显示附加组
  -n:显示真实id

finger: 查看用户帐号信息
finger USERNAME

linux基础命令用法

 

chsh: 修改用户的默认shell

chfn:修改注释信息

 

组管理
groupadd, groupdel, groupmod, gpasswd

创建组:groupadd
groupadd
  -g GID
  -r:添加为系统组

groupmod
  -g GID
  -n GRPNAME

groupdel

gpasswd:为组设定密码


权限管理
chown, chgrp, chmod, umask

 

chown: 改变文件属主(只有管理员可以使用此命令)
chown USERNAME file,...
  -R: 修改目录及其内部文件的属主
  --reference=/path/to/somefile file,...

chown USERNAME:GRPNAME file,...
chown USERNAME.GRPNAME file,...

chgrp GRPNAME file,...
  -R:同上

chmod: 修改文件的权限
chmod +|- MODE file,...
  -R:同上

修改某类用户或某些类用户权限:
u,g,o,a
chmod 用户类别=MODE file,...

修改某类用户的某位或某些位权限:
u,g,o,a
chmod 用户类别+|-MODE file,...

 

特殊权限(suid、sgid、sticky)

一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置。

setuid: 使文件在执行阶段具有文件所有者的权限。

setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。

sticky bit: 该位可以理解为防删除位。一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件。

换种理解方法如下:

SUID:运行某程序时,相应进程的属主是程序文件本身的属主,而不是启动者。
SGID:运行某程序时,相应进程的属组是程序文件本身的属组,而不是启动者。
Sticky:在一个公共目录,每个都可以创建文件,删除,而其它人不能。

操作:
chmod u+s file — 为file加上setuid标志. (setuid 只对文件有效)
如果file本身有执行权限,则s显示小写,否则大写。

chmod g+s file — 为file目录加上setgid标志 (setgid 只对目录有效)
如果file本身有执行权限,则s显示小写,否则大写。

chmod o+t file — 为file文件加上sticky标志 (sticky只对文件有效)
如果file本身有执行权限,则t显示小写,否则大写。


权限位:SUID(4),SGID(2),STICKY(1)
000:

001:只有sticky

. . .:
111:suid+sgid+sticky(6)

chmod 3755 /tmp/test 此处是4位权限位。3就代表是sgid+sticky
所以经常看到的umask总是四位
umask 0022

文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限+1

umask 022

默认创建文件和目录的权限就是:
文件:666-022
目录:777-022

 

facl (filesystem access control list)

可以针对单一用户、单一文件或者目录来进行rwx的权限控制。如某一个文件,不让单一的某个用户访问。


setfacl :设置某个文件/目录的ACL设置项目
  -m:设置后续acl参数 

  -x:删除
  -R:递归设置

getfacl:
取得某个文件/目录的ACL设置项目

linux基础命令用法

linux基础命令用法

 

 

文件查找
locate
非实时,模糊匹配,查找是根据全系统文件数据进行的。
速度快

find
实时,精确,支持众多查找标准
遍历指定目录中的所有文件完成查找,速度慢。


-name 'FILENAME':对文件名作精确匹配
文件名通配:
*:任意长度的任意字符
?
[]
-iname 'FILENAME': 文件名匹配时不区分大小写
-regex PATTERN:基于正则表达式进行文件名匹配

-user USERNAME: 根据属主查找
-group GROUPNAME: 根据属组查找

-uid UID: 根据UID查找
-gid GID: 根据GID查找

-nouser:查找没有属主的文件
-nogroup: 查找没有属组的文件

-type
f:普通文件
d:目录
c:特殊字符文件
b:特殊块文件
l:符号链接
s:套接字

-size [+|-]
k
M
G

精确匹配:
-perm MODE
-MODE:任意以为匹配即满足条件
/MODE:文件权限能完全包含次MODE时才符合条件
find / -perm /222

组合条件
-a:and
-o:or
-not:

-mtime n 查找系统中最后n*24小时数据修改的文件
-ctime n 查找系统中最后n*24小时状态被改变的文件
-atime n 查找系统中最后n*24小时访问的文件


-mmin n 查找系统中最后n分钟数据修改的文件
-cmin n
-amin n

 

xargs与-exec

xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数。

# find  . -name test11.txt | xargs rm

-exec rm {} \;:{} 表示命令的参数即为所找到的文件,以;表示comman命令的结束。\是转义符。

# find  . -name test222.txt -exec rm {} \; 对每个匹配的文件执行一个单独的rm操作

 

登录信息命令

  w,who,last,lastb,lastlog

终端:
pty #:物理终端
tty #:虚拟终端
ttys #:串行终端
pts #:伪终端

w:显示已经登录的用户以及他们在做什么
who:显示已经登录的用户
last:显示 /var/log/wtmp文件用户登录历史及系统启动历史
  -n #:显示最近#次的历史

lastb:显示/var/log/btmp文件,显示用户错误的登录尝试
  -n #:显示最近#次的历史
lastlog:显示每一个用户最近一次的成功登录信息
  -u USERNAME:显示特定用户最近的登录信息

basename:
$0:执行脚本时的脚本路径及名称