Linux 常用命令整理
1. history
1.1 history 列出以前用过的系统命令。
1.2 history 列出的系统命令太多,如果项筛选请用下边命令组合。
history | grep find
※即过去用过的包含[find]的命令
1.3 按回车键,一行一行显示过去用过命令。
history | more
或
history | less
2. find
Linux中find常见用法示例
find path -option [-print -exec -ok command] {} \;
find命令的参数:
path: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print:find命令将匹配的文件输出到标准输出。
-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;注意{ }和\之间的空格。
-ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-exec command {} \; 将查到的文件执行command操作,{}和\之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
⑴ 在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。不幸的是,有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。Find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。在有些系统中,使用 -exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
[root@yufei ~]# vim /etc/default/useradd
# useradd defaults file
GROUP=100 #主组的GID也是从100开始的
HOME=/home #把用户的家目录建在/home中,这个目录也可以自己设定
INACTIVE=-1 #是否启用密码过期后是否会失效,-1表示密码永远不会失效。如10,则代表过期10天后才失效。
EXPIRE= #帐号终止日期,不设置表示不启用
SHELL=/bin/bash #所用SHELL的类型
SKEL=/etc/skel #用户家目录里面文件的参照位置。也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
CREATE_MAIL_SPOOL=yes #创建用户的邮件池。相当于一个用户的邮箱
-------------------------------------------------------------------------------------------------
/etc/skel/ 增加用户时候,用户家目录下的文件来源。此目录下的文件都是隐藏文件。
[root@yufei ~]# ls -la /etc/skel/
total 36
drwxr-xr-x. 4 root root 4096 Dec 15 22:41 .
drwxr-xr-x. 96 root root 12288 Jan 7 13:40 ..
-rw-r–r–. 1 root root 18 Jun 22 2010 .bash_logout
-rw-r–r–. 1 root root 176 Jun 22 2010 .bash_profile
-rw-r–r–. 1 root root 124 Jun 22 2010 .bashrc
drwxr-xr-x. 2 root root 4096 Jul 14 23:55 .gnome2
drwxr-xr-x. 4 root root 4096 Dec 15 22:35 .Mozilla
------------------------------------------------------------------
/etc/login.defs 创建用户时的一些规划。比如创建用户时,是否需要家目录,UID和GID的范围,用户的期限等等。
[root@yufei ~]# vim /etc/login.defs
MAIL_DIR /var/spool/mail #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
PASS_MAX_DAYS 99999 #用户的密码不过期最多的天数
PASS_MIN_DAYS 0 #密码修改之间最小的天数
PASS_MIN_LEN 5 #密码最小长度
PASS_WARN_AGE 7 #警告时间
UID_MIN 500 #UID从500开始
UID_MAX 60000 #最大UID为60000
GID_MIN 500 #GID从500开始
GID_MAX 60000 #最大GID为60000
CREATE_HOME yes #是否创用户家目录
UMASK 077 #创建用户家目录时候的默认权限限制
USERGROUPS_ENAB yes #用userdel删除用户的时候,如果这个主组中没有其他用户,那么也把这个组给删除
ENCRYPT_METHOD SHA512 #用户密码的加密方式为SHA512
-------------------------------------------------------------------------------------
格式:passwd [OPTION...] <accountName>
-l :是Lock的意思,会将 /etc/shadow 第二栏最前面加上”!”使密码失效
-u :与-l相对,是Unlock的意思
-S :列出密码相关参数,即shadow文件的大部分信息
-n :后面接天数,shadow的第4字段,不可修改密码天数
-x :后面接天数,shadow的第5字段,多长时间内必须要修改密码
-w :后面接天数,shadow的第6字段,密码过期前的警告天数
-i :后面接日期,shadow 的第7字段,密码失效日期
Usage: usermod [options] 用户名
-c :后面接账号的说明,即/etc/passwd第五栏的说明栏,可以加入一些账号的说明
-d :后面接账号的家目录,即修改/etc/passwd的第六栏
-e :后面接日期,格式是YYYY-MM-DD也就是在/etc/shadow内的第八栏
-f :后面接天数,修改shadow的第七栏
-g :后面接主群组,修改/etc/passwd的第四个字段,即是GID的字段
-G :后面接附加群组,修改这个使用者能够支持的群组,修改的是/etc/group【附加群组只能有一个】
-a :与 -G 合用,可增加附加群组的支持而非设定
-l :后面接账号名称。修改账号名称,/etc/passwd的第一栏
-s :后面接Shell的文件,例如/bin/bash或/bin/csh等等
-u :后面接 UID 数字,修改用户的UID /etc/passwd第三栏
-L :暂时将用户的密码冻结,让他无法登入。其实就是在/etc/shadow的密码栏前面加上了“!”
-U :将/etc/shadow 密码栏的“!”去掉
例:
修改用户的说明信息
[root@localhost mail]# grep u_TEST01 /etc/passwd
u_TEST01:x:1001:1001::/home/u_TEST01:/bin/bash
[root@localhost mail]# usermod -c "message test" u_TEST01
[root@localhost mail]# grep u_TEST01 /etc/passwd
u_TEST01:x:1001:1001:message test:/home/u_TEST01:/bin/bash
修改过期日期:
[root@localhost mail]# grep u_TEST01 /etc/shadow
u_TEST01:$1$0VsklQ8e$etiB5KgRRTQ1NHOPgpz7B0:17099:0:99999:7:::
[root@localhost mail]# usermod -e "2018-01-01" u_TEST01
[root@localhost mail]# grep u_TEST01 /etc/shadow
u_TEST01:$1$0VsklQ8e$etiB5KgRRTQ1NHOPgpz7B0:17099:0:99999:7::17532:
-----------------------------------------------------------------------------------------
[root@localhost ~]# userdel -h
Usage: userdel [options] LOGIN
Options:
-f, --force 强制删除,谨慎使用。
-r, --remove 删除用户登录路径和mail信息
删除之前要确认下列信息:
用户账号/密码相关参数:/etc/passwd, /etc/shadow
用户相关参数:/etc/group, /etc/gshadow
用户个人文件数据: /home/username, /var/spool/mail/username
必要时要【find / -user username】检索用户所有信息进行确认。
---------------------------------------------------------------------------------------------------
[root@localhost ~]# groupmod -h
Usage: groupmod [options] GROUP
Options:
-g, --gid GID 变更组ID
-n, --new-name NEW_GROUP 变更组名
例:
[root@localhost ~]# grep G_TEST /etc/group /etc/gshadow
/etc/group:G_TEST:x:1001:
/etc/group:G_TEST02:x:1002:u_TEST02,u_TEST03,u_TEST06
/etc/group:G_TEST01:x:1003:
/etc/gshadow:G_TEST:!::
/etc/gshadow:G_TEST02:!::u_TEST02,u_TEST03,u_TEST06
/etc/gshadow:G_TEST01:!::
[root@localhost ~]# groupmod -g 1003 -n G_TEST03 G_TEST01
[root@localhost ~]# grep G_TEST /etc/group /etc/gshadow
/etc/group:G_TEST:x:1001:
/etc/group:G_TEST02:x:1002:u_TEST02,u_TEST03,u_TEST06
/etc/group:G_TEST03:x:1003:
/etc/gshadow:G_TEST:!::
/etc/gshadow:G_TEST02:!::u_TEST02,u_TEST03,u_TEST06
/etc/gshadow:G_TEST03:!::
[root@localhost ~]#
--------------------------------------------------------------------------------------------------------------------------------
[root@localhost CTECHNO]# gpasswd -h
Usage: gpasswd [option] GROUP
Options:
-a, --add USER 向组里添加用户
-d, --delete USER 从组里删除用户
-r, --delete-password 删除组的PW
-R, --restrict 限制组员访问
-M, --members USER,... 向组里加入成员列表(多个)
-A, --administrators ADMIN,...设置则管理员列表(多个)
例:
[root@localhost CTECHNO]# grep G_TEST /etc/group /etc/gshadow
/etc/group:G_TEST:x:1001:
/etc/group:G_TEST02:x:1002:u_TEST02,u_TEST03,u_TEST06
/etc/group:G_TEST03:x:1003:
/etc/gshadow:G_TEST:!::
/etc/gshadow:G_TEST02:!::u_TEST02,u_TEST03,u_TEST06
/etc/gshadow:G_TEST03:!::
[root@localhost CTECHNO]# groupadd G_TEST00
[root@localhost CTECHNO]# useradd u_TEST00
[root@localhost CTECHNO]# passwd u_TEST00
Changing password for user u_TEST00.
[root@localhost CTECHNO]# gpasswd -a u_TEST00 G_TEST00
Adding user u_TEST00 to group G_TEST00
[root@localhost CTECHNO]# useradd u_TEST99
[root@localhost CTECHNO]# passwd u_TEST99
[root@localhost CTECHNO]# gpasswd -a u_TEST99 G_TEST00
Adding user u_TEST99 to group G_TEST00
[root@localhost CTECHNO]# grep G_TEST /etc/group /etc/gshadow
/etc/group:G_TEST:x:1001:
/etc/group:G_TEST02:x:1002:u_TEST02,u_TEST03,u_TEST06
/etc/group:G_TEST03:x:1003:
/etc/group:G_TEST00:x:1004:u_TEST00,u_TEST99
/etc/gshadow:G_TEST:!::
/etc/gshadow:G_TEST02:!::u_TEST02,u_TEST03,u_TEST06
/etc/gshadow:G_TEST03:!::
/etc/gshadow:G_TEST00:!::u_TEST00,u_TEST99
[root@localhost CTECHNO]#
[root@localhost CTECHNO]# gpasswd G_TEST00
Changing the password for group G_TEST00
New Password:
Re-enter new password:
[root@localhost CTECHNO]#
------------------------------------------------------------------------------------------------------------
1. 以下の例では、変数「TEST」の中身を「test1234」から「test5678」に置換している。
#!/bin/sh
TEST="test1234
test1234"
TEST=`echo "$TEST" | sed s/1234/5678/g`
echo "$TEST"
■
sed -e s/置換条件/置き換え条件/ 対象ファイル
または
echo $変数名 | sed -e s/置換条件/置き換え条件/
のように記述する。たとえば,「.txt」を「.doc」に置換したい場合は,
$ file_name="linux.txt"
$ echo $file_name | sed -e "s/\.txt/.doc/"
linux.doc
■
テキスト・ファイル内の「Nikkei Linux」を「日経Linux」に変換する
$ sed -e "s/Nikkei Linux/日経Linux/g" source.txt
2.テキスト・ファイルの5~10行目を削除する
$ sed -e "5,10d" source.txt
3.「Error」がある行に,「### Check Line ###」という新しい行を追加する
$ $ sed -e "/Error/i #### Check Line ###" source.txt
4.cut Command
cut -c2-8 ファイル名
※ファイル毎行の2から8まで文字
cut -b2-8 ファイル名
※ファイル毎行の2から8までバイナリ文字
cut -d' ' -f2-8 ファイル名
※ファイル毎行の2から8まで単語,切り分けはスペース
例えば
user and pw
cat /etc/passwd | gawk -F \: '{print $1}' //pw -F 区きり文字指定フラグ;\:(\がなくでもいい);$1区きりリストのフィールドの1です。
cut -d : -f 1 /etc/passwd //user
※ -d 区きり文字 デフォルトは<TAB>
-f n フィールドリスト デフォルト区切り文字は<TAB>; nはフィールドの順位番号 (-f 1-5)
-s, --only-delimited
-f と一緒に用いると、フィールドの区切り文字を含まない行を表示しない
※-sがない場合、区きり無の行は全て表示する、ある場合、表示しないです。
5. JUMP TO LINE nG
n: 行数
6. tar
圧縮 tar -cvzf archive.tar.gz file1 file2 // ./testfolder
解凍 tar -xvzf archive.tar.gz
7. echo $環境変数名 //環境変数名表示
8. ps -aef | grep aucdrsearch
/bin/ps -aef | /bin/grep 'aucdrsearch' | /bin/grep 'ch' | /bin/grep -cve grep -e sh
全てプロセス 「aucdrsearch」を含む 更に「ch」を含む grep 数「-e sh」がなくでも問題がないです。
9.Linux Command 連続実行 $ date; id ; uname -n ; whoami;
10. 設定環境半数:
export LANG=ja_JP.eucJP
export LANG=en_US.UTF-8
11. 表示環境変数:
echo $LANG
削除環境変数:
unset LANG
12.os version
cut /proc/version
cat /etc/redhat-release
cat /etc/issue