- su:switch user 切换用户
-
chattr 很重要的权限命令
-
wget:字符模式上网,是史上最快的单线程传输工具,用于下载网站/批量文件。它的任务就是获取互联网。
-
常用命令
pwd:查看当前所在目录
whoami:查看当前登录用户
who:查看当前所有正在登录的用户。
ls:查看当前目录下所有的文件 -
scp命令
scp -r app_usr@132.42.45.133:/home/app_usr/31 /app/srgl/app # 将远程主机的31目录拷贝到本机的app目录
scp -r /app/srgl/app app_usr@132.42.45.133:/home/app_usr/31 # 将本机的app目录拷贝到远程主机的31目录 -
tar
注意事项:
f参数必需且要放在最后;
f参数后边直接跟压缩文件的名字。不管是压缩还是解压。
使用方法:
$tar -czvf /data01/cdrom.tar.gz * : 将当前目录下的所有文件压缩,存放在/data01/cdrom.tar.gz。
$tar -czvf /data01/cdrom.tar.gz *.html : 将当前目录下的所有html文件压缩,存放在/data01/cdrom.tar.gz。
$tar -xvzf /data01/cdrom.tar.gz : 将/data01/cdrom.tar.gz文件解压到当前目录下。
(如果当前目录为/kxsh,则解压后的文件存放在了/kxsh下) -
ls
ls -l:显示详细信息
ls -lh:显示详细信息,文件大小单位为人直接能看懂的单位(K、M、G等)
ls -rt:按时间顺序显示文件,并按相反的顺序显示,这样最后修改的文件在最后显示,便于查看
[root@localhost kxsh]# ls -l
---------- 1 kxsh root 16 06-05 09:54 1
第二个字段:代表文件硬链接数,值为1说明只有一个指向该文件的硬连接,那就是这个文件本身
kxsh 代表文件拥有者,root代表文件拥有者所在的用户组 -
cp
cp -r unionBusi.war test -
pwd
-
mkdir:创建目录
-
touch:创建一个空文件
-
rmdir:删除目录,只能删除空目录,如果目录中有文件或者子目录存在,则不能用这个命令
-
rm:删除文件和目录。不带参数时只能删除文件,要删除目录需要加-r或者-rf。
rm -r:可以删除非空目录。其实是递归删除,所以没删除一个文件或目录之前总会询问。
rm -rf:强制删除目录及其内部所有文件、文件夹,不在提示询问信息。 -
cp:copy,复制
-
mv:move,移动 和 重命名 都是使用mv命令
-
vi:文本编辑器
-
删除制定目录下及其所有子目录下的.svn目录。
find /server/svn_prd -type d -name ".svn" -exec rm -rf {} \;
old:待查找的开始目录,搜索其下的子目录
-type d : 文件类型为努鲁 若查找的目标文件是普通文件,则用 -type f
-name “.svn” : 双引号不能少!
rm -f {} : 删除时,不提示,{}表示查找到的文件 -
more :列出文件的内容
-
cat:列出文件的内容,正序
-
tac:列出文件的内容,逆序(tac为单词cat的反序)
-
head:列出文件内容,可以指定参数
head -3:列出前三行的内容 -
tail、列出文件的内容,可以指定参数
tail -3:列出后三行的内容
注意:head、tail的应用
一般的大型日志文件可能达到几百兆,可是我们有可能只看其中的几行而已,
这时如果用more显然是不现实的,所以就用到了head和tail
tail -f 用来动态跟踪日志内容 -
find:查找,可以按名称、日期、大小等信息来查找文件
find /etc -name *local :查找/etc目录下名字中后半部分为local的文件。 -
whereis :后面跟命令文本,查看该命令是从哪儿来的以及该命令的文档。(根据环境变量path,同windows)
whereis ls:查看ls命令的文件以及ls的文档。 -
whereis && locate && find
whereis :某个二进制文件的位置,通常用于查看命令位置
locate:从linux文件数据库中查询文件位置,速度非常快。
find:按各种条件查找文件
注意:比较whereis ifconfig 和 locate ifconfig的执行结果有何不同 -
linux下提示bash:command not found
如果确定命令是正确的,则可能是权限不足。先用whereis 定位文件,然后执行相关目录下的相关命令 -
md5加密文件
$md5sum aaa.txt > aaa.md5 -
软链接和硬链接的创建
$ln nihao.txt tahao.txt 为nihao.txt文件创建tahao.txt的硬链接(nihao.txt必须已经存在且tahao.txt文件不存在)
$ln -s nihao.txt haohao.txt 为nihao.txt文件创建haohao.txt的软连接(即快捷方式) -
从linux中在远程登录另一个linux
例如,本地不能访问10.72.67.220服务器,但是本地可以登录132.42.46.61,而132.42.46.61是可以访问10.72.67.220的。
这时,可以先远程登录132.42.46.61,然后通过以下命令在61下远程登录220.
$ssh -l app_usr 10.72.67.220 (app_usr为用户名
第一次连接时会让你确认,输入yes,然后输入口令就行了。 -
grep -i :筛选时不区分大小写
使用管道并用grep筛选关键字时,由于linux对大小写要求很严格,筛选很费劲。
例如,查看是否安装了mysql,需要执行命令:
$rpm -qa|grep MySQL
如果不是很熟,不知道MySQL的大小写区分,就会筛选不到想要的内容。
解决方法:
$rpm -qa|grep -i mysql 此时,将不再区分筛选条件的大小写 -
alias给linux常用的命令起一个别名。
$alias ll=‘ls -l’ 给ls -l娶一个别名为ll
$unalias ll 取消ll这个别名
但是,用以上命令设置的别名只读当前登录的用户有效,下次登录系统就无效了。
解决办法:在home目录下执行如下命令
v i . b a s h r c 另一个解决方法:在 vi .bashrc 另一个解决方法: 在 vi.bashrc另一个解决方法:在HOME下创建自己的.alias文件;
在$HOME/.bashrc中加入语句
if [ -f ~/.alias ]; then
. ~/.alias
fi -
ls常用命令举例
-a:显示隐藏文件;-r:按相反顺序排序;-t:按时间排序;-S:按文件大小排序
$ll -rt:按修改时间排序(最后修改的在最下边)
$ll -rS:按大小排序(大的在最下边)
$ll -a:查看所有文件(包括隐藏文件) -
mkdir创建多级目录
mkdir -p baidu/yahoo (可以连续创建多级目录) -
改变文件夹内所有文件的权限
$chown -R kxsh filename
$chgrp -R kxsh filename -
wc:(word count)统计指定文本文件的行数、字数、字符数
-
grep:查找指定的字符串(最最常用的命令之一),常与管道配合使用
$ll |grep txt
注意:grep命令很重要,很常用!!!
有时候相查当前进程中哪个是tomcat进程,就用这个命令。 -
mv:移动,或者重命名
假如当前目录下有一个nihao.txt文件,一个test子目录
$mv nihao.txt test 将nihao.txt移动到test子目录下
$mv nihao.txt nihao 将nihao.txt重命名为nihao -
top:linux下的任务管理器
打开之后,q退出,s修改刷新频率 -
md5sum:生成md5校验文件
-
hexdump :查看文件的16进制内容。
$hexdump -C fileName -
linux的历史搜索
$history 50 :搜索之前执行的50条命令( 每条命令有自己的编号,下面用到的就是历史命令的编号)
$!68 :执行历史编号为68的那条命令
! l s :运行上一个 l s 命令 ( 这条非常实用,有时候用 l l 加 g r e p 查询出结果后,去另一个目录中仍想执行相同的命令时,可以直接通过 !ls :运行上一个ls命令 (这条非常实用,有时候用ll 加grep查询出结果后,去另一个目录中仍想执行相同的命令时,可以直接通过 !ls:运行上一个ls命令(这条非常实用,有时候用ll加grep查询出结果后,去另一个目录中仍想执行相同的命令时,可以直接通过!ll来执行。)
$fc :编辑并运行上一条命令 (因为编辑是在vi下编辑,所以fc命令仅适用于很长的命令)
$fc 69 :编辑并运行历史命令编号为69的那条命令(同上) -
生成一个文件的md5校验文件
$:md5sum fileName > fileName.md5 -
查看文本文件的内容: cat、tac、less、more、head、tail
more:向前翻页(b - backward)、向后翻页(f - forward)
head:head -n 查看前50行 (n参数可以不加)
tail : tail -n 查看后50行(n参数可以不加)
tail -f :时时跟踪文件变化
cat -n :连行号一起输出 -
mount命令
关键命令:
#mount: 查看挂载状态
#mount | grep cd :查看cd的挂载
#mount /dev/cdrom /mnt/cdr:将文件/dev/cdrom挂载为目录/mnt/cdr。
#umount /dev/cdrom:取消挂载 -
rpm
使用方法:
$rpm -e ***.rpm :卸载rpm软件
$rpm -qa :查看已经安装的软件
$rpm -ivh ***.rpm :安装rpm软件 -
linux文件搜索
which:搜索PATH包含目录内的可执行文件。(因此要想让某个可执行文件被搜索到,需要将其放于PATH包含的目录下,
或者将其所在目录放入PATH)
whereis:不如locate强悍。
locate:从linux文件数据库中搜索想要的文件,速度快。
例如:公司业会转换程序名称为transformprov,然后想找到它的源代码,只需执行 $locate transformprov 命令即可迅速找到所有名字中
包含了transformprov的文件。
find:功能强大的搜索命令,可以按时间、组、所有者、文件名、文件类型进行搜索。缺点是查找速度慢而且浪费硬盘空间。
备注:
find 使用方法:
$find [路径] [参数]
参数说明:
1.时间参数 // a、c、m分别代表什么意思?随便找一个文件,用stat命令查看其详细信息,就会明白这里的a、c、m分别是access、change、modify
-atime n :将n24小时内被存取过的文件列出来(access)
-ctime n :将n24小时内被新增的文件或目录列出来(change)
-mtime n :将n*24小时内被修改过的文件列出来(modify)
-newer file:把比file还新的文件列出来
2、使用名称
-gid n :寻找群组ID为n的文件
-group name:寻找群组名称为name的文件
-uid n :寻找拥有者ID为n的文件
-user name :寻找拥有者为name的文件
-name file :寻找文件名为file的文件(可以使用通配符)
-type type :寻找文件属性为type的文件,type包含了b, c, d, p, l, s,这些与前一章的属性相同。例如l为Link而d为目录 -
column -t 将前边的命令进行格式化输出
例如:
$more fileName |column -t
$mount |column -t
注意:
column命令只对英文起作用。如果前边的内容有中文字符(包括汉字和中文的标点符号),column命令就会失效。 -
检查文件是否是UTF格式
$ file --mime-encoding filename -
修改文件权限:chmod、chown、chgro
# 将文件所有者改为kxsh
chown kxsh filename
# 将文件所有者改为kxsh
chgrp kxsh filename
# 给文件赋予所有权限(读、写、执行)
chmod 777 filename
# 取消所有权限
chmod 000 filename
# 给文件的所有者增加/取消可执行权限
chmod +/-x filename
# 给当前用户/同组用户/其它用户增加可执行权限
chmod u/g/o+x filename
-
nano:超简单的文本编辑器。其操作全是通过Ctrl+下边提示的快捷键来执行。
-
脚本中获取当前时间或当前时间的前一天,格式为20080101
当前时间:date +%Y%m%d
当前时间的前一天:date -d"1 days ago" +%Y%m%d -
linux下启动jboss并保持其后台运行的命令
在bin目录下:$nohup ./run.sh -c web -b 主机地址 &
其中,-c和-b都是run.sh的参数。在windows环境中运行run.bat时这几个参数也可以用。
-c的作用:指定服务器的实力配置目录。默认是defualt,这里通过-c参数指定为web目录。
-b的作用:指定外部访问地址。默认只能本地访问,通过-b指定外网访问地址
nohup的作用:指定后台运行
&的作用:和nohup一起指定后台运行。
搜寻目录或文件
- 前言
linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate命令查找文件时,都会以此数据库文件的内容为准。
基本上linux每天会针对linux主机执行updatedb(跟对该数据库文件)操作,您可以在/etc/cron.daily/mlocate.cron文件中找到相关的机制。
当然也可以直接使用/usr/bin/updatedb来手动更新数据库文件。
有时你会发现使用whereis和locate时,会找到已经被删除的文件,那是因为删除文件之后数据库没有及时更新。 - 文件搜索命令综述
which
:查看可执行文件的位置(按名字查找)
whereis
:从数据库中查看文件位置(功能没有locate强大,一般直接用locate即可)
locate
:配合数据库查看文件位置(按名字查找)
find
:实际s搜寻硬盘查询文件名称(可以根据所有者、大小等各种属性查找文件,功能强大但是查找速度慢而且浪费硬盘) - 注意:
find
用的并不是很多,因为find
速度慢而且费硬盘。如果知道某个文件名字中的一部分,想要查找文件的位置,直接用locate
就可以,通常不用find
。
因为locate
是利用数据库来搜寻数据,所以相当快。如果用locate
找不到,才会用find
。 which
which的基本功能是在PATH包含的路径下查询可执行文件。所以如果希望一个可执行文件能够使用which命令查询到,需要将该文件加入PATH包含的某个目录中,或者将该文件所在目录放入PATH。
例:$whichis ls
whereis
从数据库中查找文件,功能没有locate强大。
例:$whereis ls
locate
最常用的文件名搜索命令。使用起来非常简单,直接输入要查找的文件名即可。
例如:公司业会转换程序名称为transformprov,然后想找到它的源代码,只需执行$locate transformprov
命令即可迅速找到所有名字中包含了transformprov
的文件。find
语法:find [路径] [ 参数]
参数说明:- 时间: // a、c、m分别代表什么意思?随便找一个文件,用stat命令查看其详细信息,就会明白这里的a、c、m分别是access、change、modify
-atime n : 将n24小时内被存取过的文件列出来 (access)
-ctime n : 将n24小时内被改变、新增的文件或目录列出来 (create)
-mtime n : 将n*24小时内被修改过的文件列出来 (modify)
-newer file : 把比file还要新的文件列出来 - 使用名称:
-gid n : 寻找群组ID为n的文件
-group name : 寻找群组名称为name的文件
-uid n : 寻找拥有者ID为n的文件
-user name : 寻找用户名称为name的文件
-name file : 寻找文件名为file的文件名称(可以使用通配符)
-type type : 寻找文件属性为type的文件,type包含了b, c, d, p, l, s,这些与前一章的属性相同。例如l为Link而d为目录
- 时间: // a、c、m分别代表什么意思?随便找一个文件,用stat命令查看其详细信息,就会明白这里的a、c、m分别是access、change、modify
范例:
- 在/logs目录中查找更改时间在5 日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec rm {} \;
- find命令在当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。
$ find . -name "*.log" -mtime +5 -ok rm {} \;
- 查找/var/logs 目录中更改时间在7 日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm {} \;
- 用grep命令在所有的普通文件中搜索hostname 这个词:
$ find . -type f -print | xargs grep "hostname"
- 用grep命令在当前目录下的所有普通文件中搜索hostnames 这个词:
$ find . -name \* -type f -print | xargs grep "hostnames"
- 想要在当前目录及子目录中查找所有的’*.txt’文件,可以用:
$ find . -name "*.txt" -print
- 想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:
$ find . -name "[A-Z]*" -print
- 在/ e t c 目录下查找文件属主为u u c p 的文件:
$ find /etc -user uucp -print
- 为了在/var/adm目录下查找更改时间在3 日以前的文件,可以用:
$ find /var/adm -mtime +3 -print
- 清空/var/log目录下所有大于10kb的文件命令:
#/bin/sh
LOG_DIR=/var/log/
find $LOG_DIR -size +文件大小 |while read i;do> $idone
echo "log empty done"
压缩/解压缩命令详解(更多详细内容参见简报)
1、tar:Tape ARchive 磁带归档
压缩:tar -cvzf destFilename.tar.gz sourceFilename
解压:tar -xvzf sourceFilename.tar.gz (解压到当前目录)
解压:tar -xvzf sourceFilename.tar.gz -C /nihao/wohao/tahao/ (使用-C解压到指定目录)
查看:tar -tvzf sourceFilename.tar.gz
注意事项:
* f 参数必须放在最后,并且后边必须紧跟压缩文件的名字;
* c/x/t 参数只能任选其一,不能多选,也不能不选;
* 默认情况下,我们可以将压缩文档在任何地方解开。例如,可以在/usr/local/src目录下解压/tmp/etc.tar.gz文件,
并且在此目录下解压后的文件存放在了当前目录下;
* f:压缩/解压缩文件名字
c:压缩文件(create) x:解压缩文件 t:查看内容
v:展示压缩/解压缩的过程
z:用gzip来压缩/解压缩文件,加上该选项之后可以将文件进行压缩,但解压时也一定要使用该项进行解压缩
(如果后缀名为.tar.gz ,则解压缩时必须加上参数z)
使用实例:
$tar -czvf /data01/cdrom.tar.gz * : 将当前目录下的所有文件压缩,存放在/data01/cdrom.tar.gz。
$tar -czvf /data01/cdrom.tar.gz *.html : 将当前目录下的所有html文件压缩,存放在/data01/cdrom.tar.gz。
$tar -xvzf /data01/cdrom.tar.gz : 将/data01/cdrom.tar.gz文件解压到当前目录下。
(如果当前目录为/kxsh,则解压后的文件存放在了/kxsh下)
2、zip
压缩:zip -r destFilename.zip sourseFilename
解压:unzip sourceFilename.zip
解压:unzip -od ./cdrom/ cdrom.zip (将cdrom.zip 解压到当前目录下的cdrom子目录中,又重复的直接覆盖。)
注意事项:
zip -r :必选参数,表示递归压缩子目录下所有文件。
unzip -o :不提示的情况下覆盖文件
unzip -d :指明文件解压的目录位置。后面直接跟目录
3、各种压缩格式及解压方法
*.tar 用 tar –xvf 解压
*.gz 用 gzip -d或者gunzip 解压
*.tar.gz 用 tar –xzf 解压
*.tgz 用 tar –xzf 解压
*.bz2 用 bzip2 -d或者用bunzip2 解压
*.tar.bz2 用tar –xjf 解压
*.Z 用 uncompress 解压
*.tar.Z 用tar –xZf 解压
*.rar 用 unrar e解压
*.zip 用 unzip 解压
转换文本编码,试试 iconv 吧,或者对于更高级的用途使用 uconv;它支持一些高级的 Unicode 的东西。
# 转换gbk编码文件为utf-8编码文件
iconv -f gbk -t utf-8 index.html > aautf8.html
# 转换为小写并移除所有重音符号(通过扩展和丢弃)
uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt