Linux基础命令

Linux基础命令

该文章主要介绍Linux基础命令的常用参数以及相应的命令说明

目录相关操作

目录的切换、创建、删除操作
包含特殊符号的使用,比如:{}

#目录相关操作
cd ./ #表示切换到当前目录下
cd ../ #表示切换到上一层目录下
cd -P /bin #切换到真实路径的/bin目录下,即/usr/bin(centos)
cd ~ #切换到当前用户的家目录下
cd ~cdb #切换到cdb的家目录下
cd - #切换到刚才离开的目录

pwd #显示当前目录
pwd -L #显示当前目录的链接路径,默认
pwd -P #显示当前目录的真实路径

mkdir dir #创建目录
mkdir -pv d1/d2/d3 #p递归创建目录并查看创建过程v
mkdir -m 444 datest #创建目录时直接指定权限
mkdir -p ./testdir/dir1/{x,y}/{a,b}} 
mkdir -p ./testdir/dir2/{x/{a,b},y} 
mkdir -p ./testdir/dir{3,4,5/dir{6,7}} 

rmdir dirname/ #删除目录
rmdir -p d1/d2/d3 #递归删除目录
rmdir -pv dir1/dir2/dir3/ #查看递归删除目录过程

dirname /etc/centos-release #获取目录名

basename /etc/centos-release #获取文件名

tree #显示目录树
tree -d #只显示目录
tree -L number #只显示几层目录
tree -P /etc/rc* #显示特定模式/etc/rc*的目录树

文件属性查看

查看文件属性以及通配符的应用

##文件相关操作
#查看文件属性信息ls
ls -lrt #查看文件信息,最新修改的文件在最后一行
ls -la #查看所有文件属性信息,包含隐藏文件.
ls -li #查看文件属性信息,包含inode编号
ls -d #仅查看目录的属性信息
ls -lRt #查看目录内的各文件信息,进入子目录显示文件信息
ls -Sh #以文件容量大小排序,h表示文件容量的表示形式更加直观
ls -l file[0-9] file10 #查看文件file0-file10的属性信息
ls -l file{0-100} #查看文件file0-100的属性信息
ls {a..c} #列出文件a,b,c的属性信息
ls -d .* #显示隐藏文件,不进入子目录
ls .[^.]* -d #显示隐藏文件,不进入子目录
ls -aI "[^.]*" #忽略不是点开头的文件
ls /var/l*[0-9][[:lower:]] -d #显示以l开头以小写字母结尾,且中间至少有一个数字的文件或目录
ls /etc/[0-9]*[^0-9] -d #显示以任意数字开头且以非数字结尾的文件或目录
ls /etc/[^[:alpha:]][[:alpha:]]* -d #显示以非字母开头后面跟了一个字母的任意长度字符的文件或目录
ls /etc/rc[0-6]* -d #显示以rc开头,后面接0-6的数字,其他为任意字符的文件或目录
ls /etc/*.d -d #显示以.d结尾的任意文件或数字 .....*/
ls /etc/[mnrp]*.conf -d #显示以mnrp四个任意字母开头以.conf结尾的文件或目录
ls /root/.* -d #显示/root/目录下的隐藏文件
ls -aI "[^.]*" #进入/root/目录,忽略不是点开头的文件
ls /etc/[^.]* -d  #显示/etc下的非隐藏文件
ls -d /etc/*/ #显示/etc下的非隐藏文件 ...*/

file filename #确定文件内容、类型

stat filename #查看文件的时间属性

#创建空文件touch或特殊文件名的文件
touch filename #创建空文件
touch "a b" #新建文件,不推荐
touch '$abc'
touch -- -a #新建文件-a
touch ./-a #新建文件-a
touch '~abc' 
touch /home/-a #新建文件-a
touch {a..z} #创建文件a到z
touch a #刷新文件时间
touch -a filename #修改access时间
touch -m filename #修改文件的修改时间
touch `date +%F`.log #创建每天的以日期命名的log文件

移动、删除文件/目录

对文件/目录的操作动作,包括:对文件名/目录的移动、删除、重命名

#移动文件或目录mv
mv filename # 移动和重命名文件
mv -f filename #强制移动文件或目录
mv -b file1 /data/file1 #目标file1存在,覆盖前先备份file1

#复制文件或目录cp
cp source distination #复制文件,源写在前面
cp -t distination source #复制文件,源写在后面
cp -rv source distination #递归复制目录,并显示复制过程
cp -av source distination #保留原属性复制文件,并显示复制过程v
cp -f source distination #强制复制文件
cp -b source distiontion #若目标目录中包含与源文件同名的文件,则先备份目标目录中的文件后再复制
cp source1 source2 dirname #复制多份文件到目录中
cp file1{,.bak} #复制文件的简短命令
cp file1 file2 & #将文件复制任务放置于后台执行
cp -r source-dirname distination-dirname #在目标目录中新建一个同源目录同名的目录进行复制
cp -r source-dirname distination-dirname/dirname1 #将source目录中的内容复制到dirname1中
cp file1 /data/ #将file1内容直接复制到/data下
cp file1 /data/file1 #将file1的内容覆盖到/data/file1
cp file1 /data/data1/ #将file1的内容复制到/data/data1/下
cp file1 file2 /data/ #在/data/中生成新的file1、file2文件
cp -r dir1 /data/ #复制dir1整个目录到/data/下

#删除文件或目录rm 
rm -rf filename #强制删除文件或目录
rm -rf / #删除/目录,系统不允许该命令
rm -rf /* #系统允许该命令,删根操作1
rm -rf / --no-preserve-root #删根操作2
rm -- -a #删除特殊文件-a
rm -rf ./-a #相对路径或绝对路径删除特殊文件
rm -rf ./~a

文件内容的查看

文件内容的查看以及相应命令的其他用途
比如:cat命令既能从文件中读取内容,也能将数据写入文件

#文件内容的查看
cat #读取键盘输入,并将输入内容直接输出,ctrl+c退出该模式
cat filename #查看文件内容
cat -n filename #显示行号
cat -A filename #文件内容中tab或行结尾符$
cat -e filename #行结尾符显示
cat -v filename  #tab键以^I显示
cat < f1 > f1 #清空文件
cat < f1 >> f1 #循环记录文件内容
cat < f1 > f2 #相当于复制
cat > f1 << EOF #将键盘输入的内容

more filename #分页查看文件
less filename #翻页查看文件,可搜索翻看

#查看文件前n行
head -n number filename #查看文件的前n行
head -number filename 
head -n -10 filename #表示列出前10行,不列出后10行,如果文件有12行,则表示只列出前2行,后10行不列出

#查看文件的末n行
tail filename #默认显示后10条数据
tail -n number filename #显示后number行
tail -number filename #显示后number行
tail -n +100 filename #表示从100行后的数据都会被列出来
tail -f -n number filename #跟踪文件的后number行,查看文件是否变化,若文件被删除,则不会有任何变化
tailf filename #跟踪文件,同tail -f 当文件不增长时并不访问文件

cat -n filename | head -20 | tail -10 #表示列出正确的行号显示第11行到第20行的数据
cat ~/.bash_history 命令历史文件
cat /etc/locale.conf  关于语系的文件
cat /proc/meminfo 查看内存信息
cat /proc/meminfo | less 内存信息翻页显示
cat /dev/urandom | tr -dc 'a-zA-Z0-9_' | head -c 12 显示数字、字母、下划线的随机12字节的字符串
cat f1 f2 | sort | uniq -d 文件的交集 f1:aaa bbb ccc f2:aaa ddd cc ccc eee
cat f1 f2 | sort | uniq -u 取出每个文件独有的
cat f1 f2 | sort | uniq  取出文件的并集
cat f1 f2 | sort -u 取出文件的并集 

ls /etc/profile.d/ 环境配置相关文件夹内容
ls /boot/ 启动文件相关

nl filename 显示文件的行号
nl -b a filename 连同列出空行行号
nl -b t filename 忽略空行,列出其他行号
nl -n ln filename 行号在最左端显示
nl -n rn filename 行号在最右端显示,不加0
nl -n rz filename 行号在最右端显示,加0
nl -w number filename 行号的字符数number
od filename 查看可执行文件
od -t a filename 使用默认字符来输出文件内容
od -t c filename 使用ASCII字符来输出文件内容
od -t d filename 十进制输出数据
od -t f filename 浮点数输出数据
od -t o filename 八进制输出数据
od -t x filename 十六进制输出数据
echo passwd | od -t oCc #查看passwd对应的的ASCII对照表信息
rename conf conf.bak *.conf 批量重命名 rename 要被替换的表达式 替换内容 文件名
rev 键盘输入内容,将其反向显示

tac filename 反向输出文件内容

whatis 查看指令的功能,相当于man -f 

文件的搜索

常用的搜索命令为:find
常用的命令搜索的命令为:which 、 whereis

#文件的搜索
find / -mtime 0 #查看24小时内修改的文件
find / -mtime 3 #查看3天前那一天的24小时内修改的文件,3-4天内的文件
find / -mtime +1 #查看1天前被修改的文件,大于等于1
find / -mtime -2 #查看2天内被修改的文件,小于等于2

find /data #搜索该目录下的所有文件
find /data -maxdepth 1 #定义最大深度搜索文件,1表示不进入子目录搜索
find /home/ -maxdepth 2 #定义最大深度搜索文件,2表示现实子目录内的文件信息,包含主目录
find /home/ -maxdepth 2 -mindepth 2 #定义最大深度和最小深度搜索文件,两个参数都是2表示只显示二级目录内的文件
find /home/ -depth #先处理目录内的文件,在处理目录

find /home/ -name test #搜索特定文件名的文件
find /home/ -name "*test*" #搜索包含test的文件
find /home/ -iname "TEST" #搜索忽略大小写的特地文件
find /home/ -inum 527118 #指定inode搜索文件
find /home/ -samefile /data/aaa #指定相同文件的搜索
find /data/ -links 2 #指定链接数的搜索
find /data/ -regex '.*\.sh$' #指定正则表达式的搜索,匹配整个文件路径的搜索

find /home/ -user cdb -ls #指定用户名的搜索,并显示相应属性信息
find /home/ -group cdb #指定组名的搜索
find /home/ -nouser #搜索没有属主的文件
find /home/ -nogroup #搜索没有属组的文件
find /home/ -uid 1000 #指定UID的搜索
find /home/ -gid 1000 #指定GID的搜索

find /home/ -type f|d|l|s|b|c|p #指定文件类型的搜索
find -empty  #搜索空文件
find / -type d -empty  #搜索空目录

find / -perm 6755 #查找权限刚好为6755的文件
find / -perm -6000 #查找权限中必须含有SUID和SGID的文件
find / -perm /6000 #查询整个系统的SUID/SGID的文件,/6000表示包含SUID权限或SGID权限
find /usr/bin /usr/sbin -perm /6000 #多个目录中查找包含SUID或SGID权限的文件

find / -user username -exec ls -l {} \; #{}表示find查找到的内容;\;表示额外命令的操作到此结束
find / -user linuxprobe -exec cp -a {} /root/findresults/ \; #将找到的内容执行cp操作

find / -name "*.sh" -a  -user root -ls #同时满足两个条件的搜索 -a可省略
find / -name "*.sh" -o  -user root #满足两个条件的其中一个的搜索;注意-a的优先级比-o的优先级高
find / \(-name "*.sh" -a  -user root \) -ls #先执行满足条件的搜索,然后-ls显示相关属性信息;注意括号要反斜杠
find / ! -name "*.sh" #取反搜索
find / -not -name "*.sh" #取反搜索
find / !  \( -user cdb -name "*.txt" \) #满足条件的都不显示
find / ! -user cdb -o ! -name "*.txt" #同上一条

whereis -l #查看whereis查询的主要目录
whereis filename #查找文件
whereis -m filename #只找在说明文件manual路径下的文件

locate keyword #从/var/lib/mlocate根据关键字查找
locate -S #查看locate数据库文件的相关信息,包括该数据库记录的文件/目录的数量
locate -l 5 passwd #查看关于passwd相关的文件名,只列出5个
locate -i keyword #忽略大小写
locate -r keyword #根据整个表达式搜索文件
locate "*.keyword" #全局查找包含keyword文件,可用通配符
locate -r "\.sh$" #正则表达式搜索

updatedb #根据/etc/updatedb.conf查找硬盘内的文件更新/var/lib/mlocate数据库,以便于搜索新建的文件

#命令的查找which
which -a command #将所有由PATH环境变量中找到的命令列出
which history #该命令报错,原因是history是内置命令,无需通过PATH查找

文件与目录的权限

文件与目录的权限设置,需要对文件权限rwx有一定的了解

##文件与目录的权限相关
chmod who opt permission file #注:who为u,g,o,a opt为+-=,permission为rwx ---模式法设置权限
chmod u+-=rwx,g+-=rwx,o+-=rwx,a+-=rwx file_name
chmod +-rwx file_name #修改文件ugo权限,默认不写表示a 
chmod -R u+-=rwx,g+-=rwx,o+-=rwx,a+-=rwx dir_name #递归更改权限
chmod -R a+rX dir_name # 其中X表示只给目录x权限,不给文件x权限 
chmod --reference dir/f1 dir/dir1/f1 # 参考dir/f1的文件权限设定dir/dir1/f1的文件权限 
chmod 655 file_name #以数字修改文件权限,r4 w2 x1 ---数字法设置权限
chmod u+s file #设定SUID权限,+表示设定
chmod u-s file #移除SUID权限,但是文件的权限位表示为S,说明普通用户仍被认为是root用户,移除权限应为 
chmod 755 file 
chmod 4755 file #设定SUID权限 
chmod g+s file #设定SGID权限
chmod o+t file #设定Sticky权限
chmod g=rw file #可表示设定文件的mask权限

chown user_name file_name #修改文件所属主
chown own_name:group_name filename/dirname #修改文件所属主和所属组
chown -R user_name dir_name #修改目录内的所有文件的所属主
chown .groupname filename #单纯的修改所属用户组(注意:.groupname)

chgrp group_name file_name #修改文件所属组

lsattr #查看文件的特殊属性
lsattr -a #查看隐藏文件的特殊属性
lsattr -d #仅列出目录本身的特殊属性
lsattr -R #递归列出子目录的特殊属性

chattr [+-=][ASaid] filename/dirname #设定文件或目录的特殊属性;+增加 -移除 =设定
chattr +i filename #root用户不可修改文件
chattr +a filename #root用户只能追加数据,不能修改和删除数据

umask #查看默认权限
umask -S #输出模式权限 u=rwx,g=rwx,o=rx
umask 0022 #临时设置默认权限
umask u=w g=rx o=rw #设置默认权限

文件的压缩与编辑

常用的压缩工具为:tar、unzip

###文件或目录的压缩与打包
bzip2 #压缩文件 
gzip #压缩文件
xz #压缩文件 

tar -jcv -f filename.tar.bz2 filename #c压缩文件
tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* #压缩除/root/etc*的其他文件
tar -jtv -f /root/etc.tar.bz2 | grep 'shadow' #查看压缩文件中的单一文件
tar -jtv -f filename.tar.bz2 #查询文件t
tar -jxv -f filename.tar.bz2 #本目录下解压缩
tar -jxv -f filename.tar.bz2 -C filename/dirname #在filename/dirname中解压缩文件,-C表示指定解压的目录
tar -jxv -f /root/etc.tar.bz2 etc/shadow #解压缩单一文件
tar -cvf - /etc/ | tar -xvf -  #压缩/etc目录到-,再将-解压缩,相当于cp -r /etc /tmp 
tar -zpcf /tmp/etc.tar.gz /etc/ & #将tar工作放置到背景中执行;p表示保留原本的属性
tar -zpcvf /tmp/etc.tar.gz /etc & #屏幕仍然会有数据输出
tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 & #将背景任务的屏幕输出重定向

##文件编辑命令
ex filename #相当于 vim -e 进入扩展命令模式
nano filename #文本编辑器
nano ~/.bashrc  #修改别名alias定义文件
nano /etc/bashrc  #对全体用户有效
nano /etc/DIR_COLORS #定义字体颜色的文件

vi #文本编辑器
vim #文本编辑器
vim /etc/fstab #编辑开机挂载文件
vim /etc/selinux/config #编辑SELinux的配置文件
vim /etc/hostname #修改主机名称
vim /etc/sysconfig/network-scripts/ifcfg-eth0  #配置网卡信息
vim /etc/yum.repos.d/CentOS-test.repo #配置yum软件仓库

ACL访问控制列表

访问控制列表,可以针对单一使用者、单一文件或目录进行rwx的权限控制

# ACL生效顺序
# 所有者--自定义用户--自定义组--其他人

# 查看文件系统是否支持ACL
dmesg | grep -i "acl" #所输出内容有ACL关键字,则表示该文件系统支持ACL

# centos7之前的版本,若手工创建ext4文件系统,则无ACL功能,需要手动添加
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test 

# ACL设定getfacl/setfacl 
setfacl -m u:user:rwx filename #-m表示设定文件的用户ACL
setfacl -m g:group:rwx filename #针对群组的ACL
setfacl -m m:rwx filename #针对有效权限的ACL
setfacl -m d:u:user:rwx dir/filename #使用预设权限d设定文件/目录的ACL权限
getfacl filename1 | setfacl --set-file=- filename2 #通过filename1设定filename2的ACL

# ACL的删除
setfacl -k dir #删除默认acl权限
setfacl -b filename #清除所有ACL权限

# 应用1:若命令chmod缺少x权限的恢复方式
chmod -x /usr/bin/chmod 
chmod 600 /data #报错;拒绝访问

setfacl -m u:root:rwx /usr/bin/chmod #设置ACL
getfacl /usr/bin/chmod  #可看到root用户对chmod命令具有x权限

chmod +x /usr/bin/chmod #可执行该命令,权限恢复

# 应用2:备份与恢复ACL(tar等备份工具不会保留ACL)
getfacl -R /data > acl.txt 
setfacl -R -b /data 
setfacl -R --set-file=acl.txt /data 
setfacl --restore acl.txt 
getfacl -R /data 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值