1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
查看列表ls
選項:
-a, --all do not ignore entries starting with . 顯示所有文件并包括隱藏文件 -l use a long listing format 顯示文件詳細信息 -d, --directory list directory entries instead of contents, and do not dereference symbolic links 顯示指定目錄的信息,而不是顯示其目錄下的文件,與-l一起使用才有意義 -r, --reverse reverse order while sorting 反向排序 -n, --numeric-uid-gid like -l, but list numeric user and group IDs 不顯示用戶和組名,顯示UID和GID -R, --recursive list subdirectories recursively 遞歸顯示目錄以及子目錄下的文件 -h, --human-readable with -l, print sizes in human readable format (e.g., 1K 234M 2G) 根據文件大小顯示容易查看的size大小,與-l結合使用 -S sort by file size 按文件大小排序 --sort=WORD 選擇文件的某個屬性排序 sort by WORD instead of name: none -U, extension -X, size -S, time -t, version -v --time=WORD 選擇文件的某個時間屬性排序 with -l, show time as WORD instead of modification time: atime -u, access -u, use -u, ctime -c, or status -c; use specified time as sort key if --sort=time
實例:
$ ls -lah drwxr-xr-x 2 scm scm 4.0K May 21 11:13 .vnc drwxrwxr-x 3 scm scm 4.0K May 12 14:02 workspace -rw------- 1 scm scm 202 May 21 11:13 .Xauthority 詳解:drwxrwxrwx,d位置是文件類型,除了d目錄文件,常見的還有中杠表示普通文件,l表示鏈接文件,b表示塊文件,c表示字符設備文件,p表示管道文件,s表示套接字文件;rwxrwxrwx是文件的權限位,前三位是屬主權限,中間三位是屬組權限,最后是其他用戶權限,rwx表示可讀可寫可執行,權限位中杠表示無相應權限 下來的字段為被硬鏈接的次數,例如.cache表示被硬鏈接3次 然后的兩個字段分別表示屬組和屬主,都是scm 4.0K和202表示文件大小,加了選項-h可顯示合適的文件大小單位 May 21 11:13是文件修改時間戳 最后顯示文件名
復制:cp
選項
-a, --archive 歸檔,保留文件原來的樣子,可恢復原來的現場 same as -dR --preserve=all 相當于-dR --preserve=all -i, --interactive prompt before overwrite (overrides a previous -n option) 交互式提示是否覆蓋 -s, --symbolic-link make symbolic links instead of copying 創建符號連接 -R, -r, --recursive copy directories recursively 逐級復制目錄以及目錄下所有文件 --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all 復制時保留文件屬性 -d same as --no-dereference --preserve=links 不追蹤符號鏈接, -p same as --preserve=mode,ownership,timestamps 復制時保留文件的權限,屬組屬組和時間戳 -v, --verbose explain what is being done 顯示詳細過程
實例:
root用戶操作 $ cp -a /home/scm /home/back/scm.bak 將/home/scm備份至/home/back目錄下,查看備份 -p也是常用的選項,一般情況下cp文件夾不帶-p會報錯“cp: omitting directory `testcpdir2/'” $ cp -p /home/scm /home/back/scm.bak
移動:mv
選項
-f, --force do not prompt before overwriting 強制移動,覆蓋同名文件不提示 -i, --interactive prompt before overwrite 交互式提示是否覆蓋
刪除:rm
選項
-f, --force do not prompt before overwriting 強制刪除 -i, --interactive prompt before overwrite 交互式提示是否刪除 -r, -R, --recursive remove directories and their contents recursively 遞歸刪除
實例:
-f常與-r一起使用,可直接刪除目錄文件 $ rm -rf test/
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
答:
命令的執行狀態返回值:
命令執行的狀態 一般分為兩種,成功或者失敗 返回值為0表示執行成功;為1~255表示失敗 $?可以查看命令執行的返回值
命令行展開特性:
~:展開用戶的主目錄 $cd ~表示切換目錄至家目錄 $cd ~/.ssh表示切換只家目錄下的.ssh目錄 {}:可承載以逗號分隔的列表,并將其展開圍多個路徑 $mkdir project/{branches,tags,trunk/{product1,product2}}
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
$mkdir {a_{c,d},b_{c,d}}
(2)、創建/tmp/mylinux目錄下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
$mkdir -p mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,user/local/{bin,sbin},var/{lock,log,run}}
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
答:
文件的元數據信息:
stat命令可查看文件的元數據信息
$stat /etc/passwd File: `/etc/passwd' Size: 1750 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 393910 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-06-19 18:58:25.910331000 -0700 Modify: 2016-06-11 19:39:22.305024069 -0700 Change: 2016-06-11 19:39:22.305024069 -0700
詳解:
Size: 1750 文件大小1750 byte Blocks: 8 占用8個block IO Block: 4096 每次讀寫的數據單元大小 regular file 此文件為常規文件 Device: 802h/2050d ??? Inode: 393910 索引節點號 Links:硬連接數 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) 權限,屬主,屬組 Access:訪問時間 Modify:修改時間 Change:改變時間,一般值元數據最后一次修改的時間
修改文件的時間戳:
touch
選項:
-a change only the access time 修改訪問時間 -c, --no-create do not create any files touch的文件不存在時不創建 -m change only the modification time 改變文件修改時間 -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time 指定時間的時間格式 [[CC]YY]MMDDhhmm[.ss] 年 月日時分 秒
實例:
$ touch -at 201606061423.22 xiaoyue.sh $ touch -mt 201606051423.22 xiaoyue.sh 注意,文件的任何一個元數據的改變都會引起ctime的改變
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
答:
命令alias $alias 不加任何參數表示查看當前shell下的命令別名 添加命令別名: $alias ls='ls -la' vi ~/.bashrc或者/etc/bashrc可添加命令別名
命令中引用另一個命令的執行結果可以使用管道
$ls -l |grep "rwx"
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
$ls /var |egrep --colour '^l.*[[:digit:]].*[[:lower:]]$'
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
$ls /etc |egrep --colour '^[[:digit:]].*[^[:digit:]]$'
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
$ls /etc |egrep --colour '^[^[:alpha:]][[:alpha:]].*'
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
$touch tfile-$(date +%Y-%m-%d-%H-%M-%S)
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
#cp -r /etc/p*[^1-9] /tmp/mytest1
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
#cp -r /etc/*.d /tmp/mytest2
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
#cp /etc/[lmn]*.conf /tmp/mytest3
原創文章,作者:Net20_天意,如若轉載,請注明出處:http://www.www58058.com/18282
寫的很好,排版也很好,10 12 可能有點小瑕疵,在仔細看看題目的要求
@馬哥教育:我粗心了:
10:#cp -r /etc/p*[^0-9] /tmp/mytest1
12: #cp -r /etc/[lmn]*.conf /tmp/mytest3