常用Shell(Bash)命令(一)

沃弘图
2023-12-01

常用Shell(Bash)命令(一)



一、查看文件和目录

ls命令:列出文件名和目录

[root@guan ~]# pwd
/root
[root@guan ~]# ls -l
total 7044
-rw------- 1 root root    1437 Aug 25  2011 anaconda-ks.cfg
-rw-r--r-- 1 root root 7106560 Jan  7  2020 boot.dump
drwxr-xr-x 2 root root    4096 May 25  2012 Desktop
-rw-r--r-- 1 root root   51429 Aug 25  2011 install.log
-rw-r--r-- 1 root root    4010 Aug 25  2011 install.log.syslog
-rw------- 1 root root    9799 Apr  2  2020 mbox
[root@guan ~]#

每一列的字段的含义

第一个字符表示文件类型。
-:普通文件
d:目录
s:套接字文件
l:链接文件
第一列:文件权限。rwx对应read、write、excutable,-表示无权限。三组分别对应属主、属组和其他的执行权限
第二列:链接数
第三列:属主
第四列:属组
第五列:文件大小
第六列:文件最近一次被修改的时间
第七列:文件名

ls的使用格式

  ls [OPTION]... [FILE]...

常用的参数选项
-a:显示所有文件,包括隐藏文件;
-A:显示除.和…之外的所有文件;
-l:–long,长格式列表,即显示文件的详细属性信息;
-h:–human-readable:对文件大小单位换算,换算后结果可能会非精确值;
-d:查看目录自身而非其内部的文件列表;
-r:reverse,逆序显示;
-R:recursive,递归显示;

cat命令:显示文件内容

cat的使用格式

   cat  [OPTION] [FILE]...

常用的参数选项
-n:给显示的文本行编号;
-E:显示行结束符$;

[root@guan ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               rhel5464 localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.9.191  guan

less、more命令:分屏显示文件

用于一次翻阅一整屏文件的过滤器
less、more的使用格式

  less [FILE]...
  more [FILE]...

选项较多,建议使用man查看具体内容。以后使用多了再来补充常用选项。

head命令: 显示文件头部

用于打印指定输入的开头部分,默认打印指定输入的前10行。可以使用-n指定显示前N行。
head的使用格式

  head [OPTION]... [FILE]...

-n:接数字N表示显示前N行。接-N表示除去最后N行以外的所有行。

[root@guan ~]# head /etc/ssh/sshd_config 
#       $OpenBSD: sshd_config,v 1.73 2005/12/06 22:38:28 reyk Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
[root@guan ~]# 

tail命令:显示文件尾部

与head相反,默认显示文件最后10行
tail的使用格式

  tail [OPTION]... [FILE]...

-f:查看文件尾部内容结束后不退出,有其他人修改文件会立即显示新增的行。对监控日志文件非常实用。

[root@guan ~]# tail /etc/shadow
avahi-autoipd:!!:15210:0:99999:7:::
ntp:!!:15210:0:99999:7:::
xfs:!!:15210:0:99999:7:::
gdm:!!:15210:0:99999:7:::
sabayon:!!:15210:0:99999:7:::
oprofile:!!:15210:0:99999:7:::
wenyong:$1$STgRrF.3$de.Ivl2t3i9b27coebiG5.:17547:0:99999:7:::
mwuser:$1$tvcq.3Nt$CKhK36mVQwpNNZJm5mCqk.:17547:0:99999:7:::
logop:$1$wSXA9ZSb$h0xv60MXkukfITBd275zc.:17547:0:99999:7:::
el:!!:18241:0:99999:7:::
[root@guan ~]# 

file命令:查看文件类型

file的使用格式

  file  [  -bchikLnNprsvz  ] [ -f namefile ] [ -F separator ] [ -m magicfiles ] file ...
  file -C [ -m magicfile ]

-i:可以MIME类型的格式显示文件类型
-N:输出的列队可以以文件名之后无空白填充的形式显示

[root@guan ~]# file /etc/
/etc/: directory
[root@guan ~]# file /etc/inittab 
/etc/inittab: ASCII English text
[root@guan ~]# file /etc/init.d/network 
/etc/init.d/network: Bourne-Again shell script text executable

wc命令:查看文件统计信息(Word count)

wc的使用格式

   wc [OPTION]... [FILE]...

-l:只统计文件的行数
-w:只统计文件的单词数
-c:只统计文件的字节数
-L:统计文件中最长的行的长度

[root@guan ~]# wc /etc/inittab 
 53  229 1666 /etc/inittab
 第一个数字:表示行数
 第二个数字:表示单词数
 第三个数字:表示字节数

find命令:查找文件或目录

  find [-H] [-L] [-P] [path...] [expression]
[root@guan ~]# find / -name ifconfig
/sbin/ifconfig

-name:根据文件名查找
-iname:根据文件名查找,忽略大小写
 支持glob风格的通配符:*,?,[],[^]
根据文件类型查找:
 -type d:目录文件
 -type f:普通文件
  -type l:符号链接文件
  -type b:块设备文件
  -type c:字符设备文件
  -type p:管道文件
  -type s:套接字文件
    组合:
  与:-a,默认组合逻辑状态
  或:-o,
  非:-not,!
根据文件从属关系查找
  -user USERNAME:查找属主为指定用户的所有文件
 -group GROUPNAME:查找属组为指定组的所有文件
 -uid UID:查找属主为指定UID的所有文件
 -gid GID:查找属组为指定GID的所有文件
 -nouser:查找没有属主的文件
 -nogroup:查找没有属组的文件
根据文件的大小查找:“#”表示变量
 -size [+ | -] #UNIT
  常用单位:k,m,g
   #UNIT:(#-1,#]
   -#UNIT:[0,#-1]
   +#UNIT:(#,∞)
根据时间戳查找:“#”表示变量
 以“天”为单位
  -atime [+ | -] #
   #:[#,#-1)
   -#:(#,0]
   +#:(∞,#-1)
   -mtime
   -ctime
 以“分钟”为单位
  -amin
  -mmin
  -cmin
根据权限查找:
 -perm [/ | -]mode
  mode:精确权限匹配
  /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足
   9位权限之间存在“或”关系
  -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足
   9位权限之间存在“与”关系

文件大小、时间、权限这几个查找条件不容易理解,要反复举例测试搞清楚如何实现自己想要的结果。
find要重点掌握用法

 类似资料: