-
ls 用于显示目录中的文件信息
用法:ls [选项]… [文件]…
ls
ls -l #显示当前目录内容的长列表
ls /bin #查看bin目录下的文件
ls -a #显示隐藏文件 -
cd 目录切换命令
cd /home/ #切换到home目录
cd - #返回切换到home前的目录
cd … #切换到上一级目录
cd ~(cd或cd $HOME) #切换当前用户的home目录 -
cp 用于复制文件或目录
用法:cp [选项]… 源文件… 目标文件
cp -p test.rb /home/test #将test.rb copy到test目录,并且保留原文件的属性
cp -r Dir/ /home/test #将Dir目录copy到test目录下(递归)
cp -f file1 file2 #将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制的模式 -
mv 剪切文件或将文件重命名
用法:mv [选项]… 源文件… [目标路径/文件名称]
mv abc abc.php #将abc移动成abc.php
mv test.php{,.sh} #将test.php增加后辍
mv aaa bbb #将目录或者文件重命名,如果存在bbb目录,则是将aaa移到bbb目录下 -
pwd 显示当前目录
pwd #显示当前目录
pwd -P #目录是软连接,显示实际物理地址
pwd -L #-L显示,逻辑地址 -
rm 用于删除文件或目录
用法: rm [选项]… 文件…
rm test.php #删除文件需要确认
rm -f test.php #强制删除文件不确认
rm -rf expect-5.43 #参数表示递归强制删除非空文件夹
rm -rfv ./test #强制删除当前的test目录,并显示删除的详细过程 -
rmdir 删除指定的空目录。
用法:rmdir [选项]… 目录…
rmdir test #删除test目录,注意必须是空目录
rmdir -p a/b/c #删除指定目录及其上级文件夹 -
chgrp 改变文件的组所有权
chgrp -R test100 myweb #改变myweb目录,以及目录下的所有文件所属组
chgrp test100 phpinfo.php #改变用户组 -
chmod 更改文件权限
chmod ugo+r nginx_bak.conf #所有人皆可读取
chmod a+r nginx_bak.conf #所有人皆可读取
chmod ug+w,o-w nginx_bak.conf #设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
chmod u+x nginx_bak.conf #创建者拥有执行权限
chmod -R a+r ./www/ #将www下的所有档案与子目录皆设为任何人可读取
chmod a-x nginx_bak.conf #收回所有用户的对nginx_bak.conf的执行权限
chmod 777 nginx_bak.conf #所有人可读,写,执行 -
chown 更改文件的所有者和/或所属组
用法:chown [选项] … 所有者:所属组…文件或目录名称
chown root:root nginx.conf #将nginx.conf所属用户和组改为root,root
chown -R root:root www #将www目录,所属用户和组改为root,root
chown root nginx.conf #将nginx.conf,所属用户改为root
chown .root 1.html #只改变组 -
find 查找目录和文件
用法:find 路径 -命令参数 [输出形式]
find ~ -name memcached.pid -print #查找home目录下文件名为memcache.pid的文件
find . -name “.pid" -print #.代表当前目录,查找所有以pid结尾的文件
find ~ -name "[0-9].pid” -print #查找以数字开头的所有pid文件,在这里要说[0-9]不能匹配23,它跟一般的语言类正则不太一样,shell里面的*可以代表一切字符(单个,多个都行),如果想匹配2345只能这样写[0-9][0-9][0-9][0-9]
find ~ -perm 755 -print |more #~代表的是$home目录,查找权限为755的文件
find . -perm 700 -name "u_" -print |more #查找所有以产u_开头的,并且权限为700的文件
find . -type d -print #查找当前目录下面的目录
find . ! -type d -print #找当前目录下面的非目录文件
find . -nouser -print #查找当前目录中,没有归属的文件
find /home/lie/download -size +1000000c -print #查找文件大小大于1000000字符的文件,注意+号表示大于
find /home/lie -mtime -5 -print #5天修改过的文件,- 表示以内
find . -type f -size +1000000c -exec ls -al {} ; #显示当前目录下面所有大于1000000的文件,exec后面执行了一个命令,{}这个代表文件名
find ./database/ -name ‘*.sql’ -print #查找以sql结尾的文件 -
ln 在文件之间建立连接
ln -s /home/lie/heartbeat ./ #在当前目录下,建立heartbeat的软连接
ln -s /home/lie/test ./ #建立目录的软件接
ln /home/lie/tee.txt ./ #建立硬连接 -
mkdir 创建目录
用法:mkdir [选项]… 目录…
mkdir aaa #创建目录
mkdir -m a=rw bbb #创建指定属性的目录
mkdir -p 111/abc #创建目录,父目录存在,建之
mkdir -v test1 #创建目录,并显示详细信息 -
whereis 用于搜索程序名,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx /usr/share/man/man3/nginx.3pm.gz -
which 是查找命令是否存在,以及命令的存放位置在哪儿
which ls -
file 确定文件类型
file * #查看当前目录下的所有文件类型
file abc.sh #查看单个文件的文件类型
file -z test.bz2 #查看压缩文件的内部信息 -
touch 将每个文件的访问时间和修改时间改为当前时间。不存在的文件将会被创建为空文件
用法:touch [选项]… 文件…
touch test.php #将test.php的档案时间改为当前时间,文件不存则创建
touch -c -t 05061803 test.php #将档案时间改为,5月6日18点3分
touch -r abc.php test.php #将test.php档案改成跟abc.php一样
touch -d “2 days ago” test.php #将test.php日期修改为2天以前 -
locate 在mlocate数据库中搜索条目(updatedb更新数据库)
用法: locate [OPTION]… [PATTERN]…
locate ~/install #查找当前目录下以install开头的文件
locate -i ~/install #查找当前目录下以install开头的文件,不区分大小写 -
updatedb
用来创建或更新slocate命令所必需的数据库文件。updatedb命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入slocate数据库文件中。
补充说明:slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。 -
dd 转换和拷贝文件
dd if=/dev/hdx of=/dev/hdy #将本地的/dev/hdx整盘备份到/dev/hdy
dd if=/dev/hdx of=/path/to/image #将/dev/hdx全盘数据备份到指定路径的image文件
dd if=/dev/hdx | gzip >/path/to/image.gz #备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径
gzip -dc /path/to/image.gz | dd of=/dev/hdx #将压缩的备份文件恢复到指定盘
dd if=/dev/hdx of=/path/to/image count=1 bs=512 #备份磁盘开始的512Byte大小的MBR信息到指定文件
dd if=/dev/cdrom of=/root/cd.iso #拷贝光盘数据到root文件夹下,并保存为cd.iso文件
dd if=/dev/urandom of=/dev/hda1 #利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据
dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda #修复硬盘 -
dirname 显示指定路径除了文件名之外的路径前缀
dirname /home/tank/test.bz2
/home/tank -
pathchk 用来检查文件中不可移植的部分。
用法:pathchk [选项]… 名称…
pathchk /home/tank/work/tempfiles #检查该路径名称的有效性和可移植性
pathchk -p /home/tank/temp #以POSIX 标准检查该路径名称的有效性和可移植性 -
unlink 调用 unlink 函数删除指定的文件
用法:unlink 文件或:unlink 选项
unlink test.php #删除 -
basename 去掉前导的目录部分后打印“名称”。如果指定的话,还会去掉尾随的“后缀”。
用法:basename 名称 [后缀]或:basename 选项
basename /etc/php.ini
php.inibasename /etc/nginx/
nginxbashname include/stdio.h .h
stdio -
rename 用于对文件进行命名管理,可进行批量命名并支持正则表达式(此次转义可能存在格式问题)
【常用通配符说明】
? 表示一个任意字符
. 表示一个或一串任意字符
【常用正则表达式符号说明】
^ 匹配输入的开始位置
$ 匹配输入的结尾
. 匹配除换行符外的任意字符
+ 匹配前一个字符一次或多次 例如,“zo+“可以匹配"zoo”,但不匹配"z”
[a-z] 表示某个范围内的字符,例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字 符。
[^m-z] 否定的字符区间。与不在指定区间内的字符匹配。rename ‘s/.sh/.php/’ * #将当前目录下.sh后缀的文件,变成.php
rename ‘s/$/.bak/’ /home/www/*.php #给www目录下的.php加上bak后缀
rename ‘s/^/bak_/’ *.bin #给当前目录下的.bin后缀文件加上bak_前缀。rename ‘s/.bin$//’ * #批量删除当前目录下所有文件的.bin 后缀
rename ‘s/A-Z/a-z/’ * #修改当前目录所有文件名为小写 -
vim 文本编辑器
/xxx(?xxx) #表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示
向上查找。查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找。
*(#) #当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的
下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找。 -
cat 将[文件]或标准输入组合输出到标准输出。
cat test #普通输出
cat -n test #开头显示行号
cat -s test #超过二个空行,合并成一个
cat -ns test #去空行,加行号 -
more 分页 显示 (一次一屏) 文本
more test.php #查看文件
netstat -tpnl |more #常用方式,分页显示 -
less 与more命令类似,但可以通过翻页键查看上下页的内容
命令内部操作
按键功能如下:
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
- 向前搜索
/ : 使用一个模式进行搜索,并定位到下一个匹配的文本
n : 向前查找下一个匹配的文本
N : 向后查找前一个匹配的文本 - 向后搜索
? : 使用模式进行搜索,并定位到前一个匹配的文本
n : 向后查找下一个匹配的文本
N : 向前查找前一个匹配的文本
2 全屏导航
ctrl + F :向前移动一屏
ctrl + B :向后移动一屏
ctrl + D :向前移动半屏
ctrl + U :向后移动半屏
3 单行导航
j : 向前移动一行
k : 向后移动一行
4 其它导航
G : 移动到最后一行
g : 移动到第一行
q / ZZ : 退出 less 命令
5 编辑文件
v : 进入编辑模式,使用配置的编辑器编辑当前文件
6 标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置。
ma : 使用 a 标记文本的当前位置
'a : 导航到标记 a 处
7 浏览多个文件
方式一,传递多个参数给 less,就能浏览多个文件。
less file1 file2
方式二,正在浏览一个文件时,使用 :e 打开另一个文件。
less file1
:e file2
当打开多个文件时,使用如下命令在多个文件之间切换
:n - 浏览下一个文件
:p - 浏览前一个文件
less test.php #查看文件
netstat -tpnl |less #常用方式,分页显示
- grep 行搜索
grep root test #匹配含有root的行
cat test |grep ‘^\ (root\ |zhang\ )’ #匹配以root开头或者以zhang开头的行,注意反斜杠
cat test |grep -e ‘^\ (root\ |zhang\ )’ #根上面一个例子一样,-e默认是省去的
echo ‘zhangyi’ |grep ‘^zhang[a-z]*$’ #匹配以zhang开头,只含有字母
cat test |grep -E ‘^bin’ #匹配以bin开头的行,用的egrep,在这里可以换成-F,-G
cat test|grep -n zhangyi #在匹配的行前面加上该行在文件中,或者输出中所在的行号 - head 将每个指定文件的头10 行显示到标准输出。
head /etc/passwd #默认,显示开头前10行
head -k /etc/passwd #显示开头前k行
head -q -n k file1 file2 file3 #显示多文件开头前k行,并且不显示文件名的文件头
head -n -k /etc/passwd #除最后k行外,显示剩余全部内容。 - tail 输出文件的末尾部分
tail /etc/passwd #默认,显示最后10 行。
tail -n 2 /etc/passwd #显示最后2行
tail -q -n k file1 file2 file3 #显示多文件最后k行,并且不显示文件名的文件头
tail -n +k /etc/passwd #从开头第k行处开始输出。
tail -f /var/log/messages #参数-f使tail不停地去读最新的内容,因此有实时监视的效果,用Ctrl+c来终止
为完待续。。。。