2015-04-02 08:37:46 a158337 阅读数 336

取的文件到目录名:dirname  路径

取得文件的文件名  basename 路径

文件内容到查阅到方法:

cat:查看文件的所有内容

    -A 相当与 参数vET

    -b列出行号,仅针对非空白行做行号显示

    -E 将结尾的断行字符$显示出来

    -T tab按键以 ^I 显示

    -v列出一切看不见到字符

tac 输出方向和cat相反

nl:添加行号打印

more

less

head: 打印前多少行

tail:打印尾部多少行

打印11到20行

head -20 file | tail -10 file

od :二进制打印

touch可以创建文件和改变文件到时间

-a 修改访问时间

-c修改文件时间,若 文件不存在则不创建新文件

-d到后面可以接欲修改后到日期而不用目前日期。

-m 修改mtime :文件到内容改变的时间,ctime是文件到权限和属性改变到时间,atime文件内容被读取时会更新到时间,比如cat 文件

-t 后面可以接欲修改的时间而不是目前时间,格式为【YYMMDDhhmm】

如果touch 后面加的文件存在,会更新时间为现在,但是如果不存在就会创建一个空的文件




文件到默认权限umask:目前用户在创建文件或者目录的权限默认值,可输入umask 直接查看,也可输入umask -S 查看。umask的分数是“默认值需要减掉

的权限,不是777满值。比如要拿掉写权限就输入2,读输入4,执行输入1.但是计算到时候不能用数字直接相减,会出错

比如:-rw-rw-rw -(-------wx)=-rw-rw-r-- 但是数字直接减去到话,得到到是663 不正确。应该进行到是

110

011 掩码,为1就为0,为0就不变

------

100

直接用符号减法运算会更直观


文件到隐藏属性

chattr 

chattr [ -RVf ] [ -v version ] [ mode ] files...  mode= +-=[acdeijstuADST].

几个功能个强大的:

-a 文件只能增加数据不能删除和修改数据,root可以设置

-i:文件无法被删除,改名,设置连接也无法写入或添加数据。

-s 文件删除,完全删除

-u文件删除,可以找回

-c 自动将文件压缩,读取的时候自动解压缩

文件的特殊权限:SUID SGID SBIT


SUID权限仅仅对二进制程序有效,

执行者需要对改程序具有x的可执行权限

权限在执行该程序的过程中有效

执行者将具有该程序所有者的权限


SGID

SUID权限仅仅对二进制程序有效,

执行者需要对改程序具有x的可执行权限

执行者在执行过程中将会获得该程序用户组到支持


SBIT

当用户针对目录具有写入权限时:用户在该目录下创建文件或者目录到时候,仅有自己和root才有权利删除该文件。如果A目录加上了这个权限。A只能够针对

自己创建的文件或目录进行删除,重命名,移动操作。

设置方法很简单 4SUID 2 SGID 1 SBIT 这三个。把原来chmod xxxx file 第一个x表示到数字就是这三个特殊权限。也可用u+s g+s o+t分别设置

当文件的权限,出现了大写字母表示是空的


file可以查看文件的类型:which可以查找可以执行文件到路径,他是根据PATH查的。

whereis  和locate 来查找特定的文件。

whereis

-b 二进制

-m 只找在说明文件manual 下的文件

-s 只找source源文件

-u 不在上述三个选项的特殊文件

这两个是通过数据库查找到,速度快,新的文件可能会查不到,可以更新数据库,updatedb

 

find

find 【PATH】 【option】 【action】

1.时间参数


-mtime,-atime,-ctime

以mtime为例子

-mtime n n天之前一天之内更改过的文件

-mtime +n n天之前不含n天本身被改过的文件

-mtime -n n天之内被更改过的文件


分别两个文件之间的新旧

find filename1 -newer -filename2

2用户名和用户组有关的参数

-uid n:n是数字,在/etc/passwd里面和帐号有对应

-gid n 用户组id,/etc/group

-user name

-group name

-nouser 所有者不存在的

-nogroup 用户组不存在的


3.文件到权限和名称相关的参数

-name filename

-szie 【+-size】

-type TYPPE 文件类型,单个字母,如d就是目录

-perm mode 文件的权限相等

-perm -mode 查找的文件的权限必须包含mode

-perm +mode  查找权限包含任一mode权限


4.其他可以进行的操作

-exec command

例如find /perm +7000 -exec ls -l { } \; exec后面的命令不支持命令别名

解释:{}括号是表示 find命令执行到结果放在这里,ls -l 是对这个的操作find 额外的命令是 -exec开始,到 \:结束,因为;在bash环境下有特殊的含义。所以利用反斜杠转义。












































2016-07-12 16:41:09 cindywry 阅读数 904


最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。

  DIR结构体类似于FILE,是一个内部结构,以下几个函数用这个内部结构保存当前正在被读取的目录的有关信息(摘自《UNIX环境高级编程(第二版)》)。函数 DIR *opendir(const char *pathname),即打开文件目录,返回的就是指向DIR结构体的指针,而该指针由以下几个函数使用:

首先说说DIR这一结构体,以下为DIR结构体的定义:

  1. struct __dirstream
  2.    {
  3.     void *__fd;
  4.     char *__data;
  5.     int __entry_data;
  6.     char *__ptr;
  7.     int __entry_ptr;
  8.     size_t __allocation;
  9.     size_t __size;
  10.     __libc_lock_define (, __lock)
  11.    };
  12.  
  13. typedef struct __dirstream DIR;

 

DIR结构体类似于FILE,是一个内部结构,以下几个函数用这个内部结构保存当前正在被读取的目录的有关信息(摘自UNIX环境高级编程(第二版)》)。函数 DIR*opendir(const char *pathname),即打开文件目录,返回的就是指向DIR结构体的指针,而该指针由以下几个函数使用:

 

  1. struct dirent *readdir(DIR *dp);
  2.  
  3. void rewinddir(DIR *dp);
  4.  
  5. int closedir(DIR *dp);
  6.  
  7. long telldir(DIR *dp);
  8.  
  9. void seekdir(DIR *dp,long loc);

 

关于DIR结构,我们知道这么多就可以了,没必要去再去研究他的结构成员。

接着是dirent结构体,首先我们要弄清楚目录文件(directory file)的概念:这种文件包含了其他文件的名字以及指向与这些文件有关的信息的指针(摘自UNIX环境高级编程(第二版)》)。从定义能够看出,dirent不仅仅指向目录,还指向目录中的具体文件,readdir函数同样也读取目录下的文件,这就是证据。以下为dirent结构体的定义:

 

  1. struct dirent   //关于文件的信息
  2. {
  3.   long d_ino; /* inode number 索引节点号 */
  4.  
  5.     off_t d_off; /* offset to this dirent 在目录文件中的偏移 */
  6.  
  7.     unsigned short d_reclen; /* length of this d_name 文件名长 */
  8.  
  9.     unsigned char d_type; /* the type of d_name 文件类型 */
  10.  
  11.     char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */
  12. }

 

从上述定义也能够看出来,dirent结构体存储的关于文件的信息很少,所以dirent同样也是起着一个索引的作用,如果想获得类似ls -l那种效果的文件信息,必须要靠stat函数了。

通过readdir函数读取到的文件名存储在结构体direntd_name成员中,而函数

int stat(const char *file_name, struct stat*buf);

的作用就是获取文件名为d_name的文件的详细信息,存储在stat结构体中。以下为stat结构体的定义:

 

  1. struct stat {
  2.  
  3.         mode_t     st_mode;       //文件访问权限
  4.  
  5.         ino_t      st_ino;       //索引节点号
  6.  
  7.         dev_t      st_dev;        //文件使用的设备号
  8.  
  9.         dev_t      st_rdev;       //设备文件的设备号
  10.  
  11.         nlink_t    st_nlink;      //文件的硬连接数
  12.  
  13.         uid_t      st_uid;        //所有者用户识别号
  14.  
  15.         gid_t      st_gid;        //组识别号
  16.  
  17.         off_t      st_size;       //以字节为单位的文件容量
  18.  
  19.         time_t     st_atime;      //最后一次访问该文件的时间
  20.  
  21.         time_t     st_mtime;      //最后一次修改该文件的时间
  22.  
  23.         time_t     st_ctime;      //最后一次改变该文件状态的时间
  24.  
  25.         blksize_t st_blksize;    //包含该文件的磁盘块的大小
  26.  
  27.         blkcnt_t   st_blocks;     //该文件所占的磁盘块
  28.  
  29.       };

 

这个记录的信息就很详细了吧,呵呵。

后,总结一下,想要获取某目录下(比如a目下)b文件的详细信息,我们应该怎样做?

首先,我们使用opendir函数打开目录a,返回指向目录aDIR结构体c

接着,我们调用readdir( c)函数读取目录a下所有文件(包括目录),返回指向目录a下所有文件dirent结构体d

然后,我们遍历d,调用statd->name,stat *e)来获取每个文件的详细信息,存储在stat结构体e中。

总体就是这样一种逐步细化的过程,在这一过程中,三种结构体扮演着不同的角色。

 

2014-11-27 10:25:52 yanjun008 阅读数 4033

问题描述:

程序中用了一段代码动态在应用根目录下,动态创建一个文件夹,用于存储临时文件,代码如下:

InputStream in=null;
       File file = new File(request.getRealPath("/")+ File.separator+"report" + File.separator+"files" + File.separator + filename);
       in=new FileInputStream(file);
       int i;
       while ((i=in.read())!=-1) {
           response.getOutputStream().write(i);
       }
       in.close();

在Windows服务器运行正常,但在Lunix服务器下,却无法生成文件夹。

原因分析:

request.getRealPath("/") 在window获取的是服务器的根目录,结尾包含分隔符,

如E:\apache-tomcat-7.0.52\webapps\zj\

在Linux下获取的不含分隔符,如:

/home/ecm/server1/apache-tomcat-7.0.52/webapps

 建议:

 request.getRealPath() 方法已经不推荐使用,推荐使用 request.getSession().getServletContext().getRealPath("/");

2019-10-13 00:40:00 Chikin_Cheng 阅读数 1

一、文件相关

1. 文件管理

>
创建空文件、覆盖文件内容、标准输出重定向

>>
创建空文件(更为安全的做法)、标准输出追加重定向

basename
去掉路径,只取文件名

cat
查看文件内容

cat -A
展开所有

cd
默认切换到用户家目录

cd /
切换到根目录

cd ~
切换到家目录,也可以指定其他用户家目录

cd .
切换到当前目录

cd ..
切换到父目录

cd -
切换到系统所记录上次所在的目录

chattr
设定文件特定属性

chattr +/-i
不能删除、改名、更改(包括管理员)

chattr +/-a
只能追加内容(包括管理员)

chattr +/-A
不修改读时间

chgrp
修改文件所有组

chgrp -R
递归修改

chmod
修改文件权限

chmod u+rwx,g-rwx,o=rwx FILE
权限法修改文件权限,=后不带权限为清空权限

chmod a+/-/=rwx
数字法修改文件权限,修改所有人对文件的权限,a可缺省

chmod --reference=SOURCE_FILE DIRECTORY_FILE
参考指定文件的权限设置其他文件的权限

chmod 777 FILE
数字法修改文件权限

chmod -R
递归修改

chmod -R +X
只对目录递归加执行权限

chmod u+/-s
模式法授权SUID权限

chmod 4???
数字法授权SUID权限

chmod u+/-s
模式法授权SUID权限

chmod 4???
数字法授权SUID权限

chmod g+/-s
模式法授权SGID权限

chmod 2???
数字法授权SGID权限

chmod o+/-t
模式法授权Sticky权限

chmod 1???
数字法授权Sticky权限

chown
修改文件所有者

chown -R
递归修改

chown USERNAME:GROUP
修改文件所有者和所有组

chown USERNAME.GROUP
修改文件所有者和所有组

chown :GROUP
修改文件所有组

chown USERNAME:
修改文件所有者和所有组

cp
复制文件或目录

cp -i
提示是否覆盖

cp -r
递归复制目录及内部的所有内容

cp -R
递归复制目录及内部的所有内容

\cp
原始cp,直接覆盖不提示

cp -f
先删除目标文件,再复制源文件

cp -d
不复制原文件,只复制链接

cp -p
保留权限、所有者和时间属性,等同于--preserv=mode,ownership,timestamp

cp -a
归档,相当于-dR --preserv=all,递归并保留链接及其他所有属性

cp -v
显示过程

cp -u
只复制源比目标更新文件或目标不存在的文件

cp --backup=
目标存在,覆盖前先备份加数字后缀

cp Source_File{,.bak}
配合文件通配符备份文件

dd

可用于检测系统读写速度。

读取、转换并输出数据

if=
从指定文件读数据

of=
指定输出文件

bs=
指定块大小

count=
指定块数量

dirname
只取路径,去掉文件名

echo $OLDPWD
查看系统所记录上次所在的目录

echo $PWD
查看系统所记录当前所在的目录

echo file{1..999999999} | xargs rm
带着大量参数删除文件

echo File{1..999999999} | xargs touch
带着大量参数创建文件

exec Number<>File
手工指定文件描述符

exec Number<>&-
删除指定文件描述符

file
判断文件类型

file -b
列出文件辨识结果时,不显示文件名称

file -f File_List.txt
批量判断文件列表中的文件的类型

file -F
指定分隔符,默认为:

file -L
查看对应软链接对应文件的文件类型

getfacl
查看指定文件或目录的访问控制列表设置

getfacl FILE/DIRECTORY | setfacl --set-file=- NEW_FILE/DIRECTORY
复制其他文件的ACL权限给指定文件

getfacl -R FILE > ACL.txt
备份ACL

getfacl -p
不去除路径前的/

hexdump
查看2进制文件的16进制编码

hexdump -C
每个字节显示为16进制和相应的ASCII字符

l*
只显示当前目录的所有隐藏文件(包括子目录和父目录)

ll
查看文件信息

ll --time=
查看文件的atime(访问内容时间)、mtime(修改内容时间)和ctime(改变属性时间)

ll /proc/$$fd
查看被打开的文件所对应的文件描述符

ln
创建硬链接

ln -s
创建软链接(符号链接)

lpr
将一个或多个文件放入打印队列等待打印

lpr -P
将资料送至指定的打印机

ls
查看目录中文件列表

ls -a
显示所有文件(包括隐藏文件)

ls -A
显示所有文件(不包括.和..)

ls -R
目录递归

ls -l
显示额外的信息

ls -ld
显示指定目录额外的信息

ls -1
按照数字、字母顺序分行显示

ls -S
从大到小排序显示

ls -r
倒序显示

ls -t
按文件的mtime(修改时间)从新到旧排序显示

ls -u
配合-t选项,按照atime从新到旧排序显示

ls -c
配合-t选项,按照ctime从新到旧排序显示

ls -U
按目录存放顺序显示

ls -X
按文件后缀排序

ls -d */
只显示目录下的文件夹,不显示文件

ls -d .*
只显示当前目录的所有隐藏文件(包括子目录和父目录)

ls -R .[^.]*
递归查看当前目录下所有隐藏文件(包括子目录内)

ls -d .[^.]*
只显示当前目录下的隐藏文件(不包括父目录)

ls -a .[^.]*
只显示当前目录下的隐藏文件(不包括父目录)

ls -i
查看文件节点编号(inode)

lsattr
显示文件特定属性

lsof | grep deleted
查看当前系统中被删除但还未释放空间的文件

pwd
查看当前工作目录

pwd -P
显示真实路径

readlink
查看软链接对应的原始文件

rename
批量修改文件名

rename Name_Old Name_New Name
Name_New可以为空,表示删除旧文件名的参数。

rm
删除文件、目录

rm -f
强制删除

rm -i
交互式

rm -r
递归

rm -rf /*
删除根目录下所有数据

rm -rf / --no-preserve-root
删除根目录下所有数据

setfacl
访问控制列表

setfacl -m u:USERNAME:rwx FILE/DIRECTORY
为多用户或组的文件和目录赋予指定用户的访问权限,如果rwx为空或为0则代表没有访问权限

setfacl -m g:GROUP:rwx FILE/DIRECTORY
为多用户或组的文件和目录赋予指定组的访问权限,如果rwx为空或为0则代表没有访问权限

setfacl -x u:USERNAME FILE/DIRECTORY
删除指定用户对文件和目录的访问权限

setfacl -x g:GROUP FILE/DIRECTORY
删除指定组对文件和目录的访问权限

setfacl -m mask::rwx FILE/DIRECTORY
设置除所有者和other的之外的人和组的最大权限

setfacl -m d:u:USERNAME/g:GROUP:rwx DIRECTORY
设置指定目录下新建文件的默认ACL权限

setfacl -b FILE/DIRECTORY
清空指定文件、目录所有ACL权限

setfacl -k FILE/DIRECTORY
删除指定文件、目录默认ACL权限

setfacl -R DIRECTORY
递归设置ACL权限

setfacl -M ACL_FILE.txt FILE/DIRECTORY
调用ACL文件设置文件、目录的访问权限

setfacl -X ACL_FILE.txt FILE/DIRECTORY
调用ACL文件取消设置文件、目录的访问权限

getfacl FILE/DIRECTORY | setfacl --set-file=- NEW_FILE/DIRECTORY
复制其他文件的ACL权限给指定文件

setfacl --set u::rwx,u:USERNAME,g::rwx,o::rwx- FILE
清空文件原有ACL权限,再用新ACL权限替换

setfacl -R --set-file=acl.txt FILE
恢复ACL

setfacl --restore acl.txt FILE
恢复ACL

stat
查看文件的atime(访问内容时间)、mtime(修改内容时间)和ctime(改变属性时间)

mkdir
创建目录

mkdir -p
存在不报错,自动创建所需的各目录

mkdir -v
显示创建过程

mkdir -m
指定权限

mv
移动或重命名文件、目录

mv -i
交互式操作

mv -f
强制

mv -t
先指定目的目录,再指定源

rmdir
删除空目录

rmdir -p
递归删除父空目录

rmdir -v
显示删除过程

set -C
禁止将内容覆盖已有文件,但可追加

set +C
允许覆盖

shred
彻底删除文件数据

shred -z
以0进行覆盖

shred -n
指定次数

shred -v
查看过程

shred -u
处理完毕后删除

touch
创建空文件或刷新文件时间

touch -a
仅刷新atime和ctime

touch -m
仅刷新mtime和ctime

touch -t
指定atime和mtime的时间戳

touch -c
如果文件不存在,则不创建

tree
显示目录树

tree -L
指定显示的层级

tree -d
只显示目录

tree -P
匹配正则表达式

umask
设置、显示文件、目录初始权限(取消对应的权限),普通用户默认为0022,管理员默认为0002

umask u=rwx,g=rwx=o=rwx
以权限法设置初始权限

umask -p
显示初始权限(带命令)

umask -S
以权限法显示初始权限

2. 字符处理

2>
标准错误输出重定向

2>>
标准错误输出追加重定向

>|
强制覆盖

&>
把所有输出重定向到文件

&>>
把所有输出重定向追加到文件

<
标准输入重定向

<<终止符
多行重导向

|
管道符,把一个命令的标准输出发送给另一个命令作为标准输入

|&
把一个命令的标准输出和标准错误发送给另一个命令,CentOS5及以前的版本不支持

-
将管道符前的命令传送给管道符后的命令,直接代替前一个命令的标准输出

chfn
添加/etc/passwd中指定用户的描述信息

echo $RANDOM
生成0~32767的随机数

finger
查看/etc/passwd中指定用户的描述信息

gedit
图形化文本编辑工具

getent group
查看/etc/group内容

getent group GROUP
只显示/etc/group中指定组的行

getent gshadow
查看/etc/gshadow内容

getent gshadow GROUP
只显示/etc/gshadow中指定组的行

getent passwd
查看/etc/passwd内容

getent passwd USERNAME
只显示/etc/passwd中指定用户的行

getent shadow
查看/etc/shadow内容

getent shadow USERNAME
只显示/etc/shadown中指定用户的行

grpck
检查/etc/group内容和格式的完整性并补充说明

mail
收邮件

mail -s SUBJECT USER
指定邮件的主题

.
结束邮件正文编辑

nano
字符文本编辑工具

openssl rand -base64 NUMBER
生成指定个数的随机字符

pwck
检查/etc/passwd内容和格式的完整性并补充说明

pwconv
开启用户的投影密码,/etc/passwd不显示用户密码

pwunconv
关闭用户投影密码,把用户密码从/etc/shadow,重回存到/etc/passwd

reset
重置字符,遇到乱码时可以执行该命令重置系统字符

seq
生成从n到N的数字,默认从1开始

seq -s
指定分隔符,默认为回车

tee
重定向到多个目标

tee -a
追加

tr
转换字符

tr -ctr -C
取反

tr -d
删除

tr -s
压缩连续重复的字符

tr -t
使字符串1的长度和字符串2的长度一致

tr --help
帮助

vigr
带语法检查功能编辑/etc/group

vipw
带语法检查功能编辑/etc/passwd

3. 备份压缩

tar
打包或解包

4. 文件传输

scp FILE IP_ADDRESS:/DIRECTORY
Linux之间复制文件和目录,默认复制到root家目录

二、系统相关

1. 系统管理

.
读取文件内容存放到内存

alias
查看所有命令别名的列表

alias NAME=‘VALUE’
临时定义命令别名

cat /etc/centos-release
查看发行版本

cat /etc/shells
显示当前系统所有shell类型

cat /proc/cpu
查看cpu信息

cat /proc/meminfo
查看内存信息

clock
修改、查看硬件时钟时间

clock -s
以硬件时钟为准,校正系统时钟

clock -w
以系统时钟为准, 校正硬件时钟

command
执行同名命令别名的原始命令

date
修改、查看系统时钟时间

date +%F
以年-月-日格式显示

date +%T
以时:分:秒格式显示

date -d
以英文、字符串查找日期

date -s
设置时间

date --help
帮助用法

echo
显示字符

echo -e
启用\字符的解释功能

echo $HISTFILE
查看命令行历史文件

echo $HISTISIZE
查看命令行历史最多存储数

echo $LANG
查看当前系统语言编码

echo $PATH
查看环境变量

echo $PS1
查看当前命令提示符格式

echo $SHELL
查看当前环境使用的shell类型

echo $HOSTNAE
查看主机名

enable
查看运行、启动内部命令

enable -n
查看禁用、禁用内部命令

exit
退出当前终端

free
查看内存信息

halt
关机(不断电)

hash
显示缓存到内存的命令

hash -d
清除指定命令的缓存

hash -l
显示命令缓存(包括命令的路径)

hash -p PATH NAME
将命令路径起别名

hash -t
显示指定命令的路径

hash -r
清楚所有缓存

history
命令行历史

!NUMBER
重复执行指定历史命令

history -c
清除内存中的命令历史

history -d
删除指定序号的命令历史

history -a
把内存中的命令历史写入到命令历史文件

history -r
把命令历史文件内容读到内存中的命令历史

history -w
把命令历史写入到命令历史文件

history -n
把命令历史文件中未读过的历史命令读到内存

history -p
执行命令不记录到命令历史

history -s
把命令写入到命令历史,但不执行

hostname
查看主机名

init 0
关机

init 3
切换字符模式

init 5
切换图形界面

killall
杀死进程

ldd
查看命令所调用的库文件

logout
退出当前终端

lsb_release -a
CentOS6查看操作系统版本

ltrace
查看进程的库调用(library)

makewhatis
CentOS6制作whatis数据库

mandb
CentOS7制作whatis数据库

ntpdate
指定时钟服务器

poweroff
关机(即关机也断电)

PS1=
临时修改命令提示符格式

reboot
重启系统

reboot -f
强制,不调用shutdown

reboot -p
切断电源,关机

rpm -qa | wc -l
查看系统安装软件的个数

shutdown
关机

shutdown -r
重启

shutdown -h
关机(不断电)

shutdown -c
取消目前已经进行中的关机动作

shutdown TIME [MESSAGE]
设置关机时间,默认+1;now(立即,相当于+0);hh:mm(绝对时间)

sosreport
收集系统日志信息

source
读取文件内容存放到内存

startx
启动图形界面功能

strace
查看进程的系统调用(system call)

timedatectl
CentOS7查看当前系统时区信息

timedatectl status
查看当前系统时区信息

timedatectl list-timezones
查看当前系统所有时区

timedatectl set-timezone
调整系统时区

type
查看命令类型

tzselect
CentOS6调整系统时区

unalias
取消命令别名

unalias -a
取消所有命令别名

uname -r
查看内核版本

whereis
查看外部命令的路径及其帮助文档路径

which
查看指定外部命令的最近路径

which --skip-alias
只显示指定外部命令的最近路径

which -a
查看指定外部命令的所有路径

xargs
给命令传递参数的一个过滤器,也是组合多个命令的一个工具

2. 磁盘管理

cd /misc/cd
光盘自动挂载

df
查看磁盘分区的使用情况

df -i
查看磁盘分区的节点编号使用情况

du -sh /*
查看所有一级目录大小

echo '- - -' > /sys/class/scsi_host/host2/scan
磁盘自动扫描

fdisk -l
查看磁盘分区

lsblk
查看块设备信息

ls /dev/sd*
查看分区

runlevel
查看当前工作模式

tune2fs -o acl SYSTEM_PARTITION
mount -o acl SYSTEM_PARTITION MOUNT_POINT
CentOS6设置指定分区支持ACL功能

3. 网络管理

ifconfig
查看网卡信息

ip a
查看网卡信息

ping
测试网络连通性

rz
windows发送文件到Linux

screen
创建多重视窗管理程序会话

screen -S
自定义创建新会话

screen -x
加入指定会话

screen -ls
显示所有已打开的会话

screen -r
恢复指定会话

sz
Linux发送文件到Windows

4. 用户管理

adduser
创建用户

authconfig --passalgo= --update
修改用户密码的加密算法

--passalgo=md5
--passalgo=sha1
--passalgo=sha224
--passalgo=sha256
--passalgo=sha384
--passalgo=sha512

chage
交互式修改指定用户的密码的设置

chage -d 0
指定用户密码立即过期

chage -l
查看指定用户的密码策略

chage -E
设置用户密码过期时间

chage -I
设置用户密码宽限期

chage -m
设置用户密码最短有效期

chage -M
设置用户密码最长有效期

chage -W
提前多少天告警

chpasswd
批量修改用户密码

echo PASSWORD.TXT | chpasswd
根据用户密码列表文件批量修改用户密码

chsh -s SHELL USERNAME
修改指定用户的shell类型

chvt [1~6]
切换虚拟终端界面

echo $USER
查看用户名

echo PASSWORD | passwd --stdin USERNAME
通过标准输出接受用户密码

groupadd
创建用户组

groupadd
创建用户组

groupadd -g
指定GID

groupadd -r
创建系统组

groupdel
删除组

groupmems
更改、查看组成员

groupmems -g
指定组

groupmems -a
指定用户加入组

groupmems -d
从组中删除用户

groupmems -p
从组中清楚所有成员

groupmems -l
显示组成员列表

groupmod
修改组属性

groupmod -n
修改组名

groupmod -g
修改组id

groups
查看用户所属组列表

gpasswd
修改、增加用户组口令

gpasswd -a USERNAME
将指定用户添加到指定组中

gpasswd -d USERNAME
从指定组中移除指定用户

gpasswd -A USERNAME1,USERNAME2,……
设置有管理权限的用户列表

id
判断用户是否存在,查看用户id、组id、组列表、安全上下文

id -u
只显示用户id

id -g
只显示用户主组id

id -G
只显示用户附加组id

id -n
需要配合-u(只显示用户名)、-g(只显示用户主组名)、-G(只显示用户附加组名)使用

newgrp
临时切换用户主组

newusers FILE
根据用户列表文件批量创建用户

passwd
修改用户密码

passwd -e
强制用户下次登录修改密码

passwd -l
锁定指定用户

passwd -d
删除指定用户密码

passwd -u
解锁指定用户

passwd -f
强制操作

passwd -n
指定最短使用期限

passwd -x
指定最大使用期限

passwd -i
设置用户宽限期

passwd -w
提前多少天开始告警

passwd --stdin
通过标准输出接受用户密码

tty
查看当前所在虚拟终端

useradd
创建用户

useradd -N
创建用户时不创建同名主组,该用户默认加入组ID为100(/etc/default/useradd所指定)的users组

useradd -u
创建用户并手工指定用户UID时不检查UID的唯一性

useradd -uo
创建用户时手工指定UID

useradd -g
创建用户时手工指定用户主组(组名、GID)

useradd -c
创建用户时手工指定用户的注释信息

useradd -d
创建用户时手工指定用户家目录路径(必须不存在)

useradd -s
创建用户时手工指定用户的shell类型

useradd -r
创建系统用户(不创建家目录和邮箱)

useradd -m
创建系统用户时创建家目录

useradd -M
创建普通用户时不创建家目录

useradd -G
创建用户时指定附加组(必须存在)

useradd -D
显示/etc/default/useradd内容( 新用户默认设置)

useradd -D -b
修改/etc/default/useradd中所设置的默认shell类型

useradd -D -s
修改/etc/default/useradd中所设置的默认家目录

useradd -D -g
修改/etc/default/useradd中所设置的默认主组

userdel
删除用户

userdel -r
删除用户并删除其家目录及邮箱目录

userdel -f
强制删除

usermod
用户属性修改

usermod -L
用户加锁,/etc/shadow密码栏增加!,无法登录系统,但可以通过进行用户切换

usermod -U
CentOS5用户解锁,/etc/shadow密码栏删除!,需要输入两次才能真正解锁,CentOS6和CentOS7无法解锁

usermod -u
修改用户UID

usermod -g
修改用户主组

usermod -G
修改用户附加组

usermod -aG
追加用户附加组

usermod -G ""
引号内为空,取消用户所有附加组

usermod -s
修改用户shell类型

usermod -s
修改用户描述信息

usermod -s
修改用户shell类型

usermod -dm
自动创建用户新家目录并移动原家目录数据

usermod -l NEWNAME OLDNAME
修改用户名

usermod -e YYYY-mm-dd
指定用户账号过期时间

usermod -f
指定用户账号宽限期,/etc/shadow倒数第三栏

w
显示当前所以的登录会话及所做的操作

who
查看当前所有的登录会话信息

whoami
显示当前用户名

who am i
显示当前用户的登录会话信息

su
切换用户,不完全切换,也称非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录

su -
登录式切换,完全切换,会读取目标用户的配置文件,切换至家目录,默认切换为root管理员

su - root -c 'CMD'
使用root管理员身份执行指定命令(用单引号括起来)

三、其他

1. 帮助

help
查看内部命令列表及帮助用法
info
帮助手册

man
帮助手册

man -f
查看命令简要说明

man -a
列出所有章节

man -w
查看帮助文件的路径

man bash
所有内部命令帮助手册

man 7 glob
文件通配符帮助

/
搜索关键字

whatis
查看命令简要说明及对应man帮助章节

2. 杂

bc
计算器

ibase=
输入2、8、10、16进制数

obase=
输出2、8、10、16进制数

quit
退出

cal
查看月历

cal -y
查看整年月历

clear
清屏

yes
不断输入y

3. 组合按键

Ctrl+a+d
剥离当前screen会话

Ctrl+Alt+F[1~6]
切换虚拟终端界面

Ctrl+c
取消和结束命令执行(比较强硬)

Ctrl+d
取消和结束命令执行
退出当前终端

Ctrl+g
从命令行历史搜索模式退出

Ctrl+l
清屏

Ctrl+q
允许屏幕输出

Ctrl+r
在命令行历史中搜索命令

Ctrl+s
阻止屏幕输出,锁定

Ctrl+z
挂起命令

Shift+PgUp
向上翻页

Shift+PgDn
向下翻页

Tab*2
补全

四、文件通配符

*
匹配零个或多个字符

?
匹配任何单个字符

~
当前用户家目录

~+
当前工作目录

~-
系统所记录上次所在的目录

[0-9]
匹配数字范围

[a-z]
字母

a、A、……、z、Z

[A-Z]
字母

A、b、……、z、Z

[ABCD]
匹配列表中的任何的一个字符

[^ABCD]
匹配列表中的所有字符以外的字符

[:digit:]
任意数字,相当于0-9

[:lower:]
任意小写字母

[:upper:]
任意大写字母

[:alpha:]
任意大小写字母

[:alnum:]
任意数字或字母

[:blank:]
水平空白字符

[:space:]
水平或垂直空白字符

[:punct:]
标点符号

[:print:]
可打印字符

:cntrl:
控制(非打印)字符

[:graph:]
图形字符

[:xdigit:]
十六进制字符

2019-10-30 17:12:32 Chikin_Cheng 阅读数 24

一、文件相关

1. 文件操作

>
创建空文件、覆盖文件内容、标准输出重定向

>>
创建空文件(更为安全的做法)、标准输出追加重定向

basename
去掉路径,只取文件名

bash -n

检查脚本中的语法错误

bash -x

调试执行,查看执行过程

cd
默认切换到用户家目录

cd /
切换到根目录

cd ~
切换到家目录,也可以指定其他用户家目录

cd .
切换到当前目录

cd ..
切换到父目录

cd -
切换到系统所记录上次所在的目录

chattr
设定文件特定属性

chattr +/-i
不能删除、改名、更改(包括管理员)

chattr +/-a
只能追加内容(包括管理员)

chattr +/-A
不修改读时间

chgrp
修改文件所有组

chgrp -R
递归修改

chmod
修改文件权限

chmod u+rwx,g-rwx,o=rwx FILE
权限法修改文件权限,=后不带权限为清空权限

chmod a+/-/=rwx
数字法修改文件权限,修改所有人对文件的权限,a可缺省

chmod --reference=SOURCE_FILE DIRECTORY_FILE
参考指定文件的权限设置其他文件的权限

chmod 777 FILE
数字法修改文件权限

chmod -R
递归修改

chmod -R +X
只对目录递归加执行权限

chmod u+/-s
模式法授权SUID权限

chmod 4???
数字法授权SUID权限

chmod u+/-s
模式法授权SUID权限

chmod 4???
数字法授权SUID权限

chmod g+/-s
模式法授权SGID权限

chmod 2???
数字法授权SGID权限

chmod o+/-t
模式法授权Sticky权限

chmod 1???
数字法授权Sticky权限

chown
修改文件所有者

chown -R
递归修改

chown USERNAME:GROUP
修改文件所有者和所有组

chown USERNAME.GROUP
修改文件所有者和所有组

chown :GROUP
修改文件所有组

chown USERNAME:
修改文件所有者和所有组

cp
复制文件或目录

cp -i
提示是否覆盖

cp -r
递归复制目录及内部的所有内容

cp -R
递归复制目录及内部的所有内容

\cp
原始cp,直接覆盖不提示

cp -f
先删除目标文件,再复制源文件

cp -d
不复制原文件,只复制链接

cp -p
保留权限、所有者和时间属性,等同于--preserv=mode,ownership,timestamp

cp -a
归档,相当于-dR --preserv=all,递归并保留链接及其他所有属性

cp -v
显示过程

cp -u
只复制源比目标更新文件或目标不存在的文件

cp --backup=
目标存在,覆盖前先备份加数字后缀

cp Source_File{,.bak}
配合文件通配符备份文件

dd

可用于检测系统读写速度。

读取、转换并输出数据

if=
从指定文件读数据

of=
指定输出文件

bs=
指定块大小

count=
指定块数量

dirname
只取路径,去掉文件名

echo $OLDPWD
查看系统所记录上次所在的目录

echo $PWD
查看系统所记录当前所在的目录

echo file{1..999999999} | xargs rm
带着大量参数删除文件

echo File{1..999999999} | xargs touch
带着大量参数创建文件

exec Number<>File
手工指定文件描述符

exec Number<>&-
删除指定文件描述符

file
判断文件类型

file -b
列出文件辨识结果时,不显示文件名称

file -f File_List.txt
批量判断文件列表中的文件的类型

file -F
指定分隔符,默认为:

file -L
查看对应软链接对应文件的文件类型

find

实时查找文件

find -maxdepth

指定最大搜索目录深度

find -mindepth

指定最小搜索目录深度

find -name

指定文件名称(支持通配符)

find -iname

忽略大小写

find -num

搜索指定节点编号的文件

find -samefile

搜索相同节点编号的文件(硬链接)

find -links

搜索指定链接数的文件

find -regex

使用正则表达式

find -ls

搜索后显示文件详细属性

find -user

搜索指定所有者的文件

find -group

搜索指定所有组的文件

find -uid

搜索指定UID号的所有者的文件

find -gid

搜索指定GID号的所有者的文件

find -nouser

搜索没有所有者的文件

find -nogroup

搜索没有所有组的文件

find -a

与(默认)

find -o

find -not、find !

find -type

指定文件类型搜索(f:普通文件、d:目录文件、l:符号链接文件、s:套接字文件、b:块设备文件、c:字符设备文件、p:管道文件)

find -empty

搜索空文件

find -path -a prune

过滤指定目录

find -size +/-#

默认搜索 (#-1, #] 的文件(k、M、G、c)、+:(#, ∞)、-:[0, #-1)

find -atime/mtime/ctime +-#

默认以天为单位搜索 [#, #+1) 的文件、+:(#+1, ∞)、-:[0, #)

find -amin/mmin/cmin +-#

默认以分钟为单位搜索 [#, #+1) 的文件、+:(#+1, ∞)、-:[0, #)

find -perm /-MODE

默认根据权限精确搜索文件、/:U或G或O、-:并集(权限转换成2进制,匹配为1的位,不匹配为0的位)

find -print

默认的处理动作,显示到屏幕

find -ls

显示查找到的文件的长格式信息

find -delete

删除查找到的文件

find -fls

把查找到的所有文件的长格式信息保存到指定文件中

find -ok CMD {} \;

交互式对查找到的文件执行CMD命令,{}:用于引用查找到的文件名称自身

find -exec CMD {} \;

批量对查找到的文件执行CMD命令(不询问),{}:用于引用查找到的文件名称自身

getfacl
查看指定文件或目录的访问控制列表设置

getfacl FILE/DIRECTORY | setfacl --set-file=- NEW_FILE/DIRECTORY
复制其他文件的ACL权限给指定文件

getfacl -R FILE > ACL.txt
备份ACL

getfacl -p
不去除路径前的/

l*
只显示当前目录的所有隐藏文件(包括子目录和父目录)

ll
查看文件信息

ll --time=
查看文件的atime(访问内容时间)、mtime(修改内容时间)和ctime(改变属性时间)

ll /proc/$$fd
查看被打开的文件所对应的文件描述符

ln
创建硬链接

ln -s
创建软链接(符号链接)

locate

非实时查找文件(数据库查找)

locate -i

忽略大小写

locate -n

只列举前N个匹配项目

locate -r

使用正则表达式

lpr
将一个或多个文件放入打印队列等待打印

lpr -P
将资料送至指定的打印机

ls
查看目录中文件列表

ls -a
显示所有文件(包括隐藏文件)

ls -A
显示所有文件(不包括.和..)

ls -R
目录递归

ls -l
显示额外的信息

ls -ld
显示指定目录额外的信息

ls -1
按照数字、字母顺序分行显示

ls -S
从大到小排序显示

ls -r
倒序显示

ls -t
按文件的mtime(修改时间)从新到旧排序显示

ls -u
配合-t选项,按照atime从新到旧排序显示

ls -c
配合-t选项,按照ctime从新到旧排序显示

ls -U
按目录存放顺序显示

ls -X
按文件后缀排序

ls -d */
只显示目录下的文件夹,不显示文件

ls -d .*
只显示当前目录的所有隐藏文件(包括子目录和父目录)

ls -R .[^.]*
递归查看当前目录下所有隐藏文件(包括子目录内)

ls -d .[^.]*
只显示当前目录下的隐藏文件(不包括父目录)

ls -a .[^.]*
只显示当前目录下的隐藏文件(不包括父目录)

ls -i
查看文件节点编号(inode)

lsattr
显示文件特定属性

lsof | grep deleted
查看当前系统中被删除但还未释放空间的文件

mkdir
创建目录

mkdir -p
存在不报错,自动创建所需的各目录

mkdir -v
显示创建过程

mkdir -m
指定权限

mv
移动或重命名文件、目录

mv -i
交互式操作

mv -f
强制

mv -t
先指定目的目录,再指定源

rmdir
删除空目录

rmdir -p
递归删除父空目录

rmdir -v
显示删除过程

pwd
查看当前工作目录

pwd -P
显示真实路径

readlink
查看软链接对应的原始文件

rename
批量修改文件名

rename Name_Old Name_New Name
Name_New可以为空,表示删除旧文件名的参数。

rm
删除文件、目录

rm -f
强制删除

rm -i
交互式

rm -r
递归

rm -rf /*
删除根目录下所有数据

rm -rf / --no-preserve-root
删除根目录下所有数据

setfacl
访问控制列表

setfacl -m u:USERNAME:rwx FILE/DIRECTORY
为多用户或组的文件和目录赋予指定用户的访问权限,如果rwx为空或为0则代表没有访问权限

setfacl -m g:GROUP:rwx FILE/DIRECTORY
为多用户或组的文件和目录赋予指定组的访问权限,如果rwx为空或为0则代表没有访问权限

setfacl -x u:USERNAME FILE/DIRECTORY
删除指定用户对文件和目录的访问权限

setfacl -x g:GROUP FILE/DIRECTORY
删除指定组对文件和目录的访问权限

setfacl -m mask::rwx FILE/DIRECTORY
设置除所有者和other的之外的人和组的最大权限

setfacl -m d:u:USERNAME/g:GROUP:rwx DIRECTORY
设置指定目录下新建文件的默认ACL权限

setfacl -b FILE/DIRECTORY
清空指定文件、目录所有ACL权限

setfacl -k FILE/DIRECTORY
删除指定文件、目录默认ACL权限

setfacl -R DIRECTORY
递归设置ACL权限

setfacl -M ACL_FILE.txt FILE/DIRECTORY
调用ACL文件设置文件、目录的访问权限

setfacl -X ACL_FILE.txt FILE/DIRECTORY
调用ACL文件取消设置文件、目录的访问权限

getfacl FILE/DIRECTORY | setfacl --set-file=- NEW_FILE/DIRECTORY
复制其他文件的ACL权限给指定文件

setfacl --set u::rwx,u:USERNAME,g::rwx,o::rwx- FILE
清空文件原有ACL权限,再用新ACL权限替换

setfacl -R --set-file=acl.txt FILE
恢复ACL

setfacl --restore acl.txt FILE
恢复ACL

stat
显示文件的inode内容

stat -c

使用特殊格式代替默认

stat -c %a

以数字法显示文件权限

set -C
禁止将内容覆盖已有文件,但可追加

set +C
允许覆盖

shred
彻底删除文件数据

shred -z
以0进行覆盖

shred -n
指定次数

shred -v
查看过程

shred -u
处理完毕后删除

touch
创建空文件或刷新文件时间

touch -a
仅刷新atime和ctime

touch -m
仅刷新mtime和ctime

touch -t
指定atime和mtime的时间戳

touch -c
如果文件不存在,则不创建

tree
显示目录树

tree -L
指定显示的层级

tree -d
只显示目录

tree -P
匹配正则表达式

umask
设置、显示文件、目录初始权限(取消对应的权限),普通用户默认为0022,管理员默认为0002

umask u=rwx,g=rwx=o=rwx
以权限法设置初始权限

umask -p
显示初始权限(带命令)

umask -S
以权限法显示初始权限

updatedb

更新locate命令数据库

 

 

 

2. 文本字符

2>
标准错误输出重定向

2>>
标准错误输出追加重定向

>|
强制覆盖

&>
把所有输出重定向到文件

&>>
把所有输出重定向追加到文件

<
标准输入重定向

<<终止符
多行重导向

|
管道符,把一个命令的标准输出发送给另一个命令作为标准输入

|&
把一个命令的标准输出和标准错误发送给另一个命令,CentOS5及以前的版本不支持

-
将管道符前的命令传送给管道符后的命令,直接代替前一个命令的标准输出

cat
查看文件内容

cat -A
展开所有

cat -n

加行号(忽略空行)

cat -b

加行号(不忽略空行)

cat -s

压缩连续的空行成一行

cat -A

显示所有控制符

cat -E

显示行结束符$(回车)

chfn
添加/etc/passwd中指定用户的描述信息

cut

按列抽取文本内容

cut -d

指定分隔符,默认为Tab

cut -f

指定列(以,分散,以-连续)

cut -c n-N

按字符为单位切割

cut --out-delimiter=

指定输出分隔符

diff

比较两个文件之间的区别

diff -u

以合并的方式来显示文件内容的不同,配合path命令可以实现文件内容恢复

echo
显示字符

echo -e
启用\字符的解释功能

echo $RANDOM
生成0~32767的随机数

egrep

支持扩展正则表达式

fgrep

不支持正则表达式

finger
查看/etc/passwd中指定用户的描述信息

gedit
图形化文本编辑工具

getent group
查看/etc/group内容

getent group GROUP
只显示/etc/group中指定组的行

getent gshadow
查看/etc/gshadow内容

getent gshadow GROUP
只显示/etc/gshadow中指定组的行

getent passwd
查看/etc/passwd内容

getent passwd USERNAME
只显示/etc/passwd中指定用户的行

getent shadow
查看/etc/shadow内容

getent shadow USERNAME
只显示/etc/shadown中指定用户的行

grep

显示匹配到的字符串的行

grep --color=auto

高亮显示

grep -v

只显示不包含匹配到的字符串的行

grep -i

忽略大小写

grep -n

显示匹配的行号

grep -c

统计匹配的行数

grep -o

只显示匹配到的字符串

grep -q

静默模式,不输出任何信息

grep -A

包含匹配到的字符串的行的后几行

grep -B

包含匹配到的字符串的行的前几行

grep -C

包含匹配到的字符串的行的前后各几行

grep -e PATTERN_1 -e PATTERN_2 -e PATTERN_N

实现多个选项间的逻辑or关系

grep -w

匹配整个单词

grep -E

支持扩展正则表达式

grep -F

不支持正则表达式

grep -f

指定规则文件

grpck
检查/etc/group内容和格式的完整性并补充说明

head

显示文本内容前10行(默认)

head -n

指定前多少行

head -c

指定前多少个字节

hexdump
查看2进制文件的16进制编码

hexdump -C
每个字节显示为16进制和相应的ASCII字符

less

分页查看文件或STDIN输出

/

搜索文本内容

n/N

跳到下/上一个匹配内容

mail
收邮件

mail -s SUBJECT USER
指定邮件的主题

.
结束邮件正文编辑

more

分页查看文本内容

more -d

显示翻页及退出提示

rev

镜像查看文本内容

nano
字符文本编辑工具

openssl rand -base64 NUMBER
生成指定个数的随机字符

paste

合并多个文件同行号的列到一行

paste -s

所有行合成一行显示
paste -d

指定分隔符,默认为Tab

patch

修补文件

patch -b

备份文件

pwck
检查/etc/passwd内容和格式的完整性并补充说明

pwconv
开启用户的投影密码,/etc/passwd不显示用户密码

pwunconv
关闭用户投影密码,把用户密码从/etc/shadow,重回存到/etc/passwd

reset
重置字符,遇到乱码时可以执行该命令重置系统字符

sed 'script'

行编辑器(script格式:'地址命令')

#

指定行

$

最后一行

/PATTERN/

被模式匹配的行

#,#、#,+#、/BEGIN_PATTERN/,/END_PATTERN/、#,/END_PATTERN/

指定地址范围

#~#

步进(从指定行开始每次递增行数)

=

显示模式空间中匹配的行的行号

!

模式空间中匹配行取反处理

a [\]

在指定行的后一行开始追加文本内容,支持\n实现多行追加

i [\]

在指定行的前一行开始追加文本内容

c [\]

替换指定行

w

保存模式匹配的行至指定文件

r

读取指定文件的文本至模式空间中匹配到的行后

d

删除模式空间匹配的行,并立即启用下一轮循环

p

打印当前模式空间内容,追加到默认输出之后

s///

单次搜索替换

s///g

全局搜索替换

s///p

显示替换成功的行

s///w

将替换成功的行保存至目标文件中

sed -n

不输出模式空间内容到屏幕,即不自动打印

sed -r

扩展正则表达式

sed -e

多点编辑(单次脚本多次处理)

sed -f SCRIPT_FILE

从指定文件中读取编辑脚本

sed -i.bak

备份文件并原处编辑

seq
生成从n到N的数字,默认从1开始

seq -s
指定分隔符,默认为回车

sort

文本排序,默认以字符排序

sort -t

指定分隔符

sort -k

指定列

sort -n

按数字大小排序

sort -r

倒序

sort -f

忽略大小写

sort -u

压缩重复的行

sort -R

随机排序

tac

倒序查看文本内容

tail

显示文本最后10行内容(默认)

tail -c

指定获取最后多少个字节

tail -n

指定获取最后多少行

tail -f

跟踪显示文件新追加的内容

tail -F

跟踪文件名

tailf

当文件不增长时并不访问文件,类似tail -f

tee
重定向到多个目标

tee -a
追加

tr
转换字符

tr -ctr -C
取反

tr -d
删除

tr -s
压缩连续重复的字符

tr -t
使字符串1的长度和字符串2的长度一致

tr --help
帮助

uniq

合并相重复且相邻的行

uniq -c

统计重复且相邻的行数

uniq -u

仅显示不曾重复且相邻的行

uniq -d

仅显示重复且相邻的行

vi

文本编辑器

vigr
带语法检查功能编辑/etc/group

vim

文本编辑器

vim +N

打开文件后,光标处于第N行

vim + /PATTERN

打开文件后,光标处于第一个被模式匹配到的行首

vim +b

二进制方式打开文件

vim -d

比较多个文件

vim -m

只读方式打开文件

vim -o

单个或多个文件水平分割

vim -O

单个或多个文件垂直分割

vipw
带语法检查功能编辑/etc/passwd

wc

文本数据统计单词总数、行总数、字节总数和字符总数,以空格为分隔符

wc -l

统计行数

wc -w

统计单词总数

wc -c

统计字节总数

wc -m

统计字符总数

wc -L

显示文件中最长行的长度

xargs

将管道、标准输入或文件输出的数据转换成命令行参数(可解决参数过多问题)

xargs -n

指定单次转换的参数数量

 

 

3. 备份压缩

compress

把原文件压缩成后缀为.Z的文件并删除

compress -d

解压缩

compress -c

只把结果输出到标准输出,不压缩、不删除原文件

compress -v

显示详情

uncompress

解压缩.Z后缀的压缩文件

zcat

只查看压缩包内的文件内容,不解压缩

bzip2

压缩成后缀为.bz2的文件(gzip升级版)

bzip2 -k

保留原文件

bzip2 -d

解压缩

bzip -1~9

指定压缩比,默认为9

bunzip2

解压缩

bzcat

只查看压缩包内的文件内容,不解压缩

cpio >/<

通过重定向的方式将文件进行打包备份,还原恢复的工具

cpio -ov

打包

cpio -idv

解包(如果打包时带绝对路径,只能解包到绝对路径上)

cpio -o

将文件拷贝打包成文件或者将文件输出到设备上

cpio -i

解包,将打包文件解压或将设备上的备份还原到系统

cpio -t

预览,查看文件内容或者输出到设备上的文件内容

cpio -v

显示打包过程中的文件名称

cpio -d

解包生成目录,在cpio还原时,自动的建立目录

cpio -c

一种较新的存储方式

file-roller

图形化压缩、解压缩工具

gzip

把原文件压缩成后缀为.gz的文件

gzip -d

解压缩

gzip -c

将压缩或解压缩的结果输出至标准输出

gzip -1~9

指定压缩比(默认为6),值越大,压缩比越大,速度越慢

gunzip

对.gz后缀的压缩文件进行压缩

zcat

只查看压缩包内的文件内容,不解压缩

split

切割大的打包文件为多份小文件

split -b

指定小文件大小

split -d TAR_FILE PREFIX_NAME

指定小文件前缀

cat PART_FILES* > TAR_FILE

合并

tar
打包或解包

tar -cpvf

打包

tar -c

创建打包文件

tar -f

指定目标文件名

tar -v

过程

tar -p

保留原有属性

tar -t

预览

tar -xvf -C

解包

tar -x

解压缩(默认解压缩到当前目录下)

tar -C

指定解压缩目录

tar -z

打包后缀为.gz或.tgz的压缩文件(解包不需要带)

tar -j

打包后缀为.bz2的压缩文件(解包不需要带)

tar -J

打包后缀为.xz的压缩文件(解包不需要带)

tar -T FILELIST

指定输入文件列表

tar -X EXFILELIST

排除指定的文件列表

xz

把原文件压缩成后缀为.xz的文件(压缩比最高)

xz -k

保留原文件

xz -d

解压缩

xz -1~9

压缩比,默认为6

xzcat

只查看压缩包内的文件内容,不解压缩

zip

把原文件压缩成后缀为.zip的文件

zip -r

打包压缩目录

unzip

解包压缩

unzip -p

只查看压缩包内的文件内容,不解压缩

 

 

4. 文件传输

scp FILE IP_ADDRESS:/DIRECTORY
Linux之间复制文件和目录,默认复制到root家目录

 

 

二、系统相关

1. 系统管理

=

变量赋值

.
读取文件内容存放到内存

alias
查看所有命令别名的列表

alias NAME=‘VALUE’
临时定义命令别名

bash

运行bash程序、执行脚本

cat /etc/centos-release
查看发行版本

cat /etc/shells
显示当前系统所有shell类型

cat /proc/cpu
查看cpu信息

cat /proc/meminfo
查看内存信息

clock
修改、查看硬件时钟时间

clock -s
以硬件时钟为准,校正系统时钟

clock -w
以系统时钟为准, 校正硬件时钟

chkconfig

检查,设置系统的各种服务

chkconfig APPLICATION off

禁止开机自启动

command
执行同名命令别名的原始命令

date
修改、查看系统时钟时间

date +%F
以年-月-日格式显示

date +%T
以时:分:秒格式显示

date -d
以英文、字符串查找日期

date -s
设置时间

date --help
帮助用法

declare

声明变量

declare -x

设置或显示环境(全局)变量

declare -i

声明数值、字符串或运算式

echo $$

查看当前进程的进程编号

echo $?

查看上一命令的执行结果,成功为0,失败为非0

echo $HISTFILE

查看命令行历史文件

echo $HISTISIZE

查看命令行历史最多存储数

echo $LANG
查看当前系统语言编码

echo $PATH

查看环境变量

echo $PPID

查看父进程的进程编号

echo $PS1
查看当前命令提示符格式

echo $SHELL

查看当前环境使用的shell类型

echo $HOSTNAE

查看主机名

enable

查看运行、启动内部命令

enable -n
查看禁用、禁用内部命令

env

显示环境(全局)变量

exit

退出当前终端、终止shell脚本并返回自定义退出状态码

export

设置或显示环境(全局)变量

free
查看内存信息

free -h

以合适的单位显示内存使用情况

halt

关机(不断电)

hash

显示缓存到内存的命令

hash -d

清除指定命令的缓存

hash -l

显示命令缓存(包括命令的路径)

hash -p PATH NAME

将命令路径起别名

hash -t

显示指定命令的路径

hash -r

清楚所有缓存

history
命令行历史

!NUMBER
重复执行指定历史命令

history -c
清除内存中的命令历史

history -d
删除指定序号的命令历史

history -a
把内存中的命令历史写入到命令历史文件

history -r
把命令历史文件内容读到内存中的命令历史

history -w
把命令历史写入到命令历史文件

history -n
把命令历史文件中未读过的历史命令读到内存

history -p
执行命令不记录到命令历史

history -s
把命令写入到命令历史,但不执行

hostname
查看主机名

init 0
关机

init 3
切换字符模式

init 5
切换图形界面

killall
杀死进程

ldd
查看命令所调用的库文件

logout
退出当前终端

lsb_release -a
CentOS6查看操作系统版本

lscpu

查看CPU信息

ltrace
查看进程的库调用(library)

makewhatis
CentOS6制作whatis数据库

mandb
CentOS7制作whatis数据库

ntpdate
指定时钟服务器

poweroff
关机(即关机也断电)

printenv

显示环境(全局)变量

pstree

查看进程树

pstree -p

显示进程编号

PS1=
临时修改命令提示符格式

readonly

声明只读变量

reboot
重启系统

reboot -f
强制,不调用shutdown

reboot -p
切断电源,关机

read

从标准输入读取数值

read -p

输入提示

read -s

静默输入

read -n

指定输入的字符长度

read -d

输入结束符

read -t

定义输入字符的等待时间

rpm -qa | wc -l

查看系统安装软件的个数

service

管理系统服务

service APPLICATION start

启动服务

service APPLICATION stop

停止服务

set

显示所有变量(局部变量、环境变量)及函数

set --

清空所有位置变量

shift

位置参数前移(默认一位)

shutdown

关机

shutdown -r

重启

shutdown -h

关机(不断电)

shutdown -c

取消目前已经进行中的关机动作

shutdown TIME [MESSAGE]

设置关机时间,默认+1;now(立即,相当于+0);hh:mm(绝对时间)

sosreport

收集系统日志信息

source

读取文件内容存放到内存

startx

启动图形界面功能

strace

查看进程的系统调用(system call)

systemctl

管理系统服务进程

systemctl start

启动服务进程

systemctl stop

停止服务进程

systemctl disable

禁止开机启动

test、[]、[[]]

检查某个条件是否成立

test -v

判断变量是否赋值

test -z

字符串是否为空

test -n

字符串是否为非空

test -a、test -e

判断文件是否存在

test -b

判断文件是否存在且为块设备文件

test -c

判断文件是否存在且为字符设备文件

test -d

判断文件是否存在且为目录文件

test -f

判断文件是否存在且为普通文件

test -h、test -L

判断文件是否存在且为符号链接文件

test -p

判断文件是否存在且为命名管道文件

test -S

判断文件是否存在且为套接字文件

test -r

判断文件是否存在且可读

test -w

判断文件是否存在且可写

test -x

判断文件是否存在且可执行

test -u

判断文件是否存在且拥有suid权限

test -g

判断文件是否存在且拥有sgid权限

test -k

判断文件是否存在且拥有sticky权限

test -s

判断文件是否存在且非空

test -t

判断文件描述符是否在指定终端打开

test -N

判断文件自从上次被读取后是否被修改过

test -O

判断当前有效用户是否为文件属主

test -G

判断当前有效用户是否为文件属组

timedatectl

CentOS7查看当前系统时区信息

timedatectl status

查看当前系统时区信息

timedatectl list-timezones

查看当前系统所有时区

timedatectl set-timezone

调整系统时区

type

查看命令类型

tzselect

CentOS6调整系统时区

unalias

取消命令别名

unalias -a

取消所有命令别名

uname -r

查看内核版本

unset

删除变量

whereis

查看外部命令的路径及其帮助文档路径

which

查看指定外部命令的最近路径

which --skip-alias

只显示指定外部命令的最近路径

which -a

查看指定外部命令的所有路径

xargs

给命令传递参数的一个过滤器,也是组合多个命令的一个工具

 

 

2. 磁盘管理

cd /misc/cd

光盘自动挂载

df

查看磁盘分区的使用情况

df -i

查看磁盘分区的节点编号使用情况

df -h

使用人类可读的格式

du -sh /*

查看所有一级目录大小

echo '- - -' > /sys/class/scsi_host/host2/scan

磁盘自动扫描

fdisk -l

查看磁盘分区

lsblk

查看块设备信息

ls /dev/sd*

查看分区

runlevel

查看当前工作模式

tune2fs -o acl SYSTEM_PARTITION

mount -o acl SYSTEM_PARTITION MOUNT_POINT

CentOS6设置指定分区支持ACL功能

 

 

3. 网络管理

ifconfig

查看网卡信息

ip a

查看网卡信息

ping

测试网络连通性

ping -c

设置次数

netstat

查看网络连接状态

netstat -n

使用IP地址

netstat -t

显示TCP传输协议的连线状况

nmap

网络扫描

nmap -v -sP

扫描特定网段

rz

windows发送文件到Linux

screen

创建多重视窗管理程序会话

screen -S

自定义创建新会话

screen -x

加入指定会话

screen -ls

显示所有已打开的会话

screen -r

恢复指定会话

systemctl restart network

重启网络服务

systemctl restart sshd

重启ssh远程访问服务

sz

Linux发送文件到Windows

curl

文件传输工具

 

4. 用户管理

adduser

创建用户

authconfig --passalgo= --update

修改用户密码的加密算法

--passalgo=md5

--passalgo=sha1

--passalgo=sha224

--passalgo=sha256

--passalgo=sha384

--passalgo=sha512

chage

交互式修改指定用户的密码的设置

chage -d 0

指定用户密码立即过期

chage -l

查看指定用户的密码策略

chage -E

设置用户密码过期时间

chage -I

设置用户密码宽限期

chage -m

设置用户密码最短有效期

chage -M

设置用户密码最长有效期

chage -W

提前多少天告警

chpasswd

批量修改用户密码

echo PASSWORD.TXT | chpasswd

根据用户密码列表文件批量修改用户密码

chsh -s SHELL USERNAME

修改指定用户的shell类型

chvt [1~6]

切换虚拟终端界面

echo $USER

查看用户名

echo PASSWORD | passwd --stdin USERNAME

通过标准输出接受用户密码

groupadd

创建用户组

groupadd

创建用户组

groupadd -g

指定GID

groupadd -r

创建系统组

groupdel

删除组

groupmems

更改、查看组成员

groupmems -g

指定组

groupmems -a

指定用户加入组

groupmems -d

从组中删除用户

groupmems -p

从组中清楚所有成员

groupmems -l

显示组成员列表

groupmod

修改组属性

groupmod -n

修改组名

groupmod -g

修改组id

groups

查看用户所属组列表

gpasswd

修改、增加用户组口令

gpasswd -a USERNAME

将指定用户添加到指定组中

gpasswd -d USERNAME

从指定组中移除指定用户

gpasswd -A USERNAME1,USERNAME2,……

设置有管理权限的用户列表

id

判断用户是否存在,查看用户id、组id、组列表、安全上下文

id -u

只显示用户id

id -g

只显示用户主组id

id -G

只显示用户附加组id

id -n

需要配合-u(只显示用户名)、-g(只显示用户主组名)、-G(只显示用户附加组名)使用

last

显示用户最近登录信息

newgrp

临时切换用户主组

newusers FILE

根据用户列表文件批量创建用户

passwd

修改用户密码

passwd -e

强制用户下次登录修改密码

passwd -l

锁定指定用户

passwd -d

删除指定用户密码

passwd -u

解锁指定用户

passwd -f

强制操作

passwd -n

指定最短使用期限

passwd -x

指定最大使用期限

passwd -i

设置用户宽限期

passwd -w

提前多少天开始告警

passwd --stdin

通过标准输出接受用户密码

tty

查看当前所在虚拟终端

useradd

创建用户

useradd -N

创建用户时不创建同名主组,该用户默认加入组ID为100(/etc/default/useradd所指定)的users组

useradd -u

创建用户并手工指定用户UID时不检查UID的唯一性

useradd -uo

创建用户时手工指定UID

useradd -g

创建用户时手工指定用户主组(组名、GID)

useradd -c

创建用户时手工指定用户的注释信息

useradd -d

创建用户时手工指定用户家目录路径(必须不存在)

useradd -s

创建用户时手工指定用户的shell类型

useradd -r

创建系统用户(不创建家目录和邮箱)

useradd -m

创建系统用户时创建家目录

useradd -M

创建普通用户时不创建家目录

useradd -G

创建用户时指定附加组(必须存在)

useradd -D

显示/etc/default/useradd内容( 新用户默认设置)

useradd -D -b

修改/etc/default/useradd中所设置的默认shell类型

useradd -D -s

修改/etc/default/useradd中所设置的默认家目录

useradd -D -g

修改/etc/default/useradd中所设置的默认主组

userdel

删除用户

userdel -r

删除用户并删除其家目录及邮箱目录

userdel -f

强制删除

usermod

用户属性修改

usermod -L

用户加锁,/etc/shadow密码栏增加!,无法登录系统,但可以通过进行用户切换

usermod -U

CentOS5用户解锁,/etc/shadow密码栏删除!,需要输入两次才能真正解锁,CentOS6和CentOS7无法解锁

usermod -u

修改用户UID

usermod -g

修改用户主组

usermod -G

修改用户附加组

usermod -aG

追加用户附加组

usermod -G ""

引号内为空,取消用户所有附加组

usermod -s

修改用户shell类型

usermod -s

修改用户描述信息

usermod -s

修改用户shell类型

usermod -dm

自动创建用户新家目录并移动原家目录数据

usermod -l NEWNAME OLDNAME

修改用户名

usermod -e YYYY-mm-dd

指定用户账号过期时间

usermod -f

指定用户账号宽限期,/etc/shadow倒数第三栏

w

显示当前所以的登录会话及所做的操作

who

查看当前所有的登录会话信息

whoami

显示当前用户名

who am i

显示当前用户的登录会话信息

su

切换用户,不完全切换,也称非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录

su -

登录式切换,完全切换,会读取目标用户的配置文件,切换至家目录,默认切换为root管理员

su - root -c 'CMD'

使用root管理员身份执行指定命令(用单引号括起来)

 

 

 

三、其他

1. 帮助

help

查看内部命令列表及帮助用法
info

帮助手册

man

帮助手册

man -f

查看命令简要说明

man -a

列出所有章节

man -w

查看帮助文件的路径

man bash

所有内部命令帮助手册

man 7 glob

文件通配符帮助

whatis

查看命令简要说明及对应man帮助章节

 

 

2. 杂

bc

计算器

ibase=

输入2、8、10、16进制数

obase=

输出2、8、10、16进制数

quit

退出

cal

查看月历

cal -y

查看整年月历

clear

清屏

expr

算数运算

expr +

expr -

expr \*

expr /

整除

expr %

取模(余数)

expr **

乘方

let

算数运算

let +

let -

let *

let /

let %

取模(余数)

let **

乘方

sleep

将目前动作延迟一段时间

wall

发广播

yes

不断输入y

 

 

3. 组合按键

Ctrl+a+d

剥离当前screen会话

Ctrl+Alt+F[1~6]

切换虚拟终端界面

Ctrl+c

取消和结束命令执行(比较强硬)

Ctrl+d

取消和结束命令执行

退出当前终端

Ctrl+g

从命令行历史搜索模式退出

Ctrl+l

清屏

Ctrl+q

允许屏幕输出

Ctrl+r

在命令行历史中搜索命令

Ctrl+s

阻止屏幕输出,锁定

Ctrl+z

挂起命令

Shift+PgUp

向上翻页

Shift+PgDn

向下翻页

Tab*2

补全

 

 

 

四、字符

1. 文件通配符

*

匹配零个或多个字符

?

匹配任何单个字符

~

当前用户家目录

~+

当前工作目录

~-

系统所记录上次所在的目录

[0-9]

匹配数字范围

[a-z]

字母

a、A、……、z、Z

[A-Z]

字母

A、b、……、z、Z

[ABCD]

匹配列表中的任何的一个字符

[^ABCD]

匹配列表中的所有字符以外的字符

[:digit:]

任意数字,相当于0-9

[:lower:]

任意小写字母

[:upper:]

任意大写字母

[:alpha:]

任意大小写字母

[:alnum:]

任意数字或字母

[:blank:]

水平空白字符

[:space:]

水平或垂直空白字符

[:punct:]

标点符号

[:print:]

可打印字符

[:cntrl:]

控制(非打印)字符

[:graph:]

图形字符

[:xdigit:]

十六进制字符

 

 

2. 正则表达式

2.1 字符匹配

.

匹配任意单个字符

\

转义符

[]

匹配指定范围内的任意单个字符

[.]

匹配.本身

[^]

匹配指定范围外的任意单个字符

[:alnum:]

字母和数字

[:alpha:]

任何英文大小写字符(A~Z,a~z)

[:lower:]

小写字母

[:upper:]

大写字母

[:blank:]

空白字符(空格和制表符)

[:space:]

水平和垂直的空格字符(比空白字符包含的范围广)

[:cntrl:]

不可打印的控制字符(退格、删除、警铃……)

[:digit:]

十进制数字

[:xdigit:]

十六进制数字

[:graph:]

可打印的非空白字符

[:print:]

可打印字符

[:punt:]

标点符号

 

2.2 次数匹配

*

匹配前面的字符任意次,包括0次

.*

任意长度的任意字符

\?

匹配前面字符的0或1次

\+

匹配前面字符至少1次

\{N\}

匹配前面的字符N次

\{M,N\}

匹配前面的字符至少M次,至多N次

 

2.3 位置锚定

^PATTERN$

用于模式匹配整行

^

行首锚定,用于模式的最左侧

$

行尾锚定,用于模式的最右侧

^$

空行

^[[:space:]]*$

空白行

\<PATTERN\>

匹配整个单词

\<

词首锚定,用于单词模式的左侧

\>

词尾锚定;用于单词模式的右侧

\b

词首词尾锚定,可用于单词模式的左右两侧

 

2.4 分组

\(\)

将一个或多个字符捆绑在一起,当作一个整体进行处理

\NUMBER

后向引用,引用前面指定分组中的模式所匹配的字符

\|

或者

 

 

3. 扩展正则表达式

3.1 字符匹配

.

任意单个字符

[]

指定范围的字符

[^]

不在指定范围的字符

 

3.2 次数匹配

*

匹配前面字符任意次

?

0或1次

+

1次或多次

{}

匹配指定次数

{M,N}

至少M次,至多N次

 

3.3 位置锚定

^

行首

$

行尾

\<PATTERN\>

匹配整个单词

\<

词首锚定,用于单词模式的左侧

\>

词尾锚定;用于单词模式的右侧

\b

词首词尾锚定,可用于单词模式的左右两侧

()

分组

\NUMBER

后向引用,引用前面指定分组中的模式所匹配的字符

|

或者

 

 

4. 条件判断

4.1 逻辑运算

&

&&

短路与

|

||

短路或

!

^

异或(二进制数对位值相同,结果为真;反之为假)

-a

并且

-o

或者

 

4.2 字符判断

=

字符串是否相同

!=

字符串是否不相同

==

左侧字符串是否被右侧通配符匹配

=~

左侧字符串是否被右侧匹配

 

4.3 数值判断

-gt

是否大于

-ge

是否大于等于

-eq

是否等于

-ne

是否不等于

-lt

是否小于

-le

是否小于等于

 

4.4 文件判断

-ef

文件1是否是文件2的硬链接

-nt

文件1的mtime是否新于文件2

-ot

文件1的mtime是否旧于文件2

 

 

5. 变量

$1、$2、……

位置变量

$0

命令本身

$*

传递给脚本的所有参数,全部参数合为一个字符串

$@

传递给脚本的所有参数,每个参数为独立字符串

$#

传递给脚本的参数的个数

$?

最近的命令退出状态

$_

上个命令最后一个参数

$-

一些功能的组合

h

哈希

i

当前属于交互式的shell

m

打开监控模式

B

大括号扩展

H

历史列表

Linux命令之find

阅读数 11

nginx自定义路由

阅读数 1073

没有更多推荐了,返回首页