Lỗi “No such file or directory” là một thông báo phổ biến mà bạn có thể gặp phải khi làm việc với hệ thống Linux hoặc macOS. Trong bài viết này, chúng ta sẽ tìm hiểu nguyên nhân và cách khắc phục hiệu quả để bạn có thể nhanh chóng giải quyết vấn đề và tiếp tục làm việc trên Linux.
Những điểm chính
- Nắm rõ nguyên nhân xuất hiện lỗi No such file or directory trong Bash: Giải thích các lý do phổ biến khiến lỗi “No such file or directory” xuất hiện khi làm việc với Bash.
- Hiểu được 4 cách khắc phục lỗi No such file or directory trong Bash: Cung cấp 4 phương pháp khắc phục lỗi này trong Bash, giúp người dùng dễ dàng áp dụng và sửa lỗi khi gặp phải.
- Vietnix – Giải pháp công nghệ tiên tiến cho doanh nghiệp Việt.
Nguyên nhân xuất hiện lỗi No such file or directory trong Bash
Lỗi No such file or directory hay dễ hiểu hơn là No such file or directory thường xảy ra khi một lệnh hoặc tập lệnh cố gắng truy cập vào một file hoặc thư mục không tồn tại ở vị trí đã chỉ định.
6 nguyên nhân gây ra lỗi No such file or directory trong bash:
- Đường dẫn file hoặc tên thư mục không chính xác: Lỗi này xảy ra khi lệnh hoặc tập lệnh tham chiếu đến một file hoặc thư mục với đường dẫn không đúng. Có thể là do bạn gõ sai đường dẫn hoặc chỉ định sai vị trí hoàn toàn.
- Lỗi chính tả trong tên file hoặc thư mục: Lỗi chính tả trong tên file hoặc thư mục có thể dẫn đến hệ thống không tìm thấy file hoặc thư mục đã chỉ định. Ngay cả một lỗi nhỏ, chẳng hạn như một ký tự sai chính tả, cũng có thể dẫn đến lỗi No such file or directory.
- Sử dụng sai đường dẫn tuyệt đối và đường dẫn tương đối: Việc sử dụng không đúng cách đường dẫn tuyệt đối và đường dẫn tương đối cũng có thể gây ra lỗi này. Đường dẫn tương đối được hiểu là tương đối so với thư mục làm việc hiện tại, vì vậy nếu tập lệnh hoặc lệnh không được thực thi đúng vị trí đường dẫn thì lệnh có thể không tìm thấy file hoặc thư mục.
- File hoặc thư mục không tồn tại: Lỗi này xảy ra khi bạn cố gắng truy cập một file hoặc thư mục không tồn tại ở vị trí đã chỉ định. Trong trường hợp này, có thể file hoặc thư mục đó đã bị xóa, di chuyển đi nơi khác, hoặc chưa bao giờ được tạo ra.
- File hoặc thư mục đã bị xóa hoặc di chuyển: Nếu file hoặc thư mục đã có trước tại thời điểm lệnh hoặc tập lệnh được viết nhưng sau đó đã bị xóa hoặc di chuyển, việc cố gắng truy cập sẽ khiến bạn gặp lỗi. Bạn cần phải chắc chắn rằng các file và thư mục đã được chọn vẫn tồn tại ở các vị trí đã chỉ định.
- Phần mở rộng file không chính xác: Lỗi này thường xảy ra khi bạn cố gắng chạy một lệnh hoặc tập lệnh tại một file có đuôi của file không chính xác hoặc không tồn tại trên hệ thống.
4 cách khắc phục lỗi No such file or directory trong bash
Lỗi “No such file or directory” trong Bash có thể được xử lý bằng nhiều cách khác nhau. Dưới đây là 4 phương pháp phổ biến giúp bạn giải quyết vấn đề này:
1. Kiểm tra tên file hoặc đường dẫn
Lỗi thường gặp nhất là do bạn gõ sai tên file hoặc đường dẫn. Trong trường hợp này, Có thể bạn đã thiếu hoặc thừa một chữ cái, viết hoa sai, dùng dấu gạch chéo ngược thay vì gạch chéo xuôi, hoặc nhầm lẫn giữa đường dẫn tuyệt đối và tương đối. Tóm lại, bất kỳ lỗi nào khiến tên không khớp với file hoặc thư mục thật đều có thể gây ra lỗi “No such file or directory” trong bash.
Bạn có thể xem hình ảnh bên dưới để hiểu rõ hơn:
Giả sử bạn có file Script.sh nhưng lại gõ lệnh ./script.sh. Lúc này, bash sẽ báo lỗi No such file or directory. Để hiểu rõ nguyên nhân, hãy dùng lệnh ls
để xem danh sách file và thư mục trong thư mục hiện tại.
Theo như ví dụ phía trên, lỗi đã xảy ra khi tên file Script.sh đã bị nhập sai thành script.sh khi chạy. Chính vì vậy, để tránh lỗi “No such file or directory”, bạn luôn kiểm tra kỹ xem tên file đã đúng chưa:
Bây giờ, script (tập lệnh) Script.sh đã chạy thành công và trả về kết quả trên terminal.
Hãy xem một ví dụ khác, khi lệnh cd cố gắng chuyển thư mục hiện tại sang thư mục Downloads:
Nhưng dòng lệnh lại trả về thông báo lỗi “Download: No such file or directory”. Lúc này bạn chạy lại lệnh ls để xem tại sao lỗi này xảy ra.
Như bạn thấy trong hình, tên chính xác của thư mục là “Desktop/folder1/” và phải được viết đầy đủ sau lệnh cd
.
Nói một cách dễ hiểu là khi bạn sử dụng lệnh cd
để di chuyển đến một thư mục, lệnh sẽ hoạt động bình thường nếu bạn nhập đúng tên của thư mục đó. Lúc này trên màn hình máy tính sẽ thông báo thư mục hiện tại đã được thay đổi
Lưu ý
Khi sử dụng đường dẫn trong máy tính, hãy kiểm tra xem đường dẫn đó có đúng hay không so với vị trí hiện tại của bạn. Nếu bạn muốn chỉ vào thư mục đang mở, hãy dùng dấu “./”. Nếu muốn chỉ vào thư mục phía trên, hãy dùng dấu “../”.
2. Viết đúng dòng Shebang
Khi viết script Bash, hãy luôn đảm bảo dòng shebang nằm ở đầu tiên và không có lỗi chính tả. Dòng này sẽ cho hệ thống biết chương trình nào sẽ được sử dụng để chạy script của bạn. Trong script Bash, dòng shebang thường bắt đầu bằng #! theo sau là /bin/bash. Dòng này yêu cầu hệ thống sử dụng trình thông dịch Bash nằm ở /bin/bash để chạy tập lệnh (script).
Bạn có thể xem qua ví dụ dưới đây:
Vì dòng shebang #!/bin/bash bị viết sai thành #!/bin/bas, terminal sẽ báo lỗi “No such file or directory” trong Bash, và cho biết /bin/bas là một trình thông dịch không hợp lệ.
Để tránh lỗi này, bạn hãy luôn kiểm tra kỹ dòng shebang (#!/bin/bash) để đảm bảo dòng này được viết đúng các ký tự.
Sử dụng lệnh bash: Để tránh lỗi No such file or directory trong tập lệnh Bash
, bạn có thể dùng lệnh bash để chạy file Bash đó. Đây là một cách thay thế để xử lý lỗi liên quan đến dòng shebang (dòng bắt đầu bằng #!). Cách này sẽ chắc chắn rằng tập lệnh sẽ được chạy bằng trình thông dịch Bash không phụ thuộc vào vị trí của file trên máy tính.
Nói cách khác, bạn không cần phải lo lắng về việc dòng shebang có chính xác hay không nếu bạn thực thi file bằng lệnh bash
:
Như bạn thấy, thì dòng đầu tiên của file #!/bin/bas đã bị viết sai. Tuy nhiên, tập lệnh vẫn chạy được vì chúng ta đã sử dụng lệnh bash
để chạy file. Đây là cách bạn có thể tránh lỗi tương tự nếu xảy ra.
3. Đảm bảo phần mở rộng của file được viết đúng
Khi bạn gặp lỗi No such file or directory trong Bash, thường là do tên file trong lệnh không có phần mở rộng đúng. Bash dựa vào phần mở rộng để biết file đó thuộc loại gì và cách xử lý nó. Nếu không có phần mở rộng đúng, Bash không thể tìm thấy file dẫn đến thông báo lỗi. Để sửa lỗi này, hãy đảm bảo rằng tên file trong lệnh của bạn có phần mở rộng phù hợp với loại file:
Ở ví dụ trên vì lệnh không kèm theo phần mở rộng .sh của file local_file.sh, nên trên giao diện terminal trả về lỗi No such file or directory. Hình minh họa dưới đây chính là cách xử lý lỗi này một cách chính xác.
4. Kiểm tra định dạng file
Trong Bash, lỗi No such file or directory thường xảy ra khi bạn làm việc với các file được tạo trong hệ điều hành Windows. Nguyên nhân là do sự khác biệt về cách kết thúc dòng giữa hai hệ điều hành Unix và Windows. Unix sử dụng ký tự xuống dòng \n, trong khi Windows sử dụng cả ký tự xuống dòng \n và ký tự về đầu dòng \r\n.
Sự khác biệt này có thể khiến Bash gặp khó khăn trong việc đọc file và dẫn đến lỗi.
Để khắc phục, bạn cần loại bỏ ký tự về đầu dòng khỏi file để Bash bằng cách chuyển đổi file sang định dạng Unix sử dụng các công cụ như dos2unix và lệnh tr trong Bash. Bằng cách này, bạn đảm bảo rằng cách kết thúc dòng trong file tuân theo chuẩn Unix và sửa lỗi do định dạng DOS gây ra.
Để cài đặt lệnh dos2unix
, bạn sử dụng lệnh sau:
sudo apt-get install dos2unix
Sau đó, để chuyển đổi file từ định dạng DOS sang Unix và sửa lỗi, bạn sử dụng lệnh:
dos2unix COnvert_Button.bat
Kết quả sau khi thực hiện các thao tác trên sẽ đảm bảo cho file tương thích với Unix. Bây giờ, khi chạy tập lệnh, bạn sẽ không còn gặp phải lỗi như trước nữa.
Câu hỏi thường gặp
Cách xử lý lỗi No such file or directory như thế nào?
Trong Bash, để giải quyết lỗi No such file or directory, bạn có thể sử dụng câu lệnh điều kiện kết hợp với -e flag
để kiểm tra sự tồn tại của file hoặc thư mục trước khi cố gắng truy cập vào file. Ví dụ, bạn có thể dùng câu lệnh if để xác minh sự tồn tại của file hoặc thư mục, sau đó thực hiện hành động mong muốn nếu nó tồn tại, hoặc hiển thị thông báo lỗi nếu nó không tồn tại. Bên cạnh đó, bạn có thể dùng chuyển hướng lỗi (2> hoặc &>) để bắt và xử lý thông báo lỗi một cách hiệu quả hơn.
Cách kiểm tra thư mục có tồn tại trong Bash hay không?
Để xem một thư mục có tồn tại trong Bash hay không, bạn có thể sử dụng tùy chọn -d
cùng với lệnh test
hoặc ký hiệu tương đương ([ ]). Dưới đây là cú pháp:
#!/bin/bash
if [ -d “/path/to/directory” ]; then
echo “Directory exists.”
else
echo “Directory does not exist.”
fi
Hãy thay thế “/path/to/directory” bằng đường dẫn đến thư mục bạn muốn kiểm tra. Nếu thư mục tồn tại, đoạn mã sẽ in ra Directory exists. Ngược lại, lệnh sẽ in ra Directory does not exist.
Cách nhận biết đang ở thư mục nào trong bash?
Để biết bạn đang ở thư mục nào trong Bash, bạn có thể sử dụng lệnh pwd. Lệnh này là viết tắt của cụm từ print working directory (in đường dẫn thư mục làm việc hiện tại). Khi bạn gõ pwd
vào terminal và nhấn Enter, lệnh này sẽ hiển thị đường dẫn đầy đủ của thư mục mà bạn đang ở.
Làm thế nào để tìm một file hay thư mục trong terminal?
Bạn có thể dùng lệnh find để tìm kiếm một file trong một thư mục cụ thể và các thư mục con của thư mục cha.
Ví dụ, để tìm một file có tên là “example.txt” trong thư mục hiện tại và các thư mục con, bạn có thể dùng lệnh sau: find . -name "example.txt"
Hãy thay “example.txt” bằng tên file hay thư mục bạn muốn tìm. Dấu chấm (.) là thư mục hiện tại, nhưng bạn có thể chỉ định một thư mục khác nếu cần. Lệnh này sẽ hiển thị tất cả các đường dẫn đến file hoặc thư mục bạn tìm thấy. Nếu bạn không tìm thấy file hoặc thư mục nào, terminal sẽ hiển thị thông báo No such file or directory.
Cách kiểm tra xem một đường dẫn là file hay thư mục trong Bash?
Trong Bash, để kiểm tra xem một đường dẫn cụ thể là file hay thư mục, bạn có thể sử dụng các tùy chọn -f
(kiểm tra file thông thường) và -d
(kiểm tra thư mục).
#!/bin/bash
path=”/path/to/file_or_directory”
if [ -f “$path” ]; then
echo “$path is a regular file.”
elif [ -d “$path” ]; then
echo “$path is a directory.”
else
echo “$path does not exist or is not a regular file or directory.”
fi
Bạn hãy thay thế /path/to/file_or_directory bằng đường dẫn thực tế mà bạn muốn kiểm tra. Khi chạy script này sẽ giúp bạn xác định xem đường dẫn đã cho là một file thông thường, một thư mục hay không tồn tại, và in ra thông báo tương ứng.
Vietnix – Giải pháp công nghệ tiên tiến cho doanh nghiệp Việt
Vietnix tự hào là một trong những đơn vị uy tín trong ngành công nghệ, với giá trị cốt lõi lấy thành công của khách hàng làm mục tiêu phục vụ. Vietnix đã vinh dự nhận danh hiệu Top 10 Sản phẩm, Dịch vụ Xuất sắc 2022 – Giải thưởng Thương hiệu Việt Nam xuất sắc 2022, khẳng định vị thế tại thị trường Việt Nam.
Dịch vụ VPS AMD của Vietnix được thiết kế để đáp ứng nhu cầu vận hành ổn định và phát triển bền vững của doanh nghiệp. Với CPU AMD EPYC hiện đại và ổ cứng NVMe siêu tốc, dịch vụ VPS luôn mang đến hiệu suất vượt trội cho các ứng dụng đòi hỏi tài nguyên mạnh mẽ. Đặc biệt, Vietnix cam kết uptime cao 99.9%, đảm bảo hệ thống luôn hoạt động liên tục. Đội ngũ kỹ thuật viên của Vietnix luôn sẵn sàng hỗ trợ 24/7, đảm bảo cung cấp dịch vụ đáng tin cậy và hiệu quả cho khách hàng.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Chúng ta vừa tìm hiểu chi tiết về lỗi No such file or directory và cách khắc phục. Hy vọng những thông tin này sẽ giúp bạn giải quyết vấn đề một cách nhanh chóng và hiệu quả, đảm bảo hệ thống hoạt động trơn tru. Nếu bạn gặp bất kỳ khó khăn nào hãy để dưới phần comment để Vietnix phản hồi bạn sớm nhất.